module Wamp::Worker

Constants

DEFAULT
VERSION

Public Class Methods

config() click to toggle source

Returns the config object

# File lib/wamp/worker.rb, line 29
def self.config
  unless defined?(@config)
    @config = Config.new
  end
  @config
end
configure(name=nil, &callback) click to toggle source

Method to configure the worker

@param name [Symbol] - The name of the connection

# File lib/wamp/worker.rb, line 52
def self.configure(name=nil, &callback)
  ConfigProxy.new(self.config, name).configure(&callback)
end
log_level=(log_level) click to toggle source

Sets the log level

@param log_level [Symbol] - the desired log level

# File lib/wamp/worker.rb, line 45
def self.log_level=(log_level)
  Wamp::Client.log_level = log_level
end
logger() click to toggle source

Returns the logger object

# File lib/wamp/worker.rb, line 38
def self.logger
  Wamp::Client.logger
end
register_procedures(name, proxy, session) click to toggle source

Registers procedures

@param name [Symbol] - The name of the connection @param proxy [Wamp::Worker::Proxy] - The proxy that will be used by the handler @param session [Wamp::Client::Session] - The session

# File lib/wamp/worker.rb, line 74
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.options) do |result, error, details|
      if error
        self.logger.error("#{self.name} register failed '#{r.klass}##{r.method}' for procedure '#{r.procedure}'")
        self.logger.error("   error: #{error.inspect}")
      else
        self.logger.info("#{self.name} registered for '#{r.klass}##{r.method}' for procedure '#{r.procedure}'")
      end
    end
  end
end
run(name=nil, **args) click to toggle source

Method to start a worker

@param name [Symbol] - The name of the connection

# File lib/wamp/worker.rb, line 59
def self.run(name=nil, **args)
  name ||= DEFAULT

  # Get the connection info
  options = Wamp::Worker.config.connection(name).merge(args)

  # Create the runner and start it
  Runner::Main.new(name, **options).start
end
subscribe_topics(name, proxy, session) click to toggle source

Subscribe to topics

@param name [Symbol] - The name of the connection @param proxy [Wamp::Worker::Proxy] - The proxy that will be used by the handler @param session [Wamp::Client::Session] - The session

# File lib/wamp/worker.rb, line 96
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.options) do |result, error, details|
      if error
        self.logger.error("#{self.name} subscribe failed '#{s.klass}##{s.method}' for topic '#{s.topic}'")
        self.logger.error("   error: #{error.inspect}")
      else
        self.logger.info("#{self.name} subscribed '#{s.klass}##{s.method}' for topic '#{s.topic}'")
      end
    end
  end
end