Class: Aerospike::MapValue

Inherits:
Value
  • Object
show all
Defined in:
lib/aerospike/value/value.rb

Overview

Map value. Supported by Aerospike 3 servers only.

Instance Method Summary collapse

Methods inherited from Value

get_packer, of, put_packer

Constructor Details

#initialize(vmap) ⇒ MapValue

:nodoc:



291
292
293
294
295
296
297
298
299
300
# File 'lib/aerospike/value/value.rb', line 291

def initialize(vmap)
  @vmap = vmap || {}

  packer = Value.get_packer
  pack(packer)
  @bytes = packer.to_s.force_encoding('binary')
  Value.put_packer(packer)

  self
end

Instance Method Details

#estimate_sizeObject



302
303
304
# File 'lib/aerospike/value/value.rb', line 302

def estimate_size
  @bytes.bytesize
end

#getObject



324
325
326
# File 'lib/aerospike/value/value.rb', line 324

def get
  @vmap
end

#pack(packer) ⇒ Object



311
312
313
314
315
316
317
318
# File 'lib/aerospike/value/value.rb', line 311

def pack(packer)
  packer.write_map_header(@vmap.length)
  # @vmap.each do |key, val|
  for key, val in @vmap
    Value.of(key).pack(packer)
    Value.of(val).pack(packer)
  end
end

#to_bytesObject



328
329
330
# File 'lib/aerospike/value/value.rb', line 328

def to_bytes
  @bytes
end

#to_sObject



332
333
334
# File 'lib/aerospike/value/value.rb', line 332

def to_s
  @vmap.map{|k, v| "#{k.to_s} => #{v.to_s}" }.to_s
end

#typeObject



320
321
322
# File 'lib/aerospike/value/value.rb', line 320

def type
  Aerospike::ParticleType::MAP
end

#write(buffer, offset) ⇒ Object



306
307
308
309
# File 'lib/aerospike/value/value.rb', line 306

def write(buffer, offset)
  buffer.write_binary(@bytes, offset)
  @bytes.bytesize
end