Module: Wamp::Worker
- Defined in:
- lib/wamp/worker.rb,
lib/wamp/worker/queue.rb,
lib/wamp/worker/rails.rb,
lib/wamp/worker/config.rb,
lib/wamp/worker/runner.rb,
lib/wamp/worker/ticker.rb,
lib/wamp/worker/handler.rb,
lib/wamp/worker/version.rb,
lib/wamp/worker/proxy/base.rb,
lib/wamp/worker/proxy/requestor.rb,
lib/wamp/worker/proxy/dispatcher.rb,
lib/wamp/worker/proxy/backgrounder.rb
Defined Under Namespace
Modules: BackgroundHandler, BaseHandler, Handler, Proxy, Rails, Runner Classes: Config, ConfigProxy, Handle, Queue, Registration, Session, Subscription, Ticker
Constant Summary collapse
- DEFAULT =
:default- VERSION =
"0.1.0"
Class Method Summary collapse
-
.config ⇒ Object
Returns the config object.
-
.configure(name = nil, &callback) ⇒ Object
Method to configure the worker.
-
.log_level=(log_level) ⇒ Object
Sets the log level.
-
.logger ⇒ Object
Returns the logger object.
-
.register_procedures(name, proxy, session) ⇒ Object
Registers procedures.
-
.requestor(name) ⇒ Wamp::Worker::Proxy::Requestor
Returns a requestor for objects to perform calls to the worker.
-
.run(name, **args) ⇒ Object
Method to start a worker.
-
.subscribe_topics(name, proxy, session) ⇒ Object
Subscribe to topics.
Class Method Details
.config ⇒ Object
Returns the config object
29 30 31 32 33 34 |
# File 'lib/wamp/worker.rb', line 29 def self.config unless defined?(@config) @config = Config.new end @config end |
.configure(name = nil, &callback) ⇒ Object
Method to configure the worker
71 72 73 |
# File 'lib/wamp/worker.rb', line 71 def self.configure(name=nil, &callback) ConfigProxy.new(self.config, name).configure(&callback) end |
.log_level=(log_level) ⇒ Object
Sets the log level
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/wamp/worker.rb', line 50 def self.log_level=(log_level) Wamp::Client.log_level = log_level level = case log_level when :error Logger::ERROR when :debug Logger::DEBUG when :fatal Logger::FATAL when :warn Logger::WARN else Logger::INFO end self.logger.level = level end |
.logger ⇒ Object
Returns the logger object
38 39 40 41 42 43 44 45 |
# File 'lib/wamp/worker.rb', line 38 def self.logger unless defined?(@logger) $stdout.sync = true unless ENV['RAILS_ENV'] == "production" @logger = Logger.new $stdout @logger.level = Logger::INFO end @logger end |
.register_procedures(name, proxy, session) ⇒ Object
Registers procedures
104 105 106 107 108 109 110 111 112 113 |
# File 'lib/wamp/worker.rb', line 104 def self.register_procedures(name, proxy, session) Wamp::Worker.config.registrations(name).each do |r| handler = -> a,k,d { self.logger.debug("#{self.name} invoking handler '#{r.klass}##{r.method}' for procedure '#{r.procedure}'") r.klass.create(proxy, :procedure, a, k, d).invoke(r.method) } session.register(r.procedure, handler, r.) self.logger.info("#{self.name} register '#{r.klass}##{r.method}' for procedure '#{r.procedure}'") end end |
.requestor(name) ⇒ Wamp::Worker::Proxy::Requestor
Returns a requestor for objects to perform calls to the worker
92 93 94 95 96 97 |
# File 'lib/wamp/worker.rb', line 92 def self.requestor(name) name ||= DEFAULT # Create a requestor proxy for the connection Proxy::Requestor.new(name) end |
.run(name, **args) ⇒ Object
Method to start a worker
78 79 80 81 82 83 84 85 86 |
# File 'lib/wamp/worker.rb', line 78 def self.run(name, **args) name ||= DEFAULT # Get the connection info = Wamp::Worker.config.connection(name).merge(args) # Create the runner and start it Runner::Main.new(name, **).start end |
.subscribe_topics(name, proxy, session) ⇒ Object
Subscribe to topics
120 121 122 123 124 125 126 127 128 129 |
# File 'lib/wamp/worker.rb', line 120 def self.subscribe_topics(name, proxy, session) Wamp::Worker.config.subscriptions(name).each do |s| handler = -> a, k, d { self.logger.debug("#{self.name} invoking handler '#{s.klass}##{s.method}' for subscription '#{s.topic}'") s.klass.create(proxy, :subscription, a, k, d).invoke(s.method) } session.subscribe(s.topic, handler, s.) self.logger.info("#{self.name} subscribe '#{s.klass}##{s.method}' for topic '#{s.topic}'") end end |