bayserver-core 3.0.2 → 3.3.1

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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/lib/baykit/bayserver/agent/command_receiver.rb +2 -0
  3. data/lib/baykit/bayserver/agent/grand_agent.rb +145 -133
  4. data/lib/baykit/bayserver/agent/letters/accepted_letter.rb +17 -0
  5. data/lib/baykit/bayserver/agent/letters/closed_letter.rb +14 -0
  6. data/lib/baykit/bayserver/agent/letters/connected_letter.rb +14 -0
  7. data/lib/baykit/bayserver/agent/letters/error_letter.rb +16 -0
  8. data/lib/baykit/bayserver/agent/letters/letter.rb +19 -0
  9. data/lib/baykit/bayserver/agent/letters/package.rb +9 -0
  10. data/lib/baykit/bayserver/agent/letters/read_letter.rb +20 -0
  11. data/lib/baykit/bayserver/agent/letters/wrote_letter.rb +17 -0
  12. data/lib/baykit/bayserver/agent/monitor/grand_agent_monitor.rb +49 -49
  13. data/lib/baykit/bayserver/agent/multiplexer/job_multiplexer.rb +47 -32
  14. data/lib/baykit/bayserver/agent/multiplexer/job_multiplexer_base.rb +5 -0
  15. data/lib/baykit/bayserver/agent/multiplexer/multiplexer_base.rb +12 -28
  16. data/lib/baykit/bayserver/agent/multiplexer/plain_transporter.rb +20 -5
  17. data/lib/baykit/bayserver/agent/multiplexer/spider_multiplexer.rb +125 -87
  18. data/lib/baykit/bayserver/agent/multiplexer/spin_multiplexer.rb +24 -19
  19. data/lib/baykit/bayserver/agent/multiplexer/taxi_multiplexer.rb +21 -15
  20. data/lib/baykit/bayserver/bay_log.rb +20 -16
  21. data/lib/baykit/bayserver/bayserver.rb +8 -15
  22. data/lib/baykit/bayserver/common/cities.rb +1 -1
  23. data/lib/baykit/bayserver/common/inbound_ship.rb +5 -45
  24. data/lib/baykit/bayserver/common/inbound_ship_store.rb +0 -1
  25. data/lib/baykit/bayserver/common/multiplexer.rb +5 -1
  26. data/lib/baykit/bayserver/{agent/multiplexer → common}/rudder_state.rb +42 -11
  27. data/lib/baykit/bayserver/common/rudder_state_store.rb +63 -0
  28. data/lib/baykit/bayserver/{agent/multiplexer → common}/transporter.rb +2 -4
  29. data/lib/baykit/bayserver/common/warp_ship.rb +12 -7
  30. data/lib/baykit/bayserver/{agent/multiplexer → common}/write_unit.rb +2 -4
  31. data/lib/baykit/bayserver/docker/base/inbound_data_listener.rb +0 -1
  32. data/lib/baykit/bayserver/docker/base/port_base.rb +5 -5
  33. data/lib/baykit/bayserver/docker/base/warp_base.rb +7 -4
  34. data/lib/baykit/bayserver/docker/built_in/built_in_city_docker.rb +1 -1
  35. data/lib/baykit/bayserver/docker/built_in/built_in_harbor_docker.rb +25 -2
  36. data/lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb +43 -35
  37. data/lib/baykit/bayserver/docker/harbor.rb +14 -0
  38. data/lib/baykit/bayserver/docker/send_file/file_content.rb +66 -0
  39. data/lib/baykit/bayserver/docker/send_file/file_content_handler.rb +113 -29
  40. data/lib/baykit/bayserver/docker/send_file/file_store.rb +117 -0
  41. data/lib/baykit/bayserver/docker/send_file/send_file_docker.rb +13 -5
  42. data/lib/baykit/bayserver/docker/send_file/send_file_ship.rb +11 -2
  43. data/lib/baykit/bayserver/docker/send_file/wait_file_ship.rb +92 -0
  44. data/lib/baykit/bayserver/mem_usage.rb +2 -0
  45. data/lib/baykit/bayserver/protocol/packet.rb +2 -1
  46. data/lib/baykit/bayserver/protocol/packet_part_accessor.rb +5 -5
  47. data/lib/baykit/bayserver/protocol/protocol_exception.rb +7 -1
  48. data/lib/baykit/bayserver/rudders/io_rudder.rb +2 -2
  49. data/lib/baykit/bayserver/rudders/rudder.rb +4 -0
  50. data/lib/baykit/bayserver/rudders/rudder_base.rb +21 -0
  51. data/lib/baykit/bayserver/tours/req_content_handler.rb +13 -13
  52. data/lib/baykit/bayserver/tours/tour.rb +18 -13
  53. data/lib/baykit/bayserver/tours/tour_req.rb +13 -15
  54. data/lib/baykit/bayserver/tours/tour_res.rb +42 -19
  55. data/lib/baykit/bayserver/util/cgi_util.rb +7 -2
  56. data/lib/baykit/bayserver/util/headers.rb +2 -2
  57. data/lib/baykit/bayserver/util/http_status.rb +7 -0
  58. data/lib/baykit/bayserver/util/http_util.rb +16 -0
  59. data/lib/baykit/bayserver/util/nio_selector.rb +103 -0
  60. data/lib/baykit/bayserver/util/rb_selector.rb +55 -0
  61. data/lib/baykit/bayserver/util/selector.rb +43 -80
  62. data/lib/baykit/bayserver/util/simple_buffer.rb +1 -1
  63. data/lib/baykit/bayserver/version.rb +1 -1
  64. metadata +24 -21
  65. data/lib/baykit/bayserver/agent/accept_handler.rb +0 -71
  66. data/lib/baykit/bayserver/agent/channel_listener.rb +0 -35
  67. data/lib/baykit/bayserver/agent/letter.rb +0 -30
  68. data/lib/baykit/bayserver/agent/transporter/data_listener.rb +0 -38
  69. data/lib/baykit/bayserver/agent/transporter/package.rb +0 -0
  70. data/lib/baykit/bayserver/agent/transporter/spin_read_transporter.rb +0 -111
  71. data/lib/baykit/bayserver/agent/transporter/spin_write_transporter.rb +0 -125
  72. data/lib/baykit/bayserver/agent/transporter/transporter.rb +0 -332
  73. data/lib/baykit/bayserver/docker/built_in/log_boat.rb +0 -71
  74. data/lib/baykit/bayserver/tours/send_file_yacht.rb +0 -97
  75. data/lib/baykit/bayserver/watercraft/boat.rb +0 -43
  76. data/lib/baykit/bayserver/watercraft/yacht.rb +0 -42
