class Protobuf::Rpc::Buffer
def <<(data)
def <<(data) @data << data if reading? get_data_size check_for_flush end end
def check_for_flush
def check_for_flush if not @size.nil? and @data.length == @size @flush = true end end
def flushed?
def flushed? @flush end
def get_data_size
def get_data_size if @size.nil? sliced_size = @data.slice! /^\d+-/ unless sliced_size.nil? @size = sliced_size.gsub(/-/, '').to_i end end end
def initialize(mode=:read, data='')
def initialize(mode=:read, data='') @data = data.is_a?(Protobuf::Message) ? data.serialize_to_string : data.to_s @flush = false self.mode = mode end
def mode=(mode)
def mode=(mode) if MODES.include?(mode) @mode = mode else @mode = :read end end
def reading?
def reading? mode == :read end
def write(force_mode=true)
def write(force_mode=true) if force_mode and reading? mode = :write elsif not force_mode and reading? raise = 'You chose to write the buffer when in read mode' end @size = @data.length '%d-%s' % [@size, @data] end
def writing?
def writing? mode == :write end