Parent

Class Index [+]

Quicksearch

MessagePack::RPC::Session

Session is a abstract class corresponds with a remote host. You can call remote method using call, call_async, callback or notify method.

Attributes

loop[R]
address[R]
timeout[RW]

Sets and gets timeout in seconds.

Public Class Methods

new(builder, address, loop) click to toggle source
    # File lib/msgpack/rpc/session.rb, line 25
25:         def initialize(builder, address, loop)
26:                 @address = address
27:                 @loop = loop
28:                 @reqtable = {}
29:                 @timeout = 10    # FIXME default timeout time
30:                 @seqid = 0
31:                 @transport = builder.build_transport(self, address)
32:         end

Public Instance Methods

call(symbol, *args) → result of remote method click to toggle source

Calls remote method. This method is same as call_async(method, *args).get

    # File lib/msgpack/rpc/session.rb, line 53
53:         def call(method, *args)
54:                 send_request(method, args).get
55:         end
call_apply(symbol, params) → result of remote method click to toggle source

Calls remote method. This method is same as call(method, *args) excepting that the arugment is a array.

    # File lib/msgpack/rpc/session.rb, line 63
63:         def call_apply(method, params)
64:                 send_request(method, params).get
65:         end
call_async(symbol, *args) → Future click to toggle source

Calls remote method asynchronously. This method is non-blocking and returns Future.

    # File lib/msgpack/rpc/session.rb, line 72
72:         def call_async(method, *args)
73:                 future = send_request(method, args)
74:         end
call_async_apply(symbol, params) → Future click to toggle source

Calls remote method asynchronously. This method is same as call_async(method, *args) excepting that the arugment is a array.

    # File lib/msgpack/rpc/session.rb, line 82
82:         def call_async_apply(method, params)
83:                 future = send_request(method, params)
84:         end
callback(symbol, *args) {|future| } click to toggle source

Calls remote method asynchronously. The callback method is called with Future when the result is reached. This method is same as call_async(method, *args).attach_callback {|future| }

     # File lib/msgpack/rpc/session.rb, line 102
102:         def callback(method, *args, &block)
103:                 future = send_request(method, args)
104:                 future.attach_callback(block)
105:                 future
106:         end
callback_apply(symbol, params) {|future| } click to toggle source

Calls remote method asynchronously. The callback method is called with Future when the result is reached. This method is same as callback(method, *args).attach_callback {|future| } excepting that the argument is a array.

     # File lib/msgpack/rpc/session.rb, line 115
115:         def callback_apply(method, params, &block)
116:                 future = send_request(method, params)
117:                 future.attach_callback(block)
118:                 future
119:         end
close() click to toggle source

Closes underlaying Transport and destroy resources.

     # File lib/msgpack/rpc/session.rb, line 146
146:         def close
147:                 @transport.close
148:                 @reqtable = {}
149:                 @seqid = 0
150:                 self
151:         end
notify(symbol, *args) → nil click to toggle source

Calls remote method with NOTIFY protocol. It doesn’t require server to return results. This method is non-blocking and returns nil.

     # File lib/msgpack/rpc/session.rb, line 127
127:         def notify(method, *args)
128:                 send_notify(method, args)
129:                 nil
130:         end
notify_apply(symbol, params) → nil click to toggle source

Calls remote method with NOTIFY protocol. It doesn’t require server to return results. This method is non-blocking and returns nil. This method is same as notify(method, *args) excepting that the argument is a array.

     # File lib/msgpack/rpc/session.rb, line 140
140:         def notify_apply(method, params)
141:                 send_notify(method, params)
142:                 nil
143:         end
send(method, *args) click to toggle source
    # File lib/msgpack/rpc/session.rb, line 88
88:         def send(method, *args)
89:             if caller.first =~ /.*_test.rb/ || caller.first =~ /.*_spec.rb/ then
90:                    warn "\n Don't use send method. Use 'call_async' method."
91:             end
92:             call_async(method, *args)
93:         end
Also aliased as: send_without_call_async
send_without_call_async(method, *args) click to toggle source

backward compatibility

Alias for: send

Private Instance Methods

send_notify(method, param) click to toggle source
     # File lib/msgpack/rpc/session.rb, line 194
194:         def send_notify(method, param)
195:                 method = method.to_s
196:                 data = [NOTIFY, method, param].to_msgpack
197:                 @transport.send_data(data)
198:                 nil
199:         end
send_request(method, param) click to toggle source
     # File lib/msgpack/rpc/session.rb, line 185
185:         def send_request(method, param)
186:                 method = method.to_s
187:                 msgid = @seqid
188:                 @seqid += 1; if @seqid >= 1<<31 then @seqid = 0 end
189:                 data = [REQUEST, msgid, method, param].to_msgpack
190:                 @transport.send_data(data)
191:                 @reqtable[msgid] = Future.new(self, @loop)
192:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.