Class: PostgresPR::Authentification

Inherits:
Message
  • Object
show all
Defined in:
lib/postgres-pr/message.rb

Constant Summary collapse

AuthTypeMap =
Hash.new { UnknownAuthType }

Constants inherited from Message

Message::MsgTypeMap

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Message

dump, fields, read, register_message_type

Class Method Details

.create(buffer) ⇒ Object



95
96
97
98
99
100
101
102
# File 'lib/postgres-pr/message.rb', line 95

def self.create(buffer)
  buffer.position = 5
  authtype = buffer.read_int32_network
  klass = AuthTypeMap[authtype]
  obj = klass.allocate
  obj.parse(buffer)
  obj
end

.register_auth_type(type) ⇒ Object



104
105
106
107
108
109
# File 'lib/postgres-pr/message.rb', line 104

def self.register_auth_type(type)
  raise "duplicate auth type registration" if AuthTypeMap.has_key?(type)
  AuthTypeMap[type] = self
  self.const_set(:AuthType, type) 
  class_eval "def auth_type() AuthType end"
end

Instance Method Details

#dumpObject



114
115
116
117
118
# File 'lib/postgres-pr/message.rb', line 114

def dump
  super(4) do |buffer|
    buffer.write_int32_network(self.auth_type)
  end
end

#message__dumpObject

the dump method of class Message



112
# File 'lib/postgres-pr/message.rb', line 112

alias message__dump dump

#parse(buffer) ⇒ Object



120
121
122
123
124
125
126
# File 'lib/postgres-pr/message.rb', line 120

def parse(buffer)
  super do
    auth_t = buffer.read_int32_network 
    raise ParseError unless auth_t == self.auth_type
    yield if block_given?
  end
end