File tree Expand file tree Collapse file tree 2 files changed +25
-10
lines changed Expand file tree Collapse file tree 2 files changed +25
-10
lines changed Original file line number Diff line number Diff line change 3
3
4
4
require_relative '../config/environment'
5
5
6
- Sagittarius ::Grpc ::Launcher . new . start_blocking
6
+ launcher = Sagittarius ::Grpc ::Launcher . new
7
+
8
+ stop_signals = %w[ QUIT INT TERM ]
9
+ stop_read , stop_write = IO . pipe
10
+
11
+ stop_signals . each do |signal |
12
+ Signal . trap ( signal ) do
13
+ stop_write . puts ( signal )
14
+ end
15
+ end
16
+
17
+ launcher . start
18
+
19
+ while ( readable_io = IO . select ( [ stop_read ] ) )
20
+ signal = readable_io . first [ 0 ] . gets . strip
21
+
22
+ if stop_signals . include? ( signal )
23
+ launcher . stop
24
+ break
25
+ end
26
+ end
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ class Launcher
7
7
8
8
HOST = '0.0.0.0:50051'
9
9
10
- def load
10
+ def create_server
11
11
@server = GRPC ::RpcServer . new ( interceptors : [
12
12
Sagittarius ::Middleware ::Grpc ::Context . new ,
13
13
Sagittarius ::Middleware ::Grpc ::Logger . new ,
@@ -26,26 +26,21 @@ def load
26
26
end
27
27
28
28
def run_server!
29
- load if @server . nil?
29
+ create_server if @server . nil?
30
30
logger . info ( 'Running server' )
31
- @server . run_till_terminated_or_interrupted ( %w[ QUIT INT TERM ] )
31
+ @server . run_till_terminated_or_interrupted ( [ ] )
32
32
end
33
33
34
34
def run_stream_listener!
35
35
GrpcStreamHandler . listen!
36
36
end
37
37
38
38
def start
39
- load
39
+ create_server
40
40
@stream_thread = Thread . new { run_stream_listener! }
41
41
@server_thread = Thread . new { run_server! }
42
42
end
43
43
44
- def start_blocking
45
- start
46
- @server_thread . join # Wait for the server thread to finish because the program would end otherwise
47
- end
48
-
49
44
def stop
50
45
@server . stop
51
46
@server_thread . join
You can’t perform that action at this time.
0 commit comments