class PostgresPR::StartupMessage

Public Instance Methods

dump() click to toggle source
# File lib/postgres-pr/message.rb, line 493
def dump
  params = @params.reject{|k,v| v.nil?}
  sz = params.inject(4 + 4) {|sum, kv| sum + kv[0].size + 1 + kv[1].size + 1} + 1

  buffer = Buffer.of_size(sz)
  buffer.write_int32_network(sz)
  buffer.write_int32_network(@proto_version)
  params.each_pair {|key, value| 
    buffer.write_cstring(key)
    buffer.write_cstring(value)
  }
  buffer.write_byte(0)

  raise DumpError unless buffer.at_end?
  return buffer.content
end
parse(buffer) click to toggle source
# File lib/postgres-pr/message.rb, line 510
def parse(buffer)
  buffer.position = 4

  @proto_version = buffer.read_int32_network
  @params = {}

  while buffer.position < buffer.size-1
    key = buffer.read_cstring
    val = buffer.read_cstring
    @params[key] = val
  end

  nul = buffer.read_byte
  raise ParseError unless nul == 0
  raise ParseError unless buffer.at_end?
end