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

#configurationVedeu::Configuration (readonly, protected)



210
211
212
# File 'lib/vedeu/distributed/server.rb', line 210

def configuration
  @configuration
end

Class Method Details

.drb_restartvoid

This method returns an undefined value.

See Also:



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

def restart
  instance.restart
end

.drb_startvoid

This method returns an undefined value.

See Also:



50
51
52
# File 'lib/vedeu/distributed/server.rb', line 50

def start
  instance.start
end

.drb_statusSymbol

Returns:

  • (Symbol)

See Also:



57
58
59
# File 'lib/vedeu/distributed/server.rb', line 57

def status
  instance.status
end

.drb_stopvoid

This method returns an undefined value.

See Also:



64
65
66
# File 'lib/vedeu/distributed/server.rb', line 64

def stop
  instance.stop
end

.input(data, type = :key) ⇒ Object

Parameters:

  • data (String|Symbol)

    The input to send to Vedeu.

  • type (Symbol) (defaults to: :key)

    Either :command or :keypress. Will trigger the respective capture mode within Input::Input, or if not given, will treat the data as a keypress.

See Also:



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

def input(data, type = :key)
  instance.input(data, type)
end

.outputvoid

This method returns an undefined value.

See Also:



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

def output
  instance.output
end

.restartvoid

This method returns an undefined value.

See Also:



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

def restart
  instance.restart
end

.shutdownvoid

This method returns an undefined value.

See Also:



41
42
43
# File 'lib/vedeu/distributed/server.rb', line 41

def shutdown
  instance.shutdown
end

.startvoid

This method returns an undefined value.

See Also:



47
48
49
# File 'lib/vedeu/distributed/server.rb', line 47

def start
  instance.start
end

.statusSymbol

Returns:

  • (Symbol)

See Also:



54
55
56
# File 'lib/vedeu/distributed/server.rb', line 54

def status
  instance.status
end

.stopvoid

This method returns an undefined value.

See Also:



61
62
63
# File 'lib/vedeu/distributed/server.rb', line 61

def stop
  instance.stop
end

Instance Method Details

#drb_running?|NilClass (private)

Returns:

  • (|NilClass)


215
216
217
# File 'lib/vedeu/distributed/server.rb', line 215

def drb_running?
  DRb.thread
end

#input(data, type = :keypress) ⇒ void Also known as: read

This method returns an undefined value.

Parameters:

  • data (String|Symbol)

    The input to send to Vedeu.

  • type (Symbol) (defaults to: :keypress)

    Either :command or :keypress. Will trigger the respective capture mode within Input::Input, or if not given, will treat the data as a keypress.



74
75
76
# File 'lib/vedeu/distributed/server.rb', line 74

def input(data, type = :keypress)
  Vedeu.trigger(:_drb_input_, data, type)
end

#log(message) ⇒ void (private)

This method returns an undefined value.



220
221
222
# File 'lib/vedeu/distributed/server.rb', line 220

def log(message)
  Vedeu.log(type: :drb, message: "#{message}: '#{uri}'")
end

#not_enabledSymbol (private)

Returns:

  • (Symbol)


225
226
227
228
229
# File 'lib/vedeu/distributed/server.rb', line 225

def not_enabled
  log('Not enabled')

  :drb_not_enabled
end

#outputvoid Also known as: write

This method returns an undefined value.



80
81
82
# File 'lib/vedeu/distributed/server.rb', line 80

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.



86
87
88
# File 'lib/vedeu/distributed/server.rb', line 86

def pid
  Process.pid
end

#restartvoid

This method returns an undefined value.

Restart the DRb server.

Examples:

Vedeu.drb_restart


96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/vedeu/distributed/server.rb', line 96

def restart
  log('Attempting to restart')

  return not_enabled unless Vedeu.config.drb?

  if drb_running?
    log('Restarting')

    stop

  else
    log('Not running')

  end

  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.



122
123
124
125
126
127
128
129
130
# File 'lib/vedeu/distributed/server.rb', line 122

def shutdown
  return not_enabled unless Vedeu.config.drb?

  stop if drb_running?

  Vedeu.trigger(:_exit_)

  Vedeu::Terminal.restore_screen
end

#startVedeu::Distributed::Server

Start the DRb server.



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/vedeu/distributed/server.rb', line 138

def start
  log('Attempting to start')

  return not_enabled unless Vedeu.config.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

Fetch the status of the DRb server.

Examples:

Vedeu.drb_status

Returns:

  • (Symbol)


161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/vedeu/distributed/server.rb', line 161

def status
  log('Fetching status')

  return not_enabled unless Vedeu.config.drb?

  if drb_running?
    log('Running')

    :running

  else
    log('Stopped')

    :stopped

  end
end

#stopvoid

This method returns an undefined value.

Stop the DRb server.

Examples:

Vedeu.drb_stop


185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/vedeu/distributed/server.rb', line 185

def stop
  log('Attempting to stop')

  return not_enabled unless Vedeu.config.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.
  Vedeu.log(type:    :drb,
            message: 'Attempted to #join on DRb.thread.')
end

#uriString (private)

Returns:

  • (String)


232
233
234
235
# File 'lib/vedeu/distributed/server.rb', line 232

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