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