flatware 2.2.1 → 2.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/flatware/sink/signal.rb +51 -0
- data/lib/flatware/sink.rb +3 -23
- data/lib/flatware/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3dfa03a78403cf9d0b10b97ac354baba9353a6847bcbbc9b150b7deaa8a4f68
|
4
|
+
data.tar.gz: e2181f1f91b2b313ab42d39c93ce209efc432b29192737f7b9d5e06d13f637ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63b9c6f997e89382276b56797cf0e0b53155c30e11a5e22157c03a93da7cd616bffde249283a6ed7a29affc1b9da5baa211c2963e98402998068c7a9f856ed33
|
7
|
+
data.tar.gz: dba4525f41243955e2f0f3db5a8685031a38eb66192de319c110eae41450fcd55ad995d56c3025e01cb8ad61a50dce04dec4dcc1e45ed54f36dfe011554f5339
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Flatware
|
2
|
+
module Sink
|
3
|
+
class Signal
|
4
|
+
def initialize(&on_interrupt)
|
5
|
+
Thread.main[:signals] = Queue.new
|
6
|
+
|
7
|
+
@on_interrupt = on_interrupt
|
8
|
+
end
|
9
|
+
|
10
|
+
def interruped?
|
11
|
+
!signals.empty?
|
12
|
+
end
|
13
|
+
|
14
|
+
def listen
|
15
|
+
Thread.new(&method(:handle_signals))
|
16
|
+
|
17
|
+
::Signal.trap('INT') { signals << :int }
|
18
|
+
::Signal.trap('CLD') { signals << :cld }
|
19
|
+
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.listen(&block)
|
24
|
+
new(&block).listen
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def handle_signals
|
30
|
+
puts signal_message(signals.pop)
|
31
|
+
Process.waitall
|
32
|
+
@on_interrupt.call
|
33
|
+
puts 'done.'
|
34
|
+
abort
|
35
|
+
end
|
36
|
+
|
37
|
+
def signal_message(signal)
|
38
|
+
format(<<~MESSAGE, { cld: 'A worker died', int: 'Interrupted' }.fetch(signal))
|
39
|
+
|
40
|
+
%s!
|
41
|
+
|
42
|
+
Cleaning up. Please wait...
|
43
|
+
MESSAGE
|
44
|
+
end
|
45
|
+
|
46
|
+
def signals
|
47
|
+
Thread.main[:signals]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/flatware/sink.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'drb/drb'
|
2
2
|
require 'set'
|
3
|
+
require 'flatware/sink/signal'
|
3
4
|
|
4
5
|
module Flatware
|
5
6
|
module Sink
|
@@ -31,7 +32,7 @@ module Flatware
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def start
|
34
|
-
|
35
|
+
@signal = Signal.listen(&method(:summarize_remaining))
|
35
36
|
formatter.jobs jobs
|
36
37
|
DRb.start_service(sink, self, verbose: Flatware.verbose?)
|
37
38
|
DRb.thread.join
|
@@ -72,29 +73,8 @@ module Flatware
|
|
72
73
|
|
73
74
|
private
|
74
75
|
|
75
|
-
def trap_interrupt
|
76
|
-
Thread.main[:signals] = Queue.new
|
77
|
-
|
78
|
-
Thread.new(&method(:handle_interrupt))
|
79
|
-
|
80
|
-
trap 'INT' do
|
81
|
-
Thread.main[:signals] << :int
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def handle_interrupt
|
86
|
-
Thread.main[:signals].pop
|
87
|
-
puts 'Interrupted!'
|
88
|
-
summarize_remaining
|
89
|
-
puts "\n\nCleaning up. Please wait...\n"
|
90
|
-
Process.waitall
|
91
|
-
puts 'done.'
|
92
|
-
abort
|
93
|
-
end
|
94
|
-
|
95
76
|
def interruped?
|
96
|
-
|
97
|
-
signals && !signals.empty?
|
77
|
+
@signal&.interruped?
|
98
78
|
end
|
99
79
|
|
100
80
|
def check_finished!
|
data/lib/flatware/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flatware
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Dunn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-03-
|
11
|
+
date: 2024-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- lib/flatware/serialized_exception.rb
|
46
46
|
- lib/flatware/sink.rb
|
47
47
|
- lib/flatware/sink/client.rb
|
48
|
+
- lib/flatware/sink/signal.rb
|
48
49
|
- lib/flatware/version.rb
|
49
50
|
- lib/flatware/worker.rb
|
50
51
|
homepage: http://github.com/briandunn/flatware
|