Sha256: c5c5bc715218879f74ee0400d4deae32adc0cec167400a00e468d194f0c9484f

Contents?: true

Size: 1 KB

Versions: 3

Compression:

Stored size: 1 KB

Contents

module FireAndForget
  module Command
    SEPARATOR = "||".freeze

    def self.load(command)
      Marshal.load(command)
    end

    class CommandBase
      attr_reader :tag, :cmd, :params, :task

      def initialize(task, params={})
        @task, @params = task, merge_params(task.params, params)
      end

      def dump
        Marshal.dump(self)
      end

      def run
        # overridden in subclasses
      end


      def merge_params(task_params, call_params)
        params = task_params.to_a.inject({}) do |hash, (key, value)|
          hash[key.to_s] = value; hash
        end
        call_params.each do |key, value|
          params[key.to_s] = value
        end if call_params
        params
      end
    end

    autoload :Fire, "fire_and_forget/command/fire"
    autoload :Kill, "fire_and_forget/command/kill"
    autoload :SetStatus, "fire_and_forget/command/set_status"
    autoload :GetStatus, "fire_and_forget/command/get_status"
    autoload :SetPid, "fire_and_forget/command/set_pid"
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fire_and_forget-0.1.2 lib/fire_and_forget/command.rb
fire_and_forget-0.1.1 lib/fire_and_forget/command.rb
fire_and_forget-0.1.0 lib/fire_and_forget/command.rb