Class: Expanse::BlobMap
- Inherits:
-
Object
- Object
- Expanse::BlobMap
- Defined in:
- lib/expanse.rb
Class Method Summary collapse
Instance Method Summary collapse
- #clear ⇒ Object
- #delete(key) ⇒ Object
- #get(key) ⇒ Object
-
#initialize(chunk_size: 0) ⇒ BlobMap
constructor
A new instance of BlobMap.
- #key?(key) ⇒ Boolean
- #set(key, payload, hot_meta: 0) ⇒ Object
- #size ⇒ Object
Constructor Details
Class Method Details
.finalize(ptr) ⇒ Object
389 390 391 |
# File 'lib/expanse.rb', line 389 def self.finalize(ptr) proc { Native.expanse_blob_map_free(ptr) if ptr && !ptr.null? } end |
Instance Method Details
#clear ⇒ Object
422 423 424 425 |
# File 'lib/expanse.rb', line 422 def clear Native.expanse_blob_map_clear(@ptr) self end |
#delete(key) ⇒ Object
410 411 412 |
# File 'lib/expanse.rb', line 410 def delete(key) Native.expanse_blob_map_remove(@ptr, key) != 0 end |
#get(key) ⇒ Object
398 399 400 401 402 403 404 405 406 407 408 |
# File 'lib/expanse.rb', line 398 def get(key) # ExpanseBlobView: ptr (8B), len (8B), hot_meta (4B), is_inline (1B) + padding (3B) = 24 bytes view_buf = Fiddle::Pointer.malloc(24) if Native.expanse_blob_map_get(@ptr, key, view_buf) != 0 raw_ptr = view_buf[0, 8].unpack1("Q<") len = view_buf[8, 8].unpack1("Q<") = view_buf[16, 4].unpack1("L<") val = len.zero? ? "" : Fiddle::Pointer.new(raw_ptr).to_str(len) [val, ] end end |
#key?(key) ⇒ Boolean
414 415 416 |
# File 'lib/expanse.rb', line 414 def key?(key) Native.expanse_blob_map_contains_key(@ptr, key) != 0 end |
#set(key, payload, hot_meta: 0) ⇒ Object
393 394 395 396 |
# File 'lib/expanse.rb', line 393 def set(key, payload, hot_meta: 0) b = payload.b Native.expanse_blob_map_insert(@ptr, key, b, b.bytesize, ) != 0 end |
#size ⇒ Object
418 419 420 |
# File 'lib/expanse.rb', line 418 def size Native.expanse_blob_map_len(@ptr) end |