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
377 378 379 |
# File 'lib/expanse.rb', line 377 def self.finalize(ptr) proc { Native.expanse_blob_map_free(ptr) if ptr && !ptr.null? } end |
Instance Method Details
#clear ⇒ Object
410 411 412 413 |
# File 'lib/expanse.rb', line 410 def clear Native.expanse_blob_map_clear(@ptr) self end |
#delete(key) ⇒ Object
398 399 400 |
# File 'lib/expanse.rb', line 398 def delete(key) Native.expanse_blob_map_remove(@ptr, key) != 0 end |
#get(key) ⇒ Object
386 387 388 389 390 391 392 393 394 395 396 |
# File 'lib/expanse.rb', line 386 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
402 403 404 |
# File 'lib/expanse.rb', line 402 def key?(key) Native.expanse_blob_map_contains_key(@ptr, key) != 0 end |
#set(key, payload, hot_meta: 0) ⇒ Object
381 382 383 384 |
# File 'lib/expanse.rb', line 381 def set(key, payload, hot_meta: 0) b = payload.b Native.expanse_blob_map_insert(@ptr, key, b, b.bytesize, ) != 0 end |
#size ⇒ Object
406 407 408 |
# File 'lib/expanse.rb', line 406 def size Native.expanse_blob_map_len(@ptr) end |