Class: Vedeu::Distributed::Server
- Inherits:
-
Object
- Object
- Vedeu::Distributed::Server
- Includes:
- Singleton
- Defined in:
- lib/vedeu/distributed/server.rb
Overview
A class for the server side of the DRb server/client relationship.
Instance Attribute Summary collapse
-
#configuration ⇒ Object
readonly
private
Returns the value of attribute configuration.
Class Method Summary collapse
- .input(data) ⇒ void
- .output ⇒ void
- .restart ⇒ void
- .shutdown ⇒ void
- .start ⇒ void
- .status ⇒ Symbol
- .stop ⇒ void
Instance Method Summary collapse
- #drb? ⇒ Boolean private
- #drb_host ⇒ String private
- #drb_port ⇒ Fixnum|String private
- #drb_running? ⇒ |NilClass private
- #input(data) ⇒ void (also: #read)
- #log(message) ⇒ void private
- #not_enabled ⇒ Symbol private
- #output ⇒ void (also: #write)
-
#pid ⇒ Fixnum
The PID of the currently running application.
- #restart ⇒ void
-
#shutdown ⇒ void
When called will stop the DRb server and attempt to terminate the client application.
- #start ⇒ Vedeu::Distributed::Server
- #status ⇒ Symbol
- #stop ⇒ void
- #uri ⇒ String private
Instance Attribute Details
#configuration ⇒ Object (readonly, private)
Returns the value of attribute configuration.
164 165 166 |
# File 'lib/vedeu/distributed/server.rb', line 164 def configuration @configuration end |
Class Method Details
.input(data) ⇒ void
This method returns an undefined value.
18 19 20 |
# File 'lib/vedeu/distributed/server.rb', line 18 def self.input(data) instance.input(data) end |
.output ⇒ void
This method returns an undefined value.
23 24 25 |
# File 'lib/vedeu/distributed/server.rb', line 23 def self.output instance.output end |
.restart ⇒ void
This method returns an undefined value.
28 29 30 |
# File 'lib/vedeu/distributed/server.rb', line 28 def self.restart instance.restart end |
.shutdown ⇒ void
This method returns an undefined value.
33 34 35 |
# File 'lib/vedeu/distributed/server.rb', line 33 def self.shutdown instance.shutdown end |
.start ⇒ void
This method returns an undefined value.
38 39 40 |
# File 'lib/vedeu/distributed/server.rb', line 38 def self.start instance.start end |
.status ⇒ Symbol
43 44 45 |
# File 'lib/vedeu/distributed/server.rb', line 43 def self.status instance.status end |
.stop ⇒ void
This method returns an undefined value.
48 49 50 |
# File 'lib/vedeu/distributed/server.rb', line 48 def self.stop instance.stop end |
Instance Method Details
#drb? ⇒ Boolean (private)
167 168 169 |
# File 'lib/vedeu/distributed/server.rb', line 167 def drb? Vedeu::Configuration.drb? end |
#drb_host ⇒ String (private)
172 173 174 |
# File 'lib/vedeu/distributed/server.rb', line 172 def drb_host Vedeu::Configuration.drb_host end |
#drb_port ⇒ Fixnum|String (private)
182 183 184 |
# File 'lib/vedeu/distributed/server.rb', line 182 def drb_port Vedeu::Configuration.drb_port end |
#drb_running? ⇒ |NilClass (private)
177 178 179 |
# File 'lib/vedeu/distributed/server.rb', line 177 def drb_running? DRb.thread end |
#input(data) ⇒ void Also known as: read
This method returns an undefined value.
54 55 56 |
# File 'lib/vedeu/distributed/server.rb', line 54 def input(data) Vedeu.trigger(:_drb_input_, data) end |
#log(message) ⇒ void (private)
This method returns an undefined value.
187 188 189 |
# File 'lib/vedeu/distributed/server.rb', line 187 def log() Vedeu.log(type: :drb, message: "#{message}: '#{uri}'") end |
#not_enabled ⇒ Symbol (private)
192 193 194 195 196 |
# File 'lib/vedeu/distributed/server.rb', line 192 def not_enabled log('Not enabled') :drb_not_enabled end |
#output ⇒ void Also known as: write
This method returns an undefined value.
60 61 62 |
# File 'lib/vedeu/distributed/server.rb', line 60 def output Vedeu.trigger(:_drb_retrieve_output_) end |
#pid ⇒ Fixnum
Returns The PID of the currently running application.
66 67 68 |
# File 'lib/vedeu/distributed/server.rb', line 66 def pid Process.pid end |
#restart ⇒ void
This method returns an undefined value.
71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/vedeu/distributed/server.rb', line 71 def restart Vedeu.log(type: :drb, message: 'Attempting to restart') return not_enabled unless drb? log('Not running') unless drb_running? log('Restarting') stop start end |
#shutdown ⇒ void
:exit never gets triggered as when the DRb server goes away, no further methods will be called.
This method returns an undefined value.
When called will stop the DRb server and attempt to terminate the client application.
93 94 95 96 97 98 99 100 101 |
# File 'lib/vedeu/distributed/server.rb', line 93 def shutdown return not_enabled unless drb? stop if drb_running? Vedeu.trigger(:_exit_) Terminal.restore_screen end |
#start ⇒ Vedeu::Distributed::Server
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/vedeu/distributed/server.rb', line 104 def start Vedeu.log(type: :drb, message: 'Attempting to start') return not_enabled unless drb? if drb_running? log('Already started') else log('Starting') DRb.start_service(uri, self) # DRb.thread.join # not convinced this is needed here end end |
#status ⇒ Symbol
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/vedeu/distributed/server.rb', line 122 def status Vedeu.log(type: :drb, message: 'Fetching status') return not_enabled unless drb? if drb_running? log('Running') :running else log('Stopped') :stopped end end |
#stop ⇒ void
This method returns an undefined value.
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/vedeu/distributed/server.rb', line 141 def stop Vedeu.log(type: :drb, message: 'Attempting to stop') return not_enabled unless drb? if drb_running? log('Stopping') DRb.stop_service DRb.thread.join else log('Already stopped') end rescue NoMethodError # raised when #join is called on NilClass. # ... end |
#uri ⇒ String (private)
199 200 201 |
# File 'lib/vedeu/distributed/server.rb', line 199 def uri Vedeu::Distributed::Uri.new(drb_host, drb_port).to_s end |