riser 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|