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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ac8260579321a152af6b38fe4305936934ede2893c1b9ede48a1c85563aad8d
4
- data.tar.gz: 93a8e6145c9d53e94ed3443d46dc64c55460638a60eab2097bc563eff9f2b724
3
+ metadata.gz: 975698c3877ded2e7599a5aaf11ffa3c8781356f7d84c4260573ee39d62343e5
4
+ data.tar.gz: 7c28ab28e041f75cda185407754c930cb6f09e4aeac675aa5e742f85c67e0325
5
5
  SHA512:
6
- metadata.gz: 59148c981335471f2c57d0caca09b1b8272008180fbe045e2f5f13988996c020741930419c4df73570811d148bd66df89f2c5aa260767852df6fd8627f711bb3
7
- data.tar.gz: f0ba2792523825f164376e19a841274c685aca4dab7c8f32a5b88a496c97dcbb5eb5a077a36b417029ad3cf1db885df300c096164b840b3c06b3387c91a5ad8a
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: #{HALO.bytesize}\r\n"
146
+ stream << "Content-Length: #{halo.bytesize}\r\n"
145
147
  stream << "Date: #{t.httpdate}\r\n"
146
148
  stream << "\r\n"
147
- stream << HALO if (method == 'GET')
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
- server_socket_local_address = server_socket.local_address
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: #{server_socket_local_address.inspect_sockaddr}")
325
+ @logger.info("close server socket: #{server_socket_address}")
316
326
  else
317
- @logger.warn("failed to close server socket: #{server_socket_local_address.inspect_sockaddr}")
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.local_address.inspect_sockaddr}")
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.local_address.inspect_sockaddr}")
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.local_address.inspect_sockaddr}")
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.local_address.inspect_sockaddr}")
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
- unless (@stat_operation_queue.empty?) then
305
- while (stat_ope = @stat_operation_queue.shift)
306
- case (stat_ope)
307
- when :get_and_reset
308
- queue.stat_start
309
- @at_stat.call(queue.stat_get(reset: true))
310
- @at_stat_get.call(true)
311
- when :get
312
- queue.stat_start
313
- @at_stat.call(queue.stat_get(reset: false))
314
- @at_stat_get.call(false)
315
- when :stop
316
- queue.stat_stop
317
- @at_stat_stop.call
318
- else
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
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  module Riser
4
- VERSION = '0.1.3'.freeze
4
+ VERSION = '0.1.4'.freeze
5
5
  end
6
6
 
7
7
  # Local Variables:
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.3
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-15 00:00:00.000000000 Z
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: " Riser is a library of Ruby Infrastructure for cooperative multi-thread/multi-process
70
- SERver.\n This library is useful to make multi-thread/multi-process socket server
71
- and daemon. \n"
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: []