Sha256: 7eb93fb26c0c79c4ac0f2bd2a7643bd44434d1c8cafdb787803ff02b7d750c74

Contents?: true

Size: 863 Bytes

Versions: 1

Compression:

Stored size: 863 Bytes

Contents

module Cloudist
  class Listener
    
    attr_reader :job_queue_name, :job_id
    
    def initialize(job_or_queue_name)
      if job_or_queue_name.is_a?(Cloudist::Job)
        @job_queue_name = Utils.reply_prefix(job_or_queue_name.payload.headers[:master_queue])
        @job_id = job_or_queue_name.id
      elsif job_or_queue_name.is_a?(String)
        @job_queue_name = Utils.reply_prefix(job_or_queue_name)
        @job_id = nil
      else
        raise ArgumentError, "Invalid listener type, accepts job queue name or Cloudist::Job instance"
      end
    end
    
    def subscribe(&block)
      reply_queue = Cloudist::ReplyQueue.new(job_queue_name)
      reply_queue.setup(job_id) if job_id
      
      reply_queue.subscribe do |request|
        job = Job.new(request.payload)
        
        job.instance_eval(&block)
      end
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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