class TDL::ProcessingRules

Public Class Methods

new() click to toggle source
# File lib/tdl/queue/processing_rules.rb, line 8
def initialize
  @rules = Hash.new
  @logger = Logging.logger[self]
end

Public Instance Methods

add(method_name, user_implementation) click to toggle source

~~~~ Builders

# File lib/tdl/queue/processing_rules.rb, line 15
def add(method_name, user_implementation)
  @rules[method_name] = ProcessingRule.new(user_implementation)
end
get_response_for(request) click to toggle source

~~~~ Accessors

# File lib/tdl/queue/processing_rules.rb, line 43
def get_response_for(request)
  if @rules.has_key?(request.method)
    processing_rule = @rules[request.method]
  else
    message = "\"method '#{request.method}' did not match any processing rule\""
    @logger.warn(message)
    return FatalErrorResponse.new(message)
  end

  begin
    user_implementation = processing_rule.user_implementation
    result = user_implementation.call(*request.params)

    return ValidResponse.new(request.id, result)
  rescue Exception => e
    message = '"user implementation raised exception"'
    @logger.warn("#{message}, #{e.message}")
    @logger.warn e.backtrace.join("\n")
    return FatalErrorResponse.new(message)
  end
end
on(method_name) click to toggle source
# File lib/tdl/queue/processing_rules.rb, line 19
def on(method_name)
  ProcessingRuleBuilder.new(self, method_name)
end