Parent

Namespace

AMQP::RPC

Basic RPC (remote procedure call) facility.

Needs more detail and explanation.

 EM.run do
   server = AMQP::Channel.new.rpc('hash table node', Hash)

   client = AMQP::Channel.new.rpc('hash table node')
   client[:now] = Time.now
   client[:one] = 1

   client.values do |res|
     p 'client', :values => res
   end

   client.keys do |res|
     p 'client', :keys => res
     EM.stop_event_loop
   end
 end

@note This class will be removed before 1.0 release. @deprecated @private

Attributes

name[R]

API

Public Class Methods

new(channel, queue, obj = nil) click to toggle source

Takes a channel, queue and optional object.

The optional object may be a class name, module name or object instance. When given a class or module name, the object is instantiated during this setup. The passed queue is automatically subscribed to so it passes all messages (and their arguments) to the object.

Marshalling and unmarshalling the objects is handled internally. This marshalling is subject to the same restrictions as defined in the {ruby-doc.org/core/classes/Marshal.html Marshal} standard library. See that documentation for further reference.

When the optional object is not passed, the returned rpc reference is used to send messages and arguments to the queue. See # which does all of the heavy lifting with the proxy. Some client elsewhere must call this method with the optional block so that there is a valid destination. Failure to do so will just enqueue marshalled messages that are never consumed.

    # File lib/amqp/deprecated/rpc.rb, line 68
68:     def initialize(channel, queue, obj = nil)
69:       @name    = queue
70:       @channel = channel
71:       @channel.register_rpc(self)
72: 
73:       if @obj = normalize(obj)
74:         @delegate = Server.new(channel, queue, @obj)
75:       else
76:         @delegate = Client.new(channel, queue)
77:       end
78:     end

Public Instance Methods

client?() click to toggle source
    # File lib/amqp/deprecated/rpc.rb, line 81
81:     def client?
82:       @obj.nil?
83:     end
method_missing(selector, *args, &block) click to toggle source
    # File lib/amqp/deprecated/rpc.rb, line 90
90:     def method_missing(selector, *args, &block)
91:       @delegate.__send__(selector, *args, &block)
92:     end
server?() click to toggle source
    # File lib/amqp/deprecated/rpc.rb, line 85
85:     def server?
86:       !client?
87:     end

Protected Instance Methods

normalize(input) click to toggle source
     # File lib/amqp/deprecated/rpc.rb, line 158
158:     def normalize(input)
159:       case input
160:       when ::Class
161:         input.new
162:       when ::Module
163:         (::Class.new do include(obj) end).new
164:       else
165:         input
166:       end
167:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.