Class: DRbQS::Server::Message
- Inherits:
-
Object
- Object
- DRbQS::Server::Message
show all
- Includes:
- Misc
- Defined in:
- lib/drbqs/server/message.rb
Constant Summary
Constants included
from Misc
Misc::STRINGS_FOR_KEY
Instance Method Summary
collapse
Methods included from Misc
create_logger, create_uri, output_error, process_running_normally?, random_key, time_to_history_string, time_to_history_string2, uri_drbunix
Constructor Details
#initialize(message, logger = DRbQS::Misc::LoggerDummy.new) ⇒ Message
Returns a new instance of Message.
Instance Method Details
#check_connection ⇒ Object
74
75
76
77
78
79
80
81
82
|
# File 'lib/drbqs/server/message.rb', line 74
def check_connection
deleted = @node_list.delete_not_alive
@logger.info("IDs of deleted nodes") { deleted } if deleted.size > 0 && @logger
@node_list.each do |id, str|
@message.write([id, :alive_p])
end
@node_list.set_check_connection
deleted
end
|
#each_node_history(&block) ⇒ Object
121
122
123
|
# File 'lib/drbqs/server/message.rb', line 121
def each_node_history(&block)
@node_list.history.each(&block)
end
|
#get_all_nodes ⇒ Object
141
142
143
|
# File 'lib/drbqs/server/message.rb', line 141
def get_all_nodes
@node_list.list.dup
end
|
#get_message ⇒ Array
One of the following messages is returned.
- [:exit_server, nil]
- [:request_status, nil]
- [:request_history, nil]
- [:exit_after_task, node_id]
- [:wake_node, node_id]
- [:sleep_node, node_id]
- [:node_error, [node_id, error_message]]
- [:initialize, Array]
- [:finalize, Array]
27
28
29
30
31
32
33
34
|
# File 'lib/drbqs/server/message.rb', line 27
def get_message
begin
mes = @message.take([:server, Symbol, nil], 0)
manage_message(*mes[1..2])
rescue Rinda::RequestExpiredError
nil
end
end
|
#node_exist?(node_id) ⇒ Boolean
149
150
151
|
# File 'lib/drbqs/server/message.rb', line 149
def node_exist?(node_id)
@node_list.exist?(node_id)
end
|
#node_not_exist? ⇒ Boolean
145
146
147
|
# File 'lib/drbqs/server/message.rb', line 145
def node_not_exist?
@node_list.empty?
end
|
#send_exit ⇒ Object
Send all nodes a message to exit.
99
100
101
|
# File 'lib/drbqs/server/message.rb', line 99
def send_exit
send_signal_to_all_nodes(:exit)
end
|
#send_exit_after_task(node_id) ⇒ Object
116
117
118
119
|
# File 'lib/drbqs/server/message.rb', line 116
def send_exit_after_task(node_id)
@node_list.add_to_preparation_to_exit(node_id)
send_signal(node_id, :exit_after_task)
end
|
#send_finalization ⇒ Object
Send all nodes a message to finalize and exit.
112
113
114
|
# File 'lib/drbqs/server/message.rb', line 112
def send_finalization
send_signal_to_all_nodes(:finalize)
end
|
#send_history(history_string) ⇒ Object
133
134
135
136
137
138
139
|
# File 'lib/drbqs/server/message.rb', line 133
def send_history(history_string)
begin
@message.take([:history, nil], 0)
rescue Rinda::RequestExpiredError
end
@message.write([:history, history_string])
end
|
#send_sleep(node_id) ⇒ Object
103
104
105
|
# File 'lib/drbqs/server/message.rb', line 103
def send_sleep(node_id)
send_signal(node_id, :sleep)
end
|
#send_status(server_status_string) ⇒ Object
125
126
127
128
129
130
131
|
# File 'lib/drbqs/server/message.rb', line 125
def send_status(server_status_string)
begin
@message.take([:status, nil], 0)
rescue Rinda::RequestExpiredError
end
@message.write([:status, server_status_string])
end
|
#send_wake(node_id) ⇒ Object
107
108
109
|
# File 'lib/drbqs/server/message.rb', line 107
def send_wake(node_id)
send_signal(node_id, :wake)
end
|
#set_finalization_tasks(task_ary) ⇒ Object
172
173
174
|
# File 'lib/drbqs/server/message.rb', line 172
def set_finalization_tasks(task_ary)
set_special_task(:finalize, *task_ary)
end
|
#set_initialization_tasks(task_ary) ⇒ Object
If the task has already set,
the method overwrite old task of initialization by new task.
168
169
170
|
# File 'lib/drbqs/server/message.rb', line 168
def set_initialization_tasks(task_ary)
set_special_task(:initialize, *task_ary)
end
|
#shutdown_unused_nodes(calculating_nodes) ⇒ Object
176
177
178
179
180
181
182
183
184
185
|
# File 'lib/drbqs/server/message.rb', line 176
def shutdown_unused_nodes(calculating_nodes)
shutdown_nodes = []
@node_list.each do |node_id, id_str|
if !@node_list.prepare_to_exit?(node_id) && !calculating_nodes.include?(node_id)
send_exit_after_task(node_id)
shutdown_nodes << node_id
end
end
shutdown_nodes
end
|