class Avro::IPC::FramedReader

Attributes

reader[R]

Public Class Methods

new(reader) click to toggle source
    # File lib/avro/ipc.rb
506 def initialize(reader)
507   @reader = reader
508 end

Public Instance Methods

read_framed_message() click to toggle source
    # File lib/avro/ipc.rb
510 def read_framed_message
511   message = []
512   loop do
513     buffer = String.new('', encoding: 'BINARY')
514     buffer_size = read_buffer_size
515 
516     return message.join if buffer_size == 0
517 
518     while buffer.bytesize < buffer_size
519       chunk = reader.read(buffer_size - buffer.bytesize)
520       chunk_error?(chunk)
521       buffer << chunk
522     end
523     message << buffer
524   end
525 end

Private Instance Methods

chunk_error?(chunk) click to toggle source
    # File lib/avro/ipc.rb
534 def chunk_error?(chunk)
535   raise ConnectionClosedError.new("Reader read 0 bytes") if chunk == ''
536 end
read_buffer_size() click to toggle source
    # File lib/avro/ipc.rb
528 def read_buffer_size
529   header = reader.read(BUFFER_HEADER_LENGTH)
530   chunk_error?(header)
531   header.unpack('N')[0]
532 end