Sha256: 4c14622cc38108b016ead38ccd2796c26fff46a88cfa1354ddec3342d61bcf69

Contents?: true

Size: 1.59 KB

Versions: 4

Compression:

Stored size: 1.59 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 = {}, options = {})
      options = {
        :echo => false
      }.update(options)
      
      headers = {
        :message_id => payload.headers[:message_id],
        :message_type => "reply"
      }.update(headers)
      
      # Echo the payload back
      data.merge!(payload.body) if options[:echo] == true
      
      reply_payload = Payload.new(data, headers)
      
      reply_queue = ReplyQueue.new(payload.reply_to)
      reply_queue.setup
      published_headers = reply_queue.publish_to_q(reply_payload)
      
      log.debug("Replying: #{data.inspect} - Headers: #{published_headers.inspect}")
    end
    
    # Sends a progress update
    # Inputs: percentage - Integer
    # Optional description, this could be displayed to the user e.g. Resizing image
    def progress(percentage, description = nil)
      reply({:progress => percentage, :description => description}, {:message_type => 'progress'})
    end
    
    def event(event_name, event_data = {}, options = {})
      event_data = {} if event_data.nil?
      reply(event_data, {:event => event_name, :message_type => 'event'}, options)
    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

4 entries across 4 versions & 1 rubygems

Version Path
cloudist-0.1.2 lib/cloudist/job.rb
cloudist-0.1.1 lib/cloudist/job.rb
cloudist-0.1.0 lib/cloudist/job.rb
cloudist-0.0.3 lib/cloudist/job.rb