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 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: []