lib/fluq/handler/base.rb in fluq-0.7.5 vs lib/fluq/handler/base.rb in fluq-0.8.0

- old
+ new

@@ -6,47 +6,38 @@ # @return [String] handler type def self.type @type ||= name.split("::")[-1].downcase end - # @attr_reader [FluQ::Reactor] reactor - attr_reader :reactor - # @attr_reader [String] name unique name attr_reader :name # @attr_reader [Hash] config attr_reader :config - # @attr_reader [Regexp] pattern - attr_reader :pattern - # @param [Hash] options # @option options [String] :name a (unique) handler identifier - # @option options [String] :pattern tag pattern to match # @example # # class MyHandler < FluQ::Handler::Base # end - # MyHandler.new(reactor, pattern: "visits.*") + # MyHandler.new # - def initialize(reactor, options = {}) - @reactor = reactor + def initialize(options = {}) @config = defaults.merge(options) - @name = config[:name] || generate_name - @pattern = generate_pattern + @name = config[:name] || self.class.type end - # @return [Boolean] true if event matches - def match?(event) - !!(pattern =~ event.tag) + # @param [Array<FluQ::Event>] events + # @return [Array<FluQ::Event>] filtered events + def filter(events) + events end - # @param [Array<FluQ::Event>] events - # @return [Array<FluQ::Event>] matching events - def select(events) - events.select {|e| match?(e) } + # @return [Timers] timers + def timers + @timers ||= Timers.new end # @abstract callback, called on each event # @param [Array<FluQ::Event>] the event stream def on_events(events) @@ -54,27 +45,9 @@ protected # Configuration defaults def defaults - { pattern: /./, timeout: 60 } - end - - # @return [String] generated name - def generate_name - suffix = [Digest::MD5.digest(config[:pattern].to_s)].pack("m0").tr('+/=lIO0', 'pqrsxyz')[0,6] - [self.class.type, suffix].join("-") - end - - def generate_pattern - return config[:pattern] if Regexp === config[:pattern] - - string = Regexp.quote(config[:pattern]) - string.gsub!("\\*", ".*") - string.gsub!("\\?", ".") - string.gsub!(/\\\{(.+?)\\\}/) do |match| - "(?:#{$1.split(",").join("|")})" - end - Regexp.new "^#{string}$" + { timeout: 60 } end end