module Estore::Commands::Command

Attributes

uuid[R]

Public Class Methods

included(base) click to toggle source
# File lib/estore/commands/base.rb, line 6
def self.included(base)
  base.extend ClassMethods
  base.singleton_class.class_eval { attr_accessor :handlers }
  base.handlers = {}
end
new(connection) click to toggle source
# File lib/estore/commands/base.rb, line 12
def initialize(connection)
  @connection = connection
  @uuid = SecureRandom.uuid
end

Public Instance Methods

handle(message) click to toggle source
# File lib/estore/commands/base.rb, line 37
def handle(message)
  handler = self.class.handlers[message.class]

  if handler
    send(handler, message) unless handler == :ignore
  else
    $stderr.puts "#{message.class} arrived but not handled by "\
      "command #{self.class}"
  end
end
promise() click to toggle source
# File lib/estore/commands/base.rb, line 33
def promise
  @promise ||= Promise.new(@uuid)
end
register!() click to toggle source
# File lib/estore/commands/base.rb, line 17
def register!
  @connection.register(self)
end
reject!(error) click to toggle source
# File lib/estore/commands/base.rb, line 25
def reject!(error)
  @promise.reject(error) if @promise
end
remove!() click to toggle source
# File lib/estore/commands/base.rb, line 21
def remove!
  @connection.remove(self)
end
write(command, message = nil) click to toggle source
# File lib/estore/commands/base.rb, line 29
def write(command, message = nil)
  @connection.write(@uuid, command, message)
end