Class: Hakuban::LocalExchange

Inherits:
FFIObject show all
Defined in:
lib/hakuban/exchange.rb

Class Method Summary collapse

Instance Method Summary collapse

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(name: false, &block) ⇒ LocalExchange

Returns a new instance of LocalExchange.



8
9
10
11
12
13
14
15
# File 'lib/hakuban/exchange.rb', line 8

def initialize(name: false, &block)
	Hakuban::hakuban_initialize
	Hakuban::logger_initialize("hakuban=warn", skip_if_already_initialized: true)
	name = LocalExchange.default_name  if name == false
	pointer = FFI::hakuban_local_exchange_new(name).unwrap
	initialize_pointer(pointer, :hakuban_local_exchange_drop, :hakuban_local_exchange_clone)
	self.do_and_drop_or_return(&block)
end

Class Method Details

.default_nameObject



17
18
19
# File 'lib/hakuban/exchange.rb', line 17

def self.default_name
	"#{Socket.gethostname}:#{File.basename(caller_locations(0..1)[1].path)}:#{$$}"
end

Instance Method Details

#object(tags, descriptor = nil) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/hakuban/exchange.rb', line 23

def object(tags, descriptor=nil)
	if tags.kind_of? ObjectDescriptor
		ObjectBuilder.new(self, tags)
	else 
		ObjectBuilder.new(self, ObjectDescriptor.new(tags, descriptor))
	end
end

#tag(descriptor) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/hakuban/exchange.rb', line 31

def tag(descriptor)
	if descriptor.kind_of? TagDescriptor
		TagBuilder.new(self, descriptor)
	else
		TagBuilder.new(self, TagDescriptor.new(descriptor))
	end
end