riser 0.1.3 → 0.1.4
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/example/halo.rb +5 -3
- data/lib/riser/daemon.rb +20 -8
- data/lib/riser/server.rb +15 -17
- data/lib/riser/version.rb +1 -1
- data/riser.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 975698c3877ded2e7599a5aaf11ffa3c8781356f7d84c4260573ee39d62343e5
|
4
|
+
data.tar.gz: 7c28ab28e041f75cda185407754c930cb6f09e4aeac675aa5e742f85c67e0325
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3018b4967b5e4d722d1f969613a741e1bf40073e48af87bfa63c9898183a99699516a55e35cbb554fe0a0b5cefc2bdb5f99c0f74d0a177b684d801a592e3f182
|
7
|
+
data.tar.gz: 3e811b04172f0855f82e0f86c2b049781dff8f13ceaa4437c4f6e43d1bea7f4d99dc8a9a1d6ebe620a81d23bd154c2af3e40577735a1a49f4163315d11db8026
|
data/example/halo.rb
CHANGED
@@ -48,11 +48,11 @@ OptionParser.new{|opts|
|
|
48
48
|
}.parse!
|
49
49
|
|
50
50
|
name = File.basename($0, '.rb')
|
51
|
-
HALO = IO.read(File.join(File.dirname($0), "#{name}.html"))
|
52
51
|
server_log = File.join(File.dirname($0), "#{name}.log")
|
53
52
|
protocol_log = File.join(File.dirname($0), 'protocol.log')
|
54
53
|
status_file = File.join(File.dirname($0), "#{name}.pid")
|
55
54
|
config_path = File.join(File.dirname($0), "#{name}.yml")
|
55
|
+
halo_html = File.join(File.dirname($0), "#{name}.html")
|
56
56
|
|
57
57
|
config = YAML.load_file(config_path)['daemon']
|
58
58
|
|
@@ -107,6 +107,8 @@ Riser::Daemon.start_daemon(daemonize: options[:daemonize],
|
|
107
107
|
server.preprocess{ logger.info('preprocess') }
|
108
108
|
server.postprocess{ logger.info('postprocess') }
|
109
109
|
|
110
|
+
halo = File.read(halo_html)
|
111
|
+
|
110
112
|
server.dispatch{|socket|
|
111
113
|
begin
|
112
114
|
read_poll = Riser::ReadPoll.new(socket)
|
@@ -141,10 +143,10 @@ Riser::Daemon.start_daemon(daemonize: options[:daemonize],
|
|
141
143
|
when 'GET', 'HEAD'
|
142
144
|
stream << "HTTP/1.0 200 OK\r\n"
|
143
145
|
stream << "Content-Type: text/html\r\n"
|
144
|
-
stream << "Content-Length: #{
|
146
|
+
stream << "Content-Length: #{halo.bytesize}\r\n"
|
145
147
|
stream << "Date: #{t.httpdate}\r\n"
|
146
148
|
stream << "\r\n"
|
147
|
-
stream <<
|
149
|
+
stream << halo if (method == 'GET')
|
148
150
|
else
|
149
151
|
stream << "HTTP/1.0 405 Method Not Allowed\r\n"
|
150
152
|
stream << "Content-Type: text/plain\r\n"
|
data/lib/riser/daemon.rb
CHANGED
@@ -70,6 +70,16 @@ module Riser
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
def get_socket_address(server_socket)
|
74
|
+
begin
|
75
|
+
server_socket.local_address.inspect_sockaddr
|
76
|
+
rescue
|
77
|
+
@logger.error("failed to get socket address: #{server_socket} [#{$!} (#{$!.class})]")
|
78
|
+
@logger.debug($!) if @logger.debug?
|
79
|
+
nil
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
73
83
|
def listen(server_socket, backlog)
|
74
84
|
begin
|
75
85
|
server_socket.listen(backlog)
|
@@ -309,12 +319,12 @@ module Riser
|
|
309
319
|
|
310
320
|
def server_socket_close(server_socket, server_address)
|
311
321
|
# get local_address before close(2)
|
312
|
-
|
322
|
+
server_socket_address = @sysop.get_socket_address(server_socket) || server_address
|
313
323
|
|
314
324
|
if (@sysop.close(server_socket)) then
|
315
|
-
@logger.info("close server socket: #{
|
325
|
+
@logger.info("close server socket: #{server_socket_address}")
|
316
326
|
else
|
317
|
-
@logger.warn("failed to close server socket: #{
|
327
|
+
@logger.warn("failed to close server socket: #{server_socket_address}")
|
318
328
|
end
|
319
329
|
|
320
330
|
if (server_address.type == :unix) then
|
@@ -353,7 +363,7 @@ module Riser
|
|
353
363
|
|
354
364
|
server = SocketServer.new
|
355
365
|
@server_setup.call(server)
|
356
|
-
server.setup(server_socket)
|
366
|
+
server.setup(server_socket) # ready to accept signal(2)
|
357
367
|
Signal.trap(SIGNAL_STOP_GRACEFUL) { server.signal_stop_graceful }
|
358
368
|
Signal.trap(SIGNAL_STOP_FORCED) { server.signal_stop_forced }
|
359
369
|
Signal.trap(SIGNAL_STAT_GET_AND_RESET) { server.signal_stat_get(reset: true) }
|
@@ -365,7 +375,9 @@ module Riser
|
|
365
375
|
raise
|
366
376
|
end
|
367
377
|
@logger.close
|
378
|
+
|
368
379
|
latch_write_io.puts("server process (pid: #{$$}) is ready to go.")
|
380
|
+
latch_write_io.close
|
369
381
|
|
370
382
|
server.start(server_socket)
|
371
383
|
}
|
@@ -413,7 +425,7 @@ module Riser
|
|
413
425
|
@logger.fatal('failed to start daemon.')
|
414
426
|
return 1
|
415
427
|
end
|
416
|
-
@logger.info("open server socket: #{server_socket
|
428
|
+
@logger.info("open server socket: #{@sysop.get_socket_address(server_socket) || server_address}")
|
417
429
|
|
418
430
|
begin
|
419
431
|
server_socket_option(server_socket, server_address)
|
@@ -454,16 +466,16 @@ module Riser
|
|
454
466
|
end
|
455
467
|
else
|
456
468
|
if (next_server_socket = @sysop.get_server_socket(next_server_address)) then
|
457
|
-
@logger.info("open server socket: #{next_server_socket
|
469
|
+
@logger.info("open server socket: #{@sysop.get_socket_address(next_server_socket) || next_server_address}")
|
458
470
|
server_socket_close(server_socket, server_address)
|
459
471
|
server_socket = next_server_socket
|
460
472
|
server_address = next_server_address
|
461
473
|
else
|
462
|
-
@logger.warn("server socket continue: #{server_socket
|
474
|
+
@logger.warn("server socket continue: #{@sysop.get_socket_address(server_socket) || server_address}")
|
463
475
|
end
|
464
476
|
end
|
465
477
|
else
|
466
|
-
@logger.warn("server socket continue: #{server_socket
|
478
|
+
@logger.warn("server socket continue: #{@sysop.get_socket_address(server_socket) || server_address}")
|
467
479
|
end
|
468
480
|
server_socket_option(server_socket, server_address)
|
469
481
|
|
data/lib/riser/server.rb
CHANGED
@@ -301,23 +301,21 @@ module Riser
|
|
301
301
|
end
|
302
302
|
|
303
303
|
def apply_signal_stat(queue)
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
raise "internal error: unknown stat operation <#{stat_ope.inspect}>"
|
320
|
-
end
|
304
|
+
while (stat_ope = @stat_operation_queue.shift)
|
305
|
+
case (stat_ope)
|
306
|
+
when :get_and_reset
|
307
|
+
queue.stat_start
|
308
|
+
@at_stat.call(queue.stat_get(reset: true))
|
309
|
+
@at_stat_get.call(true)
|
310
|
+
when :get
|
311
|
+
queue.stat_start
|
312
|
+
@at_stat.call(queue.stat_get(reset: false))
|
313
|
+
@at_stat_get.call(false)
|
314
|
+
when :stop
|
315
|
+
queue.stat_stop
|
316
|
+
@at_stat_stop.call
|
317
|
+
else
|
318
|
+
raise "internal error: unknown stat operation <#{stat_ope.inspect}>"
|
321
319
|
end
|
322
320
|
end
|
323
321
|
end
|
data/lib/riser/version.rb
CHANGED
data/riser.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.summary = %q{Riser is a library of Ruby Infrastructure for cooperative multi-thread/multi-process SERver}
|
14
14
|
spec.description = <<-'EOF'
|
15
15
|
Riser is a library of Ruby Infrastructure for cooperative multi-thread/multi-process SERver.
|
16
|
-
This library is useful to make multi-thread/multi-process socket server and daemon.
|
16
|
+
This library is useful to make multi-thread/multi-process socket server and daemon.
|
17
17
|
EOF
|
18
18
|
spec.homepage = "https://github.com/y10k/riser"
|
19
19
|
spec.license = "MIT"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TOKI Yoshinori
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,9 +66,9 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
description:
|
70
|
-
|
71
|
-
|
69
|
+
description: |2
|
70
|
+
Riser is a library of Ruby Infrastructure for cooperative multi-thread/multi-process SERver.
|
71
|
+
This library is useful to make multi-thread/multi-process socket server and daemon.
|
72
72
|
email:
|
73
73
|
- toki@freedom.ne.jp
|
74
74
|
executables: []
|