class Evesync::Handler

Handles package changes, sent via Package class and queue Sends messages to evedatad and available evehands.

See
  • Evesync::Trigger::File

  • Evesync::Trigger::Package

Handlers available:
  • Evesync::Handler::Package

  • Evesync::Handler::File

Example:

handler = Evesync::Handler.new(queue)
Evesync::IPC::Server.new(
  :proxy => handler,
  ...
)

Example call:

Evesync::IPC::Client.new(
  :port => :evehand
).handle(IPC::Data::Package.new(
  :name => 'tree',
  :version => '0.0.1',
  :command => :install
)

TODO:

* Make anoter daemon\Thread to search for available
  evehands daemons
* Delegate +handle+ to another daemon if not found

Public Class Methods

new() click to toggle source
# File lib/evesync/handler.rb, line 43
def initialize
  @package_handler = Handler::Package.new
  @files_handler = Handler::File.new
  @monitor = IPC::Client.new(
    port: :evemond
  )
  @database = IPC::Client.new(
    port: :evedatad
  )
  Log.debug('Handler initialization done!')
end

Public Instance Methods

events() click to toggle source

For syncing and other remove db access

# File lib/evesync/handler.rb, line 81
def events
  @database.events
end
handle(message) click to toggle source
# File lib/evesync/handler.rb, line 55
def handle(message)
  Log.info "Handler triggered with: #{message}"

  handler = if message.is_a? IPC::Data::Package
              @package_handler
            elsif message.is_a? IPC::Data::File
              @files_handler
            else
              Log.error('Handler: unknown message type')
              nil
            end
  return unless handler

  @monitor.ignore(message)

  # TODO: add PackageManagerLock exception
  # FIXME: package manger may be locked
  # Add sleep and ones again try if PackageManagerLock
  # exception is cought
  handler.handle(message) || @monitor.unignore(message)
  @database.save(message)

  true
end
messages(*args) click to toggle source
# File lib/evesync/handler.rb, line 85
def messages(*args)
  @database.messages(*args)
end