class PostgresPR::RowDescription

Public Instance Methods

dump() click to toggle source
Calls superclass method PostgresPR::Message::dump
# File lib/postgres-pr/message.rb, line 450
def dump
  sz = @fields.inject(2) {|sum, fld| sum + 18 + fld.name.size + 1 }
  super(sz) do |buffer|
    buffer.write_int16_network(@fields.size)
    @fields.each { |f|
      buffer.write_cstring(f.name)
      buffer.write_int32_network(f.oid)
      buffer.write_int16_network(f.attr_nr)
      buffer.write_int32_network(f.type_oid)
      buffer.write_int16_network(f.typlen)
      buffer.write_int32_network(f.atttypmod)
      buffer.write_int16_network(f.formatcode)
    }
  end
end
parse(buffer) click to toggle source
Calls superclass method PostgresPR::Message#parse
# File lib/postgres-pr/message.rb, line 467
def parse(buffer)
  super do
    fields = []
    n_fields = buffer.read_int16_network
    while n_fields > 0
      f = FieldInfo.new
      f.name       = buffer.read_cstring
      f.oid        = buffer.read_int32_network
      f.attr_nr    = buffer.read_int16_network
      f.type_oid   = buffer.read_int32_network
      f.typlen     = buffer.read_int16_network
      f.atttypmod  = buffer.read_int32_network
      f.formatcode = buffer.read_int16_network
      fields << f
      n_fields -= 1
    end
    @fields = fields
  end
end