Class: Soren::Socket::Reader

Inherits:
Object
  • Object
show all
Defined in:
lib/soren/socket/reader.rb

Instance Method Summary collapse

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_allObject

: -> 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_lineObject

: -> 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