Class: Vedeu::Distributed::Server

Inherits:
Object
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#configurationObject (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.

Parameters:

  • data (String|Symbol)


18
19
20
# File 'lib/vedeu/distributed/server.rb', line 18

def self.input(data)
  instance.input(data)
end

.outputvoid

This method returns an undefined value.



23
24
25
# File 'lib/vedeu/distributed/server.rb', line 23

def self.output
  instance.output
end

.restartvoid

This method returns an undefined value.



28
29
30
# File 'lib/vedeu/distributed/server.rb', line 28

def self.restart
  instance.restart
end

.shutdownvoid

This method returns an undefined value.



33
34
35
# File 'lib/vedeu/distributed/server.rb', line 33

def self.shutdown
  instance.shutdown
end

.startvoid

This method returns an undefined value.



38
39
40
# File 'lib/vedeu/distributed/server.rb', line 38

def self.start
  instance.start
end

.statusSymbol

Returns:

  • (Symbol)


43
44
45
# File 'lib/vedeu/distributed/server.rb', line 43

def self.status
  instance.status
end

.stopvoid

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)

Returns:

  • (Boolean)


167
168
169
# File 'lib/vedeu/distributed/server.rb', line 167

def drb?
  Vedeu::Configuration.drb?
end

#drb_hostString (private)

Returns:

  • (String)


172
173
174
# File 'lib/vedeu/distributed/server.rb', line 172

def drb_host
  Vedeu::Configuration.drb_host
end

#drb_portFixnum|String (private)

Returns:



182
183
184
# File 'lib/vedeu/distributed/server.rb', line 182

def drb_port
  Vedeu::Configuration.drb_port
end

#drb_running?|NilClass (private)

Returns:

  • (|NilClass)


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.

Parameters:

  • data (String|Symbol)


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(message)
  Vedeu.log(type: :drb, message: "#{message}: '#{uri}'")
end

#not_enabledSymbol (private)

Returns:

  • (Symbol)


192
193
194
195
196
# File 'lib/vedeu/distributed/server.rb', line 192

def not_enabled
  log('Not enabled')

  :drb_not_enabled
end

#outputvoid 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

#pidFixnum

Returns The PID of the currently running application.

Returns:

  • (Fixnum)

    The PID of the currently running application.



66
67
68
# File 'lib/vedeu/distributed/server.rb', line 66

def pid
  Process.pid
end

#restartvoid

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

#shutdownvoid

Note:

: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

#startVedeu::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

#statusSymbol

Returns:

  • (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

#stopvoid

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

#uriString (private)

Returns:

  • (String)


199
200
201
# File 'lib/vedeu/distributed/server.rb', line 199

def uri
  Vedeu::Distributed::Uri.new(drb_host, drb_port).to_s
end