Class: Soren::Socket::Reader
Instance Method Summary collapse
-
#initialize(source, deadline: nil) ⇒ Reader
constructor
: (untyped, ?deadline: Deadline?) -> void.
-
#read_all ⇒ Object
: -> String.
-
#read_exactly(length) ⇒ Object
: (Integer) -> String.
-
#read_line ⇒ Object
: -> String?.
-
#read_line_with_terminator(terminator) ⇒ Object
: (String) -> String?.
Constructor Details
#initialize(source, deadline: nil) ⇒ Reader
: (untyped, ?deadline: Deadline?) -> void
12 13 14 15 |
# File 'lib/soren/socket/reader.rb', line 12 def initialize(source, deadline: nil) @io = to_io(source) #: untyped @deadline = deadline #: Deadline? end |
Instance Method Details
#read_all ⇒ Object
: -> String
47 48 49 50 |
# File 'lib/soren/socket/reader.rb', line 47 def read_all check_deadline_expired @io.read.to_s end |
#read_exactly(length) ⇒ Object
: (Integer) -> String
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/soren/socket/reader.rb', line 30 def read_exactly(length) return '' if length <= 0 check_deadline_expired buffer = +'' while buffer.bytesize < length check_deadline_expired chunk = @io.read(length - buffer.bytesize) raise Soren::Error::ReadError, 'unexpected EOF while reading' if chunk.nil? buffer << chunk end buffer end |
#read_line ⇒ Object
: -> String?
18 19 20 21 |
# File 'lib/soren/socket/reader.rb', line 18 def read_line check_deadline_expired @io.gets end |
#read_line_with_terminator(terminator) ⇒ Object
: (String) -> String?
24 25 26 27 |
# File 'lib/soren/socket/reader.rb', line 24 def read_line_with_terminator(terminator) check_deadline_expired @io.gets(terminator) end |