Class: Vedeu::Distributed::Client
- Inherits:
-
Object
- Object
- Vedeu::Distributed::Client
- Defined in:
- lib/vedeu/distributed/client.rb
Overview
A class for the client side of the DRb server/client relationship.
Instance Attribute Summary collapse
- #uri ⇒ String readonly protected
Class Method Summary collapse
Instance Method Summary collapse
-
#connect ⇒ Symbol
Simulate connecting to the DRb server by requesting its status.
- #drb_connection_error ⇒ Symbol private
-
#initialize(uri) ⇒ Client
constructor
Returns a new instance of Vedeu::Distributed::Client.
-
#input(data) ⇒ void|Symbol
(also: #read)
Send input to the DRb server.
-
#output ⇒ void|Symbol
(also: #write)
Fetch output from the DRb server.
- #server ⇒ void private
-
#shutdown ⇒ void|Symbol
Shutdown the DRb server and the client application.
Constructor Details
#initialize(uri) ⇒ Client
Returns a new instance of Vedeu::Distributed::Client.
22 23 24 |
# File 'lib/vedeu/distributed/client.rb', line 22 def initialize(uri) @uri = uri.to_s end |
Instance Attribute Details
#uri ⇒ String (readonly, protected)
90 91 92 |
# File 'lib/vedeu/distributed/client.rb', line 90 def uri @uri end |
Class Method Details
.connect(uri) ⇒ Object
14 15 16 |
# File 'lib/vedeu/distributed/client.rb', line 14 def self.connect(uri) new(uri).connect end |
Instance Method Details
#connect ⇒ Symbol
Simulate connecting to the DRb server by requesting its status.
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/vedeu/distributed/client.rb', line 29 def connect server.status rescue DRb::DRbConnError drb_connection_error rescue DRb::DRbBadURI puts 'Could not connect to DRb server, URI may be bad.' :drb_bad_uri end |
#drb_connection_error ⇒ Symbol (private)
100 101 102 103 104 |
# File 'lib/vedeu/distributed/client.rb', line 100 def drb_connection_error puts 'Could not connect to DRb server.' :drb_connection_error end |
#input(data) ⇒ void|Symbol Also known as: read
Send input to the DRb server.
45 46 47 48 49 50 |
# File 'lib/vedeu/distributed/client.rb', line 45 def input(data) server.input(data) rescue DRb::DRbConnError drb_connection_error end |
#output ⇒ void|Symbol Also known as: write
Fetch output from the DRb server.
56 57 58 59 60 61 |
# File 'lib/vedeu/distributed/client.rb', line 56 def output server.output rescue DRb::DRbConnError drb_connection_error end |
#server ⇒ void (private)
This method returns an undefined value.
95 96 97 |
# File 'lib/vedeu/distributed/client.rb', line 95 def server @server ||= DRbObject.new_with_uri(uri) end |
#shutdown ⇒ void|Symbol
Note:
Application will raise StopIteration when its ‘.stop` method is called. Here we rescue that to give a clean client exit.
Shutdown the DRb server and the client application.
71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/vedeu/distributed/client.rb', line 71 def shutdown server.shutdown Process.kill('KILL', server.pid) rescue DRb::DRbConnError drb_connection_error rescue Interrupt puts 'Client application exited.' ensure :shutdown end |