arsenicum 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/arsenicum/core/broker.rb +5 -1
- data/lib/arsenicum/core/worker.rb +21 -2
- data/lib/arsenicum/main.rb +5 -2
- data/lib/arsenicum/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27b879f93b75e38c1799be9550a235779497b313
|
4
|
+
data.tar.gz: f2de0aa396dcb3ec54f80a36a88ce69e49b31489
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97a35d672a0d6fd3f42ef2b7d8fdbeed32b8b768aab0a60f3bba8cb3964a544f05749d6523d1ae35e4a315cfaf9067544c49f44672575cbc493d847ca9dc0a02
|
7
|
+
data.tar.gz: 5e9d80d8df1ae7eed0f5502d081645645f8141d0c858ecf9ed57bb9a76cff79847327b006afc2a4c41cce038802550a3d2b70f9d3cc0ae3fbcba7e5e281846de
|
@@ -55,6 +55,10 @@ class Arsenicum::Core::Broker
|
|
55
55
|
broker success_handler, failure_handler, task_id, parameters
|
56
56
|
end
|
57
57
|
|
58
|
+
def stop
|
59
|
+
workers.values.map(&:stop)
|
60
|
+
end
|
61
|
+
|
58
62
|
def remove(worker)
|
59
63
|
mutex.synchronize do
|
60
64
|
workers.delete(worker.pid)
|
@@ -63,7 +67,7 @@ class Arsenicum::Core::Broker
|
|
63
67
|
end
|
64
68
|
|
65
69
|
def reload
|
66
|
-
workers.each(&:stop)
|
70
|
+
workers.values.each(&:stop)
|
67
71
|
|
68
72
|
workers.clear
|
69
73
|
available_workers.clear
|
@@ -67,6 +67,9 @@ class Arsenicum::Core::Worker
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def stop
|
70
|
+
thread.terminate
|
71
|
+
return if Process.waitpid pid, Process::WNOHANG
|
72
|
+
|
70
73
|
write_message ctrl_out_parent, COMMAND_STOP
|
71
74
|
Process.waitpid pid
|
72
75
|
end
|
@@ -91,6 +94,13 @@ class Arsenicum::Core::Worker
|
|
91
94
|
end
|
92
95
|
end
|
93
96
|
|
97
|
+
def active?
|
98
|
+
case state
|
99
|
+
when :waiting, :busy
|
100
|
+
true
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
94
104
|
def switch_state(state)
|
95
105
|
@state = state
|
96
106
|
$0 = process_name
|
@@ -141,7 +151,8 @@ class Arsenicum::Core::Worker
|
|
141
151
|
control, = read_message ctrl_in_child
|
142
152
|
case control
|
143
153
|
when CONTROL_STOP
|
144
|
-
|
154
|
+
info message: '[Control]Received stop command.'
|
155
|
+
thread.terminate
|
145
156
|
switch_state :stopped
|
146
157
|
end
|
147
158
|
end
|
@@ -205,13 +216,21 @@ class Arsenicum::Core::Worker
|
|
205
216
|
def initialize(worker)
|
206
217
|
super do
|
207
218
|
loop do
|
208
|
-
|
219
|
+
begin
|
220
|
+
next sleep(0.5) unless task_request
|
221
|
+
rescue Interrupt
|
222
|
+
break
|
223
|
+
end
|
209
224
|
(success_handler, failure_handler, task_id, parameter) = task_request
|
210
225
|
|
211
226
|
begin
|
212
227
|
worker.ask task_id, *parameter
|
213
228
|
info worker, message: "Completed processing: #{task_id}"
|
214
229
|
success_handler.call
|
230
|
+
rescue Interrupt => e
|
231
|
+
error worker, exception: e
|
232
|
+
failure_handler.call e
|
233
|
+
break
|
215
234
|
rescue Exception => e
|
216
235
|
error worker, exception: e
|
217
236
|
failure_handler.call e
|
data/lib/arsenicum/main.rb
CHANGED
data/lib/arsenicum/version.rb
CHANGED