class Citrus::Common::Service::FilterService
Public Class Methods
new()
click to toggle source
Initialize the service
# File lib/citrus/common/service/filter_service.rb, line 19 def initialize @befores = [] @afters = [] end
Public Instance Methods
after(filter)
click to toggle source
Add after filter into the filter chain
@param [#call] filter
# File lib/citrus/common/service/filter_service.rb, line 34 def after filter @afters.unshift filter end
after_filter(err, msg, session, resp) { |err| ... }
click to toggle source
Do the after filter chain
@param [Object] err @param [Hash] msg @param [Object] session @param [Hash] resp
# File lib/citrus/common/service/filter_service.rb, line 69 def after_filter err, msg, session, resp, &block index = 0 next_p = Proc.new { |err| if index >= @afters.length block_given? and yield err return end handler = @afters[index] index += 1 if handler.respond_to? :call handler.call err, msg, session, resp, &next_p else next_p.call Exception.new 'invalid after filter' end } next_p.call err end
before(filter)
click to toggle source
Add before filter into the filter chain
@param [#call] filter
# File lib/citrus/common/service/filter_service.rb, line 27 def before filter @befores << filter end
before_filter(msg, session) { |err, resp, args| ... }
click to toggle source
Do the before filter chain
@param [Hash] msg @param [Object] session
# File lib/citrus/common/service/filter_service.rb, line 42 def before_filter msg, session, &block index = 0 next_p = Proc.new { |err, resp, args| if err || index >= @befores.length block_given? and yield err, resp, args return end handler = @befores[index] index += 1 if handler.respond_to? :call handler.call msg, session, &next_p else next_p.call Exception.new 'invalid before filter' end } next_p.call end