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 !@size.nil? && @data.length == @size @flush = true end end
def flushed?
def flushed? @flush end
def get_data_size
def get_data_size if @size == 0 || @data.match(SIZE_REGEX) sliced_size = @data.slice!(SIZE_REGEX) @size = sliced_size.gsub('-', '').to_i unless sliced_size.nil? end end
def initialize(mode=:read)
def initialize(mode=:read) @flush = false @data = "" @size = 0 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 set_data(data)
def set_data(data) @data = data.to_s @size = @data.size 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 "#{@size}-#{@data}" end
def writing?
def writing? mode == :write end