class Tros::IPC::FramedReader
Attributes
reader[R]
Public Class Methods
new(reader)
click to toggle source
# File lib/tros/ipc.rb 501 def initialize(reader) 502 @reader = reader 503 end
Public Instance Methods
read_framed_message()
click to toggle source
# File lib/tros/ipc.rb 505 def read_framed_message 506 message = [] 507 loop do 508 buffer = "" 509 buffer_size = read_buffer_size 510 511 return message.join if buffer_size == 0 512 513 while buffer.size < buffer_size 514 chunk = reader.read(buffer_size - buffer.size) 515 chunk_error?(chunk) 516 buffer << chunk 517 end 518 message << buffer 519 end 520 end
Private Instance Methods
chunk_error?(chunk)
click to toggle source
# File lib/tros/ipc.rb 529 def chunk_error?(chunk) 530 raise ConnectionClosedError.new("Reader read 0 bytes") if chunk == '' 531 end
read_buffer_size()
click to toggle source
# File lib/tros/ipc.rb 523 def read_buffer_size 524 header = reader.read(BUFFER_HEADER_LENGTH) 525 chunk_error?(header) 526 header.unpack('N')[0] 527 end