summaryrefslogtreecommitdiff
path: root/lib/net/session.rb
diff options
context:
space:
mode:
authoraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-01-21 12:52:24 +0000
committeraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-01-21 12:52:24 +0000
commit005f12582975d8382851b740690f97dba35aaa2a (patch)
tree02f9fffe3b8d7b4c24fdcf28755c49f03db97220 /lib/net/session.rb
parente5ed1780afa9a5f29da7c63ca2b7d9c66f6936aa (diff)
Version 1.1.4
o (HTTP) allow no content-length data git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/net/session.rb')
-rw-r--r--lib/net/session.rb47
1 files changed, 30 insertions, 17 deletions
diff --git a/lib/net/session.rb b/lib/net/session.rb
index e3a30afb2c..7cf423ce3a 100644
--- a/lib/net/session.rb
+++ b/lib/net/session.rb
@@ -1,6 +1,6 @@
=begin
-= net/session.rb version 1.1.3
+= net/session.rb
written by Minero Aoki <aamine@dp.u-netsurf.ne.jp>
@@ -15,6 +15,7 @@ require 'socket'
module Net
+ Version = '1.1.4'
=begin
@@ -29,7 +30,7 @@ Object
=== Constants
: Version
- The version of Session class. It is a string like "1.1.3".
+ The version of Session class. It is a string like "1.1.4".
=== Class Methods
@@ -73,8 +74,6 @@ Object
class Protocol
- Version = '1.1.3'
-
class << self
def start( address = 'localhost', port = nil, *args )
@@ -470,7 +469,7 @@ Object
def reopen
unless closed? then
@socket.close
- flush_rbuf
+ @buffer = ''
end
@socket = TCPsocket.new( @addr, @port )
end
@@ -511,25 +510,43 @@ Object
@pipe << "reading #{len} bytes...\n" if pre = @pipe ; @pipe = nil
rsize = 0
-
while rsize + @buffer.size < len do
- rsize += @buffer.size
- ret << fetch_rbuf( @buffer.size )
+ rsize += writeinto( ret, @buffer.size )
fill_rbuf
end
- ret << fetch_rbuf( len - rsize )
+ writeinto( ret, len - rsize )
@pipe << "read #{len} bytes\n" if @pipe = pre
ret
end
+ def read_all( ret = '' )
+ @pipe << "reading all...\n" if pre = @pipe; @pipe = nil
+
+ rsize = 0
+ begin
+ while true do
+ rsize += writeinto( ret, @buffer.size )
+ fill_rbuf
+ end
+ rescue EOFError
+ ;
+ end
+
+ @pipe << "read #{rsize} bytes\n" if @pipe = pre
+ ret
+ end
+
+
def readuntil( target )
until idx = @buffer.index( target ) do
fill_rbuf
end
- fetch_rbuf( idx + target.size )
+ ret = ''
+ writeinto( ret, idx + target.size )
+ ret
end
@@ -583,17 +600,13 @@ Object
@buffer << @socket.sysread( READ_BLOCK )
end
- def fetch_rbuf( len )
+ def writeinto( ret, len )
bsi = @buffer.size
- ret = @buffer[ 0, len ]
+ ret << @buffer[ 0, len ]
@buffer = @buffer[ len, bsi - len ]
@pipe << %{read "#{Net.quote ret}"\n} if @pipe
- ret
- end
-
- def flush_rbuf
- @buffer = ''
+ len
end