Sha256: 7a9103438c88c2df3e889a0ee6e6a70d47adad488c7d574005ab27335c8aaf79

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

module Cloudist
  class Job
    attr_reader :payload
    def initialize(payload)
      @payload = payload
    end
    
    def id
      payload.id
    end
    
    def data
      payload.body
    end
    
    def log
      Cloudist.log
    end
    
    def cleanup
      
    end
    
    def reply(data, headers = {})
      # headers.update(:message_id => payload.headers[:message_id])
      headers = {
        :message_id => payload.headers[:message_id],
        :reply_type => "reply"
      }.update(headers)
      
      reply_payload = Payload.new(data, headers)
      
      reply_queue = ReplyQueue.new(payload.reply_to)
      reply_queue.setup
      reply_queue.publish_to_q(reply_payload)
      
      # log.debug("Replying: #{data.inspect} - Payload: #{reply_payload.inspect}")
    end
    
    def event(event_name, data = {})
      data = {} unless data
      reply({:event => event_name}.merge(payload.body), {:reply_type => "event"})
    end
    
    def method_missing(meth, *args, &blk)
      if meth.to_s.ends_with?("!")
        event(meth.to_s.gsub(/(!)$/, ''), args.shift)
      else
        super
      end
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cloudist-0.0.2 lib/cloudist/job.rb