class Avro::IPC::FramedReader

Attributes

reader[R]

Public Class Methods

new(reader) click to toggle source
    # File lib/avro/ipc.rb
502 def initialize(reader)
503   @reader = reader
504 end

Public Instance Methods

read_framed_message() click to toggle source
    # File lib/avro/ipc.rb
506 def read_framed_message
507   message = []
508   loop do
509     buffer = ''.force_encoding('BINARY')
510     buffer_size = read_buffer_size
511 
512     return message.join if buffer_size == 0
513 
514     while buffer.bytesize < buffer_size
515       chunk = reader.read(buffer_size - buffer.bytesize)
516       chunk_error?(chunk)
517       buffer << chunk
518     end
519     message << buffer
520   end
521 end

Private Instance Methods

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