Class: Hakuban::ObjectStateSink

Inherits:
FFIObject show all
Includes:
Stream
Defined in:
lib/hakuban/object_state_sink.rb

Instance Method Summary collapse

Methods included from Stream

#each

Methods inherited from FFIObject

#do_and_drop, #do_and_drop_or_return, #drop, #drop_lock, #drop_release, #dropped?, generate_finalizer, #initialize_copy, #inspect, #with_pointer, with_pointers

Constructor Details

#initialize(pointer) ⇒ ObjectStateSink

Returns a new instance of ObjectStateSink.



11
12
13
# File 'lib/hakuban/object_state_sink.rb', line 11

def initialize(pointer)
	initialize_pointer(pointer, :hakuban_object_state_sink_drop, nil)
end

Instance Method Details

#current(&block) ⇒ Object



26
27
28
29
30
# File 'lib/hakuban/object_state_sink.rb', line 26

def current(&block)
	return nil  if ! pointer = with_pointer { |pointer| FFI::hakuban_object_state_sink_current(pointer) }.unwrap
	ObjectStateSinkParams.send(:new, pointer).do_and_drop_or_return(&block)
rescue FFIObject::PointerAlreadyDropped
end

#descriptorObject



41
42
43
# File 'lib/hakuban/object_state_sink.rb', line 41

def descriptor
	Hakuban::ObjectDescriptor.send(:from_ffi_pointer, with_pointer { |pointer| FFI::hakuban_object_state_sink_descriptor(pointer) }) 
end

#desynchronizeObject



46
47
48
49
# File 'lib/hakuban/object_state_sink.rb', line 46

def desynchronize
	with_pointer { |pointer| FFI::hakuban_object_state_sink_desynchronize(pointer) }
rescue FFIObject::PointerAlreadyDropped
end

#next(&block) ⇒ Object



19
20
21
22
23
# File 'lib/hakuban/object_state_sink.rb', line 19

def next(&block)
	return nil  if ! pointer = FFI::FFIFutureReturningPointer.create_and_await(self) { |pointer| FFI::hakuban_object_state_sink_next(pointer) }.unwrap
	ObjectStateSinkParams.send(:new, pointer).do_and_drop_or_return(&block)
rescue FFIObject::PointerAlreadyDropped
end

#send(object_state) ⇒ Object



33
34
35
36
37
38
# File 'lib/hakuban/object_state_sink.rb', line 33

def send(object_state)
	FFI::FFIFutureReturningNothing.create_and_await(self)  { |pointer| 
		object_state.with_pointer { |object_state_pointer| FFI::hakuban_object_state_sink_send(pointer, object_state_pointer) }
	}.unwrap
rescue FFIObject::PointerAlreadyDropped
end