Class: OSCAccess::Receiver
- Inherits:
-
Object
- Object
- OSCAccess::Receiver
- Defined in:
- lib/osc-access/receiver.rb
Instance Attribute Summary collapse
-
#servers ⇒ Object
readonly
Returns the value of attribute servers.
Class Method Summary collapse
Instance Method Summary collapse
- #add_receiver(target_obj, pattern, options = {}, &block) ⇒ Object
- #add_server(port) ⇒ Object
-
#initialize(options = {}) ⇒ Receiver
constructor
A new instance of Receiver.
- #join(options = {}) ⇒ Object
- #threads ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Receiver
Returns a new instance of Receiver.
8 9 10 11 12 |
# File 'lib/osc-access/receiver.rb', line 8 def initialize( = {}) @receivers = [] @servers = {} = nil end |
Instance Attribute Details
#servers ⇒ Object (readonly)
Returns the value of attribute servers.
6 7 8 |
# File 'lib/osc-access/receiver.rb', line 6 def servers @servers end |
Class Method Details
.server(port) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/osc-access/receiver.rb', line 42 def self.server(port) @servers ||= {} @servers[port] ||= { :server => OSC::EMServer.new(port) } @servers[port][:thread] ||= thread_for(port) @servers[port] end |
.thread_for(port) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/osc-access/receiver.rb', line 49 def self.thread_for(port) @servers[port][:thread] ||= Thread.new do @servers[port][:service] ||= Zeroconf::Service.new("Ruby", port).start Thread.abort_on_exception = true @servers[port][:server].run end end |
Instance Method Details
#add_receiver(target_obj, pattern, options = {}, &block) ⇒ Object
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/osc-access/receiver.rb', line 31 def add_receiver(target_obj, pattern, = {}, &block) receiver = { :target_obj => target_obj, :pattern => pattern, :options => , :action => block } @receivers << receiver @servers.values.each { |server| add_method(server[:server], receiver) } end |
#add_server(port) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/osc-access/receiver.rb', line 24 def add_server(port) server = self.class.server(port) @servers[port] = server @receivers.each { |receiver| add_method(server[:server], receiver) } @servers[port][:thread] end |
#join(options = {}) ⇒ Object
18 19 20 21 22 |
# File 'lib/osc-access/receiver.rb', line 18 def join( = {}) port = [:port] thread = port.nil? ? threads.last : @servers[port][:thread] thread.join end |
#threads ⇒ Object
14 15 16 |
# File 'lib/osc-access/receiver.rb', line 14 def threads @servers.values.map { |server| server[:thread] } end |