Module: Isono::NodeModules::RpcChannel::RequestContext::RequestSynchronize
- Defined in:
- lib/isono/node_modules/rpc_channel.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.extended(mod) ⇒ Object
397 398 399 400 401 402 403 404 405 406 407 408 409 410 |
# File 'lib/isono/node_modules/rpc_channel.rb', line 397 def self.extended(mod) raise TypeError, "This module is applicable only for RequestContext" unless mod.is_a?(RequestContext) # overwrite callbacks mod.instance_eval { @q = ::Queue.new on_success { |r| @q << [:success, r] } on_error { |r| @q << [:error, r] } } end |
Instance Method Details
#wait ⇒ Object
413 414 415 416 417 418 419 420 421 422 423 424 425 |
# File 'lib/isono/node_modules/rpc_channel.rb', line 413 def wait() raise "response was received already." if state == :done raise "wait() has to be called at outside of the EventMachine's main loop." if EventMachine.reactor_thread? r = @q.deq case r[0] when :success r[1] when :error raise RpcError, r[1] end end |