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
433 434 435 436 437 438 439 440 441 442 443 444 445 446 |
# File 'lib/isono/node_modules/rpc_channel.rb', line 433 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
449 450 451 452 453 454 455 456 457 458 459 460 461 |
# File 'lib/isono/node_modules/rpc_channel.rb', line 449 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 |