Class: Hakuban::Exchange

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

Instance Method Summary collapse

Methods inherited from FFIObject

#do_and_drop_or_return, #drop, #dropped?, from_ffi_pointer, generate_finalizer, #initialize_copy, #inspect, #with_pointer, with_pointers

Constructor Details

#initialize(&block) ⇒ Exchange

Returns a new instance of Exchange.



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

def initialize(&block)
  super()
  Hakuban::hakuban_initialize
  Hakuban::logger_initialize("hakuban=warn", skip_if_already_initialized: true)
  Thread.handle_interrupt(Object => :never) {
    pointer = FFI::hakuban_exchange_new().unwrap
    initialize_pointer(pointer, :hakuban_exchange_drop, :hakuban_exchange_clone)
    self.do_and_drop_or_return(&block)
  }
end

Instance Method Details

#object_expose_contract(tags, descriptor = nil) ⇒ Object



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

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

#object_observe_contract(tags, descriptor = nil) ⇒ Object



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

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

#tag_expose_contract(descriptor) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/hakuban/exchange.rb', line 45

def tag_expose_contract(descriptor)
  if descriptor.kind_of? TagDescriptor
    TagExposeContractBuilder.new(self, descriptor)
  else
    TagExposeContractBuilder.new(self, TagDescriptor.new(descriptor))
  end
end

#tag_observe_contract(descriptor) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/hakuban/exchange.rb', line 37

def tag_observe_contract(descriptor)
  if descriptor.kind_of? TagDescriptor
    TagObserveContractBuilder.new(self, descriptor)
  else
    TagObserveContractBuilder.new(self, TagDescriptor.new(descriptor))
  end
end