@@ -0,0 +1,103 @@
1
+ require "nio"
2
+ require "thread"
3
+ require 'baykit/bayserver/util/selector'
4
+
5
+ module Baykit
6
+ module BayServer
7
+ module Util
8
+ class NioSelector < Selector
9
+
10
+ attr :selector
11
+ attr :io_monitor_map
12
+
13
+ def initialize
14
+ super
15
+
16
+ @selector = NIO::Selector.new
17
+ @io_monitor_map = {} # io -> monitor(:r)
18
+ end
19
+ def select(timeout_sec=nil)
20
+ timeout_sec = 0 if timeout_sec.nil?
21
+ ready_mon_list = @selector.select(timeout_sec)
22
+
23
+ result = {}
24
+ if ready_mon_list
25
+ ready_mon_list.each do |mon|
26
+ io = mon.io
27
+ if mon.readable?
28
+ register_read(io, result)
29
+ end
30
+ if mon.writable?
31
+ register_write(io, result)
32
+ end
33
+ end
34
+ end
35
+ result
36
+ end
37
+
38
+ def count
39
+ @lock.synchronize { @ops.length }
40
+ end
41
+
42
+ private
43
+ def register_read(io, io_op)
44
+
45
+ if !@io_op_map.key?(io)
46
+ @io_monitor_map[io] = @selector.register(io, :r)
47
+ else
48
+ op = @io_op_map[io]
49
+ if op & OP_WRITE != 0
50
+ @io_monitor_map[io].interests = :rw
51
+ end
52
+ end
53
+
54
+ super # Update @io_monitor_map
55
+ end
56
+
57
+ def register_write(io, io_op)
58
+
59
+ if !@io_op_map.key?(io)
60
+ @io_monitor_map[io] = @selector.register(io, :w)
61
+ else
62
+ op = @io_op_map[io]
63
+ if op & OP_READ != 0
64
+ @io_monitor_map[io].interests = :rw
65
+ end
66
+ end
67
+
68
+ super # Update @io_monitor_map
69
+ end
70
+
71
+ def unregister_read(io, io_op)
72
+
73
+ if @io_op_map.key?(io)
74
+ op = @io_op_map[io]
75
+ if op & OP_WRITE != 0
76
+ @io_monitor_map[io].interests = :w
77
+ else
78
+ @selector.deregister(io)
79
+ end
80
+ end
81
+
82
+ super # Update @io_monitor_map
83
+ end
84
+
85
+
86
+ def unregister_write(io, io_op)
87
+
88
+ if @io_op_map.key?(io)
89
+ op = @io_op_map[io]
90
+ if op & OP_READ != 0
91
+ @io_monitor_map[io].interests = :r
92
+ else
93
+ @selector.deregister(io)
94
+ end
95
+ end
96
+
97
+ super # Update @io_monitor_map
98
+ end
99
+
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,55 @@
1
+ require 'baykit/bayserver/util/selector'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Util
6
+
7
+ class RbSelector < Selector
8
+
9
+ def initialize
10
+ super
11
+ end
12
+
13
+ def select(timeout_sec = nil)
14
+ if timeout_sec == nil
15
+ timeout_sec = 0
16
+ end
17
+ except_list = []
18
+
19
+ read_list = []
20
+ write_list = []
21
+ @lock.synchronize do
22
+ @io_op_map.keys().each do |io|
23
+ if (@io_op_map[io] & OP_READ) != 0
24
+ read_list << io
25
+ end
26
+ if (@io_op_map[io] & OP_WRITE) != 0
27
+ write_list << io
28
+ end
29
+ end
30
+ end
31
+ #BayLog.debug("Select read_list=%s", read_list)
32
+ #BayLog.debug("Select write_list=%s", write_list)
33
+ selected_read_list, selected_write_list = Kernel.select(read_list, write_list, except_list, timeout_sec)
34
+
35
+ result = {}
36
+ if selected_read_list != nil
37
+ selected_read_list.each do |io|
38
+ register_read(io, result)
39
+ end
40
+ end
41
+
42
+ if selected_write_list != nil
43
+ selected_write_list.each do |io|
44
+ register_write(io, result)
45
+ end
46
+ end
47
+
48
+ return result
49
+ end
50
+
51
+ end
52
+ end
53
+ end
54
+ end
55
+
@@ -9,150 +9,113 @@ module Baykit
9
9
  OP_READ = 1
