class Fusuma::Plugin::Executors::Executor
Inherite this base
def enough_interval?(event)
-
(TrueClass, FalseClass)-
Parameters:
-
time(Time) -- -
event(Events::Event) --
def enough_interval?(event) # NOTE: Cache at the index that is actually used, reflecting Fallback and Skip. # Otherwise, a wrong index will cause invalid intervals. return true if event.record.index.with_context.keys.any? { |key| key.symbol == :end } return false if @wait_until && event.time < @wait_until true end
def executable?(_event)
-
(TrueClass, FalseClass)-
Parameters:
-
_event(Events::Event) --
def executable?(_event) raise NotImplementedError, "override #{self.class.name}##{__method__}" end
def execute(_event)
-
(nil)-
Parameters:
-
_event(Event) --
def execute(_event) raise NotImplementedError, "override #{self.class.name}##{__method__}" end
def execute_keys
-
(Array-)
def execute_keys # [name.split('Executors::').last.underscore.gsub('_executor', '').to_sym] raise NotImplementedError, "override #{self.class.name}##{__method__}" end
def interval(event)
def interval(event) @interval_time ||= {} index = event.record.index @interval_time[index.cache_key] ||= begin config_value = Config.search(Config::Index.new([*index.keys, 'interval'])) || Config.search(Config::Index.new(['interval', Detectors::Detector.type(event.tag)])) if event.record.trigger == :oneshot (config_value || 1) * BASE_ONESHOT_INTERVAL else (config_value || 1) * BASE_REPEAT_INTERVAL end end end
def update_interval(event)
def update_interval(event) @wait_until = event.time + interval(event).to_f end