Module: PostgresPR::NoticeErrorMixin

Included in:
ErrorResponse, NoticeResponse
Defined in:
lib/postgres-pr/message.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#field_typeObject

Returns the value of attribute field_type.



337
338
339
# File 'lib/postgres-pr/message.rb', line 337

def field_type
  @field_type
end

#field_valuesObject

Returns the value of attribute field_values.



337
338
339
# File 'lib/postgres-pr/message.rb', line 337

def field_values
  @field_values
end

Instance Method Details

#dumpObject

Raises:



344
345
346
347
348
349
350
351
352
353
354
355
356
# File 'lib/postgres-pr/message.rb', line 344

def dump
  raise PGError if @field_type == 0 and not @field_values.empty?

  sz = 1 
  sz += @field_values.inject(1) {|sum, fld| sum + fld.size + 1} unless @field_type == 0 

  super(sz) do |buffer|
    buffer.write_byte(@field_type)
    break if @field_type == 0 
    @field_values.each {|fld| buffer.write_cstring(fld) }
    buffer.write_byte(0)
  end
end

#initialize(field_type = 0, field_values = []) ⇒ Object

Raises:



339
340
341
342
# File 'lib/postgres-pr/message.rb', line 339

def initialize(field_type=0, field_values=[])
  raise PGError if field_type == 0 and not field_values.empty?
  @field_type, @field_values = field_type, field_values
end

#parse(buffer) ⇒ Object



358
359
360
361
362
363
364
365
366
367
368
369
# File 'lib/postgres-pr/message.rb', line 358

def parse(buffer)
  super do
    @field_type = buffer.read_byte
    break if @field_type == 0
    @field_values = []
    while buffer.position < buffer.size-1
      @field_values << buffer.read_cstring
    end
    terminator = buffer.read_byte
    raise ParseError unless terminator == 0
  end
end