Class: TDL::ProcessingRules

Inherits:
Object
  • Object
show all
Defined in:
lib/tdl/queue/processing_rules.rb

Defined Under Namespace

Classes: ProcessingRuleBuilder

Instance Method Summary collapse

Constructor Details

#initializeProcessingRules

Returns a new instance of ProcessingRules.



8
9
10
11
# File 'lib/tdl/queue/processing_rules.rb', line 8

def initialize
  @rules = Hash.new
  @logger = Logging.logger[self]
end

Instance Method Details

#add(method_name, user_implementation) ⇒ Object

~~~~ Builders



15
16
17
# 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) ⇒ Object

~~~~ Accessors



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 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) ⇒ Object



19
20
21
# File 'lib/tdl/queue/processing_rules.rb', line 19

def on(method_name)
  ProcessingRuleBuilder.new(self, method_name)
end