10
10
  OP_WRITE = 2
11
11
 
12
- attr :channels
12
+ attr :io_op_map
13
13
  attr :lock
14
14
 
15
15
  def initialize
16
- @channels = {}
16
+ @io_op_map = {}
17
17
  @lock = Mutex.new()
18
18
  end
19
19
 
20
20
  def register(ch, op)
21
- #BayLog.debug("register io=%s", ch)
22
- if not ((ch.kind_of? IO) || (ch.kind_of? OpenSSL::SSL::SSLSocket))
23
- raise ArgumentError
24
- end
21
+ validate_channel(ch)
25
22
  if op & OP_READ != 0
26
- register_read(ch, @channels)
23
+ register_read(ch, @io_op_map)
27
24
  end
28
25
  if op & OP_WRITE != 0
29
- register_write(ch, @channels)
26
+ register_write(ch, @io_op_map)
30
27
  end
31
28
  end
32
29
 
33
30
  def unregister(ch)
34
- #BayLog.debug("unregister io=%s", ch)
35
- if not ((ch.kind_of? IO) || (ch.kind_of? OpenSSL::SSL::SSLSocket))
36
- raise ArgumentError
37
- end
38
- unregister_read(ch, @channels)
39
- unregister_write(ch, @channels)
31
+ validate_channel(ch)
32
+ unregister_read(ch, @io_op_map)
33
+ unregister_write(ch, @io_op_map)
40
34
  end
