class PostgresPR::StartupMessage

Public Instance Methods

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

  buffer = Utils::WriteBuffer.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?
  buffer.content
end
parse(buffer) click to toggle source
# File lib/postgres-pr/message.rb, line 541
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