module Evesync::Trigger::Base

Public Instance Methods

ignore(ipc_data) click to toggle source
# File lib/evesync/trigger/base.rb, line 39
def ignore(ipc_data)
  @ignore << ipc_data if
    ipc_data.is_a? data_class
end
process(message) click to toggle source
# File lib/evesync/trigger/base.rb, line 27
def process(message)
  if ignore?(message)
    unignore(message)
    false
  else
    if save_to_db(@db, message)
      send_to_remotes(@remotes, message)
      true
    end
  end
end
save_to_db(db, message) click to toggle source

db must have a realization of save method

# File lib/evesync/trigger/base.rb, line 8
def save_to_db(db, message)
  db.save(message)
end
send_to_remotes(remotes, message) click to toggle source

Every element in remotes must have a realization of handle method

# File lib/evesync/trigger/base.rb, line 14
def send_to_remotes(remotes, message)
  remotes.each do |evehand|
    begin
      Timeout.timeout(30) do # FIXME: take from Config
        evehand.handle(message)
      end
    rescue Timeout::Error
      Log.warn("Trigger remote timeout: server #{evehand.uri} " \
               'is not accessible')
    end
  end
end
unignore(ipc_data) click to toggle source
# File lib/evesync/trigger/base.rb, line 44
def unignore(ipc_data)
  @ignore.delete_if { |d| d == ipc_data }
end

Private Instance Methods

ignore?(ipc_data) click to toggle source
# File lib/evesync/trigger/base.rb, line 50
def ignore?(ipc_data)
  Log.debug("File ignore aray: #{@ignore}")
  @ignore.find { |d| d == ipc_data }
end