41
35
 
42
36
  def modify(ch, op)
43
- if not ((ch.kind_of? IO) || (ch.kind_of? OpenSSL::SSL::SSLSocket))
44
- raise ArgumentError
45
- end
37
+ validate_channel(ch)
46
38
  if op & OP_READ != 0
47
- register_read(ch, @channels)
39
+ register_read(ch, @io_op_map)
48
40
  else
49
- unregister_read(ch, @channels)
41
+ unregister_read(ch, @io_op_map)
50
42
  end
51
43
 
52
44
  if op & OP_WRITE != 0
53
- register_write(ch, @channels)
45
+ register_write(ch, @io_op_map)
54
46
  else
55
- unregister_write(ch, @channels)
47
+ unregister_write(ch, @io_op_map)
56
48
  end
57
49
  end
58
50
 
59
51
  def get_op(ch)
60
- if not ((ch.kind_of? IO) || (ch.kind_of? OpenSSL::SSL::SSLSocket))
61
- raise ArgumentError
62
- end
63
- return @channels[ch]
52
+ validate_channel(ch)
53
+ return @io_op_map[ch]
64
54
  end
65
55
 
66
- def select(timeout_sec = nil)
67
- if timeout_sec == nil
68
- timeout_sec = 0
69
- end
70
- except_list = []
71
-
72
- read_list = []
73
- write_list = []
56
+ def count
74
57
  @lock.synchronize do
75
- @channels.keys().each do |ch|
76
- if (@channels[ch] & OP_READ) != 0
77
- read_list << ch
78
- end
79
- if (@channels[ch] & OP_WRITE) != 0
80
- write_list << ch
81
- end
82
- end
83
- end
84
- #BayLog.debug("Select read_list=%s", read_list)
85
- #BayLog.debug("Select write_list=%s", write_list)
86
- selected_read_list, selected_write_list = Kernel.select(read_list, write_list, except_list, timeout_sec)
87
-
88
- result = {}
89
- if selected_read_list != nil
90
- selected_read_list.each do |ch|
91
- register_read(ch, result)
92
- end
93
- end
94
-
95
- if selected_write_list != nil
96
- selected_write_list.each do |ch|
97
- register_write(ch, result)
98
- end
58
+ return @io_op_map.length
99
59
  end
60
+ end
100
61
 
101
- return result
62
+ def select(timeout_sec = nil)
63
+ raise NotImplementedError
102
64
  end
103
65
 
104
- def count
105
- @lock.synchronize do
106
- return @channels.length
66
+ def validate_channel(ch)
67
+ unless ch.is_a?(IO) || (defined?(OpenSSL::SSL::SSLSocket) && ch.is_a?(OpenSSL::SSL::SSLSocket))
68
+ raise ArgumentError
107
69
  end
108
70
  end
109
71
 
110
72
  private
111
-
112
- def register_read(ch, ch_list)
73
+ def register_read(io, io_op)
113
74
  @lock.synchronize do
