Class: Pione::Relay::Trampoline

Inherits:
Object
  • Object
show all
Defined in:
lib/pione/relay/trampoline.rb

Instance Method Summary collapse

Constructor Details

#initialize(uri, config) ⇒ Trampoline

Returns a new instance of Trampoline.



4
5
6
7
# File 'lib/pione/relay/trampoline.rb', line 4

def initialize(uri, config)
  @obj = DRb::DRbObject.new_with_uri(uri)
  @protocol = TransmitterSocket.open_server(uri, config)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(msg_id, *arg, &b) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/pione/relay/trampoline.rb', line 11

def method_missing(msg_id, *arg, &b)
  req_id = @protocol.send_request(@obj, msg_id, arg, b)
  @protocol.reader_thread
  succ, result = DRb.waiter_table.take(req_id, msg_id, arg)
  unless succ
    raise result
  end
  return result
end