@private
# File lib/amqp/deprecated/rpc.rb, line 98 def initialize(channel, server_queue_name) @channel = channel @exchange = AMQP::Exchange.default(@channel) @server_queue_name = server_queue_name @handlers = Hash.new @queue = channel.queue("__amqp_gem_rpc_client_#{rand(1_000_000)}", :auto_delete => true) @queue.subscribe do |header, payload| *response_args = Marshal.load(payload) handler = @handlers[header.message_id] handler.call(*response_args) end end
# File lib/amqp/deprecated/rpc.rb, line 114 def method_missing(selector, *args, &block) @channel.once_open do message_id = "message_identifier_#{rand(1_000_000)}" if block @handlers[message_id] = block @exchange.publish(Marshal.dump([selector, *args]), :routing_key => @server_queue_name, :reply_to => @queue.name, :message_id => message_id) else @exchange.publish(Marshal.dump([selector, *args]), :routing_key => @server_queue_name, :message_id => message_id) end end end
Generated with the Darkfish Rdoc Generator 2.