Class: Hakuban::ObjectObserveState
- Inherits:
-
Object
- Object
- Hakuban::ObjectObserveState
- Defined in:
- lib/hakuban/hakuban.rb
Class Method Summary collapse
Instance Method Summary collapse
- #data ⇒ Object
- #data_type ⇒ Object
-
#initialize(state, deserializer) ⇒ ObjectObserveState
constructor
A new instance of ObjectObserveState.
- #inspect ⇒ Object
- #synchronized ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(state, deserializer) ⇒ ObjectObserveState
Returns a new instance of ObjectObserveState.
340 341 342 343 |
# File 'lib/hakuban/hakuban.rb', line 340 def initialize(state, deserializer) @state, @deserializer = state, deserializer ObjectSpace.define_finalizer(self, ObjectObserveState.finalize(@state)) end |
Class Method Details
.finalize(state) ⇒ Object
345 346 347 348 349 |
# File 'lib/hakuban/hakuban.rb', line 345 def ObjectObserveState.finalize(state) proc { |_| FFI::hakuban_object_observe_state_return(state) } end |
Instance Method Details
#data ⇒ Object
357 358 359 360 361 362 363 364 |
# File 'lib/hakuban/hakuban.rb', line 357 def data return @data if @data ffi_data = FFI::hakuban_object_observe_state_get_data(@state) ffi_data_type = FFI::hakuban_object_observe_state_get_data_type(@state) serialized_data_type = ffi_data_type[:type_elements].read_array_of_pointer(ffi_data_type[:type_length]).map { |string| string.read_string() } @data_type, @data = @deserializer.call(serialized_data_type, ffi_data[:data_bytes].read_string_length(ffi_data[:data_length])) @data end |
#data_type ⇒ Object
366 367 368 369 370 |
# File 'lib/hakuban/hakuban.rb', line 366 def data_type return @data_type if @data_type data @data_type end |
#inspect ⇒ Object
377 378 379 |
# File 'lib/hakuban/hakuban.rb', line 377 def inspect "#<ObjectObserveState @synchronized=%p @version=%p>"%[@synchronized, @data_version] end |
#synchronized ⇒ Object
372 373 374 375 |
# File 'lib/hakuban/hakuban.rb', line 372 def synchronized return @synchronized if @synchronized @synchronized = FFI::hakuban_object_observe_state_get_synchronized(@state) end |
#version ⇒ Object
351 352 353 354 355 |
# File 'lib/hakuban/hakuban.rb', line 351 def version return @data_version if @data_version ffi_version = FFI::hakuban_object_observe_state_get_data_version(@state) @data_version = ffi_version[:version_elements].read_array_of_type(::FFI::TYPE_INT64, :read_int64, ffi_version[:version_length]) end |