114
- if ch_list.include?(ch)
115
- ch_list[ch] = (ch_list[ch] | OP_READ)
75
+ if io_op.key?(io)
76
+ io_op[io] = (io_op[io] | OP_READ)
116
77
  else
117
- ch_list[ch] = OP_READ
78
+ io_op[io] = OP_READ
118
79
  end
119
80
  end
120
81
  end
121
82
 
122
- def register_write(ch, ch_list)
83
+ def register_write(io, io_op)
123
84
  @lock.synchronize do
124
- if ch_list.include?(ch)
125
- ch_list[ch] = (ch_list[ch] | OP_WRITE)
85
+ if io_op.key?(io)
86
+ io_op[io] = (io_op[io] | OP_WRITE)
126
87
  else
127
- ch_list[ch] = OP_WRITE
88
+ io_op[io] = OP_WRITE
128
89
  end
129
90
  end
130
91
  end
131
92
 
132
- def unregister_read(ch, ch_list)
93
+ def unregister_read(io, io_op)
133
94
  @lock.synchronize do
134
- if ch_list.include?(ch)
135
- if ch_list[ch] == OP_READ
136
- ch_list.delete(ch)
95
+ if io_op.include?(io)
96
+ if io_op[io] == OP_READ
97
+ io_op.delete(io)
137
98
  else
138
- ch_list[ch] = OP_WRITE
99
+ io_op[io] = OP_WRITE
139
100
  end
140
101
  end
141
102
  end
142
103
  end
143
104
 
144
105
 
145
- def unregister_write(ch, ch_list)
106
+ def unregister_write(io, io_op)
146
107
  @lock.synchronize do
147
- if ch_list.include?(ch)
148
- if ch_list[ch] == OP_WRITE
149
- ch_list.delete(ch)
108
+ if io_op.include?(io)
109
+ if io_op[io] == OP_WRITE
110
+ io_op.delete(io)
150
111
  else
151
- ch_list[ch] = OP_READ
112
+ io_op[io] = OP_READ
152
113
  end
153
114
  end
154
115
  end
155
116
  end
117
+
118
+
156
119
  end
157
120
  end
158
121
  end
@@ -29,7 +29,7 @@ module Baykit
29
29
  end
30
30
 
31
31
  def put_byte(b)
32
- put([b], 0, 1);
32
+ put(b.chr, 0, 1);
33
33
  end
34
34
 
35
35
  def put(bytes, pos=0, len=bytes.length)
@@ -1,7 +1,7 @@
1
1
  module Baykit
2
2
  module BayServer
3
3
  class Version
4
- VERSION='3.0.2'
4
+ VERSION='3.3.1'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bayserver-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michisuke-P
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-17 00:00:00.000000000 Z
11
+ date: 2026-02-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: BayServer is one of the high-speed web servers. It operates as a single-threaded,
14
14
  asynchronous server, which makes it exceptionally fast. It also supports multi-core
@@ -20,24 +20,26 @@ extra_rdoc_files: []
20
20
  files:
21
21
  - LICENSE.BAYKIT
22
22
  - README.md
23
- - lib/baykit/bayserver/agent/accept_handler.rb
24
- - lib/baykit/bayserver/agent/channel_listener.rb
25
23
  - lib/baykit/bayserver/agent/command_receiver.rb
26
24
  - lib/baykit/bayserver/agent/grand_agent.rb
27
- - lib/baykit/bayserver/agent/letter.rb
25
+ - lib/baykit/bayserver/agent/letters/accepted_letter.rb
26
+ - lib/baykit/bayserver/agent/letters/closed_letter.rb
27
+ - lib/baykit/bayserver/agent/letters/connected_letter.rb
28
+ - lib/baykit/bayserver/agent/letters/error_letter.rb
29
+ - lib/baykit/bayserver/agent/letters/letter.rb
30
+ - lib/baykit/bayserver/agent/letters/package.rb
31
+ - lib/baykit/bayserver/agent/letters/read_letter.rb
32
+ - lib/baykit/bayserver/agent/letters/wrote_letter.rb
28
33
  - lib/baykit/bayserver/agent/lifecycle_listener.rb
