class Slnky::Service::Base

Attributes

config[R]
name[R]
subscriber[R]
timers[R]

Public Class Methods

new() click to toggle source
# File lib/slnky/service.rb, line 14
def initialize
  config.service = name
  @server_down = false
end

Protected Class Methods

periodic(seconds, method) click to toggle source
# File lib/slnky/service.rb, line 101
def periodic(seconds, method)
  Slnky::Service.timers.add(seconds, method)
end
Also aliased as: timer
subscribe(name, method) click to toggle source
# File lib/slnky/service.rb, line 97
def subscribe(name, method)
  Slnky::Service.subscriber.add(name, method)
end
timer(seconds, method)
Alias for: periodic

Public Instance Methods

handle_command(event, data) click to toggle source
# File lib/slnky/service.rb, line 35
def handle_command(event, data)
  if command
    command.handle(event, data)
  else
    log.error "no comamnd support for #{name}"
  end
end
handle_heartbeat() click to toggle source
# File lib/slnky/service.rb, line 49
def handle_heartbeat
  # log.debug "heartbeat #{name}"
  Slnky.heartbeat(name)
end
handle_restart(name, data) click to toggle source
# File lib/slnky/service.rb, line 43
def handle_restart(name, data)
  # if we get this event, just stop. upstart will start us again.
  log.warn "received restart event"
  transport.stop!('Restarted')
end
start() click to toggle source
# File lib/slnky/service.rb, line 19
def start
  transport.start!(self) do |_|
    log.info "#{config.service} running #{config.environment}"
    run

    subscriber.add "slnky.#{name}.command", :handle_command
    subscriber.add "slnky.help.command", :handle_command
    subscriber.add "slnky.service.restart", :handle_restart
    timers.add 5.seconds, :handle_heartbeat # unless config.development?

    subscriber.each do |name, method|
      log.info "subscribed to: #{name} -> #{self.class.name}.#{method}"
    end
  end
end

Protected Instance Methods

command() click to toggle source
# File lib/slnky/service.rb, line 92
def command
  @command ||= "Slnky::#{name.capitalize}::Command".constantize.new rescue nil
end
log() click to toggle source
# File lib/slnky/service.rb, line 80
def log
  Slnky::Log.instance
end
msg(data) click to toggle source
# File lib/slnky/service.rb, line 72
def msg(data)
  Slnky::Message.new(data)
end
parse(data) click to toggle source
# File lib/slnky/service.rb, line 76
def parse(data)
  Slnky::Message.parse(data)
end
run() click to toggle source
# File lib/slnky/service.rb, line 68
def run
  # nothing here - overridden in subclasses
end
transport() click to toggle source
# File lib/slnky/service.rb, line 88
def transport
  @transport ||= Slnky::Transport.instance
end