class Fusuma::Plugin::Executors::Executor

Inherite this base

def enough_interval?(event)

Returns:
  • (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)

Returns:
  • (TrueClass, FalseClass) -

Parameters:
  • _event (Events::Event) --
def executable?(_event)
  raise NotImplementedError, "override #{self.class.name}##{__method__}"
end

def execute(_event)

Returns:
  • (nil) -

Parameters:
  • _event (Event) --
def execute(_event)
  raise NotImplementedError, "override #{self.class.name}##{__method__}"
end

def execute_keys

Returns:
  • (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