29
34
  - lib/baykit/bayserver/agent/monitor/grand_agent_monitor.rb
30
35
  - lib/baykit/bayserver/agent/multiplexer/job_multiplexer.rb
31
36
  - lib/baykit/bayserver/agent/multiplexer/job_multiplexer_base.rb
32
37
  - lib/baykit/bayserver/agent/multiplexer/multiplexer_base.rb
33
38
  - lib/baykit/bayserver/agent/multiplexer/plain_transporter.rb
34
- - lib/baykit/bayserver/agent/multiplexer/rudder_state.rb
35
39
  - lib/baykit/bayserver/agent/multiplexer/secure_transporter.rb
36
40
  - lib/baykit/bayserver/agent/multiplexer/spider_multiplexer.rb
37
41
  - lib/baykit/bayserver/agent/multiplexer/spin_multiplexer.rb
38
42
  - lib/baykit/bayserver/agent/multiplexer/taxi_multiplexer.rb
39
- - lib/baykit/bayserver/agent/multiplexer/transporter.rb
40
- - lib/baykit/bayserver/agent/multiplexer/write_unit.rb
41
43
  - lib/baykit/bayserver/agent/next_socket_action.rb
42
44
  - lib/baykit/bayserver/agent/non_blocking_handler.rb
43
45
  - lib/baykit/bayserver/agent/package.rb
@@ -46,11 +48,6 @@ files:
46
48
  - lib/baykit/bayserver/agent/signal/signal_sender.rb
47
49
  - lib/baykit/bayserver/agent/spin_handler.rb
48
50
  - lib/baykit/bayserver/agent/timer_handler.rb
49
- - lib/baykit/bayserver/agent/transporter/data_listener.rb
50
- - lib/baykit/bayserver/agent/transporter/package.rb
51
- - lib/baykit/bayserver/agent/transporter/spin_read_transporter.rb
52
- - lib/baykit/bayserver/agent/transporter/spin_write_transporter.rb
53
- - lib/baykit/bayserver/agent/transporter/transporter.rb
54
51
  - lib/baykit/bayserver/agent/upgrade_exception.rb
55
52
  - lib/baykit/bayserver/bay_dockers.rb
56
53
  - lib/baykit/bayserver/bay_exception.rb
@@ -73,12 +70,16 @@ files:
73
70
  - lib/baykit/bayserver/common/postpone.rb
74
71
  - lib/baykit/bayserver/common/read_only_ship.rb
75
72
  - lib/baykit/bayserver/common/recipient.rb
73
+ - lib/baykit/bayserver/common/rudder_state.rb
74
+ - lib/baykit/bayserver/common/rudder_state_store.rb
75
+ - lib/baykit/bayserver/common/transporter.rb
76
76
  - lib/baykit/bayserver/common/vehicle.rb
77
77
  - lib/baykit/bayserver/common/vehicle_runner.rb
78
78
  - lib/baykit/bayserver/common/warp_data.rb
79
79
  - lib/baykit/bayserver/common/warp_handler.rb
80
80
  - lib/baykit/bayserver/common/warp_ship.rb
81
81
  - lib/baykit/bayserver/common/warp_ship_store.rb
82
+ - lib/baykit/bayserver/common/write_unit.rb
82
83
  - lib/baykit/bayserver/config_exception.rb
83
84
  - lib/baykit/bayserver/constants.rb
84
85
  - lib/baykit/bayserver/docker/base/club_base.rb
@@ -94,7 +95,6 @@ files:
94
95
  - lib/baykit/bayserver/docker/built_in/built_in_secure_docker.rb
95
96
  - lib/baykit/bayserver/docker/built_in/built_in_town_docker.rb
