Class: Hakuban::ObjectObserve
- Inherits:
-
Object
- Object
- Hakuban::ObjectObserve
- Defined in:
- lib/hakuban/hakuban.rb,
lib/hakuban/manager.rb
Defined Under Namespace
Classes: ManagedObject
Instance Attribute Summary collapse
-
#descriptor ⇒ Object
readonly
Returns the value of attribute descriptor.
Instance Method Summary collapse
- #drop ⇒ Object
- #dropped? ⇒ Boolean
-
#initialize(local_node, descriptor, deserializer) ⇒ ObjectObserve
constructor
A new instance of ObjectObserve.
- #inspect ⇒ Object
- #manage ⇒ Object
- #new_callback_event_queue ⇒ Object
- #new_event_queue ⇒ Object
- #object_state ⇒ Object
Constructor Details
#initialize(local_node, descriptor, deserializer) ⇒ ObjectObserve
Returns a new instance of ObjectObserve.
228 229 230 231 232 233 234 |
# File 'lib/hakuban/hakuban.rb', line 228 def initialize(local_node, descriptor, deserializer) @local_node, @descriptor, @deserializer = local_node, descriptor, deserializer result = FFI::hakuban_object_observe_new(@local_node.local_node_pointer, descriptor.to_ffi) Hakuban::raise_if_error(result) @queues = [] @object_observe_pointer = ::FFI::AutoPointer.new(result[:object_observe_pointer], proc { |ptr| FFI::hakuban_object_observe_drop(ptr) }) end |
Instance Attribute Details
#descriptor ⇒ Object (readonly)
Returns the value of attribute descriptor.
226 227 228 |
# File 'lib/hakuban/hakuban.rb', line 226 def descriptor @descriptor end |
Instance Method Details
#drop ⇒ Object
261 262 263 264 265 266 |
# File 'lib/hakuban/hakuban.rb', line 261 def drop @object_observe_pointer.free @object_observe_pointer = nil @queues.each(&:close) #is this atomic? @queues.clear end |
#dropped? ⇒ Boolean
268 269 270 |
# File 'lib/hakuban/hakuban.rb', line 268 def dropped? @object_observe_pointer.nil? end |
#inspect ⇒ Object
257 258 259 |
# File 'lib/hakuban/hakuban.rb', line 257 def inspect "#<ObjectObserve #{@descriptor}>" end |
#manage ⇒ Object
248 249 250 |
# File 'lib/hakuban/manager.rb', line 248 def manage ObjectManagerBuilder.new(self) end |
#new_callback_event_queue ⇒ Object
245 246 247 248 |
# File 'lib/hakuban/hakuban.rb', line 245 def new_callback_event_queue raise "Attempt to use after 'drop'" if not @object_observe_pointer ObjectDescriptorCallbackEventQueue.new(FFI::hakuban_object_observe_events_get(@object_observe_pointer)) end |
#new_event_queue ⇒ Object
250 251 252 253 254 255 |
# File 'lib/hakuban/hakuban.rb', line 250 def new_event_queue raise "Attempt to use after 'drop'" if not @object_observe_pointer queue = ObjectDescriptorEventQueue.new(self) @queues << queue queue end |
#object_state ⇒ Object
236 237 238 239 240 241 242 243 |
# File 'lib/hakuban/hakuban.rb', line 236 def object_state raise "Attempt to use after 'drop'" if not @object_observe_pointer if (state_ptr = FFI::hakuban_object_observe_state_borrow(@object_observe_pointer)).null? nil else ObjectObserveState.new(state_ptr, @deserializer) end end |