96
97
  - lib/baykit/bayserver/docker/built_in/built_in_trouble_docker.rb
97
- - lib/baykit/bayserver/docker/built_in/log_boat.rb
98
98
  - lib/baykit/bayserver/docker/built_in/log_item.rb
99
99
  - lib/baykit/bayserver/docker/built_in/log_item_factory.rb
100
100
  - lib/baykit/bayserver/docker/built_in/log_items.rb
@@ -110,9 +110,12 @@ files:
110
110
  - lib/baykit/bayserver/docker/reroute.rb
111
111
  - lib/baykit/bayserver/docker/secure.rb
112
112
  - lib/baykit/bayserver/docker/send_file/directory_train.rb
113
+ - lib/baykit/bayserver/docker/send_file/file_content.rb
113
114
  - lib/baykit/bayserver/docker/send_file/file_content_handler.rb
115
+ - lib/baykit/bayserver/docker/send_file/file_store.rb
114
116
  - lib/baykit/bayserver/docker/send_file/send_file_docker.rb
115
117
  - lib/baykit/bayserver/docker/send_file/send_file_ship.rb
118
+ - lib/baykit/bayserver/docker/send_file/wait_file_ship.rb
116
119
  - lib/baykit/bayserver/docker/town.rb
117
120
  - lib/baykit/bayserver/docker/trouble.rb
118
121
  - lib/baykit/bayserver/docker/warp.rb
@@ -135,6 +138,7 @@ files:
135
138
  - lib/baykit/bayserver/protocol/protocol_handler_store.rb
136
139
  - lib/baykit/bayserver/rudders/io_rudder.rb
137
140
  - lib/baykit/bayserver/rudders/rudder.rb
141
+ - lib/baykit/bayserver/rudders/rudder_base.rb
138
142
  - lib/baykit/bayserver/ships/ship.rb
139
143
  - lib/baykit/bayserver/sink.rb
140
144
  - lib/baykit/bayserver/taxi/taxi.rb
@@ -144,7 +148,6 @@ files:
144
148
  - lib/baykit/bayserver/tours/read_file_taxi.rb
145
149
  - lib/baykit/bayserver/tours/req_content_handler.rb
146
150
  - lib/baykit/bayserver/tours/send_file_train.rb
147
- - lib/baykit/bayserver/tours/send_file_yacht.rb
148
151
  - lib/baykit/bayserver/tours/tour.rb
149
152
  - lib/baykit/bayserver/tours/tour_handler.rb
150
153
  - lib/baykit/bayserver/tours/tour_req.rb
@@ -173,9 +176,11 @@ files:
173
176
  - lib/baykit/bayserver/util/md5_password.rb
174
177
  - lib/baykit/bayserver/util/message.rb
175
178
  - lib/baykit/bayserver/util/mimes.rb
179
+ - lib/baykit/bayserver/util/nio_selector.rb
176
180
  - lib/baykit/bayserver/util/object_factory.rb
177
181
  - lib/baykit/bayserver/util/object_store.rb
178
182
  - lib/baykit/bayserver/util/postman.rb
183
+ - lib/baykit/bayserver/util/rb_selector.rb
179
184
  - lib/baykit/bayserver/util/reusable.rb
180
185
  - lib/baykit/bayserver/util/selector.rb
181
186
  - lib/baykit/bayserver/util/simple_buffer.rb
@@ -186,13 +191,11 @@ files:
186
191
  - lib/baykit/bayserver/util/url_encoder.rb
187
192
  - lib/baykit/bayserver/util/valve.rb
188
193
  - lib/baykit/bayserver/version.rb
189
- - lib/baykit/bayserver/watercraft/boat.rb
190
- - lib/baykit/bayserver/watercraft/yacht.rb
191
194
  homepage: https://baykit.yokohama
192
195
  licenses:
193
196
  - MIT
194
197
  metadata: {}
195
- post_install_message:
198
+ post_install_message:
196
199
  rdoc_options: []
197
200
  require_paths:
198
201
  - lib
@@ -207,8 +210,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
210
  - !ruby/object:Gem::Version
208
211
  version: '0'
209
212
  requirements: []
210
- rubygems_version: 3.1.6
211
- signing_key:
213
+ rubygems_version: 3.4.19
214
+ signing_key:
212
215
  specification_version: 4
213
216
  summary: BayServer core module
214
217
  test_files: []
@@ -1,71 +0,0 @@
1
- require 'fcntl'
2
-
3
- require 'baykit/bayserver/util/selector'
4
-
5
- module Baykit
6
- module BayServer
7
- module Agent
8
- class AcceptHandler
9
- include Baykit::BayServer::Agent
10
- include Baykit::BayServer::Util
11
-
12
- attr :agent
13
- attr :port_map
14
-
15
- attr :is_shutdown
16
- attr :ch_count
17
-
18
- def initialize(agent, port_map)
19
- @agent = agent
20
- @port_map = port_map
21
- @ch_count = 0
22
- @is_shutdown = false
23
- end
24
-
25
- def on_acceptable(server_skt)
26
- end
27
-
28
- def on_closed()
29
- @ch_count -= 1
30
- end
31
-
32
- def on_busy()
33
- BayLog.debug("%s AcceptHandler:onBusy", @agent)
34
- @port_map.keys().each do |ch|
35
- @agent.selector.unregister(ch)
36
- end
37
- end
38
-
39
- def on_free()
40
- BayLog.debug("%s AcceptHandler:onFree isShutdown=%s", @agent, @is_shutdown)
41
- if @is_shutdown
42
- return
43
- end
44
-
45
- @port_map.keys().each do |ch|
46
- @agent.selector.register(ch, Selector::OP_READ)
47
- end
48
- end
49
-
50
- def server_socket?(skt)
51
- return @port_map.key?(skt)
52
- end
53
-
54
- def close_all()
55
- @port_map.keys.each do |skt|
56
- BayLog.debug("%s Close server Socket: %s", @agent, skt)
57
- skt.close()
58
- end
59
- end
60
-
61
- def shutdown()
62
- @is_shutdown = true
63
- on_busy()
64
- @agent.wakeup()
65
- end
66
-
67
- end
68
- end
69
- end
70
- end
71
-
@@ -1,35 +0,0 @@
1
-
2
- module Baykit
3
- module BayServer
4
- module Agent
5
- module ChannelListener # interface
6
-
7
- def on_readable(chk_ch)
8
- raise NotImplementedError.new
9
- end
10
-
11
- def on_writable(chk_ch)
12
- raise NotImplementedError.new
13
- end
14
-
15
- def on_connectable(chk_ch)
16
- raise NotImplementedError.new
17
- end
18
-
19
- def on_error(chk_ch, e)
20
- raise NotImplementedError.new
21
- end
22
-
23
- def on_closed(chk_ch)
24
- raise NotImplementedError.new
25
- end
26
-
27
- def check_timeout(chk_ch, duration)
28
- raise NotImplementedError.new
29
- end
30
-
31
- end
32
- end
33
- end
34
- end
35
-
@@ -1,30 +0,0 @@
1
- module Baykit
2
- module BayServer
3
- module Agent
4
- class Letter
5
- ACCEPTED = 1
6
- CONNECTED = 2
7
- READ = 3
8
- WROTE = 4
9
- CLOSEREQ = 5
10
-
11
- attr :type
12
- attr :state
13
- attr :n_bytes
14
- attr :address
15
- attr :err
16
- attr :client_rudder
17
-
18
- def initialize(type, st, client_rd, n, adr, err)
19
- @type = type
20
- @state = st
21
- @client_rudder = client_rd
22
- @n_bytes = n
23
- @err = err
24
- end
25
-
26
- end
27
- end
28
- end
29
- end
30
-