bayserver-core 3.0.3 → 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 (72) 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 +101 -93
  4. data/lib/baykit/bayserver/agent/letters/accepted_letter.rb +2 -2
  5. data/lib/baykit/bayserver/agent/letters/closed_letter.rb +2 -2
  6. data/lib/baykit/bayserver/agent/letters/connected_letter.rb +2 -2
  7. data/lib/baykit/bayserver/agent/letters/error_letter.rb +2 -2
  8. data/lib/baykit/bayserver/agent/letters/letter.rb +7 -3
  9. data/lib/baykit/bayserver/agent/letters/read_letter.rb +2 -2
  10. data/lib/baykit/bayserver/agent/letters/wrote_letter.rb +2 -2
  11. data/lib/baykit/bayserver/agent/monitor/grand_agent_monitor.rb +20 -22
  12. data/lib/baykit/bayserver/agent/multiplexer/job_multiplexer.rb +44 -31
  13. data/lib/baykit/bayserver/agent/multiplexer/job_multiplexer_base.rb +5 -0
  14. data/lib/baykit/bayserver/agent/multiplexer/multiplexer_base.rb +4 -4
  15. data/lib/baykit/bayserver/agent/multiplexer/plain_transporter.rb +2 -3
  16. data/lib/baykit/bayserver/agent/multiplexer/spider_multiplexer.rb +113 -59
  17. data/lib/baykit/bayserver/agent/multiplexer/spin_multiplexer.rb +22 -17
  18. data/lib/baykit/bayserver/agent/multiplexer/taxi_multiplexer.rb +17 -13
  19. data/lib/baykit/bayserver/bay_log.rb +20 -16
  20. data/lib/baykit/bayserver/bayserver.rb +8 -15
  21. data/lib/baykit/bayserver/common/cities.rb +1 -1
  22. data/lib/baykit/bayserver/common/inbound_ship.rb +1 -1
  23. data/lib/baykit/bayserver/common/inbound_ship_store.rb +0 -1
  24. data/lib/baykit/bayserver/{agent/multiplexer → common}/rudder_state.rb +43 -7
  25. data/lib/baykit/bayserver/common/rudder_state_store.rb +63 -0
  26. data/lib/baykit/bayserver/{agent/multiplexer → common}/transporter.rb +1 -3
  27. data/lib/baykit/bayserver/common/warp_ship.rb +4 -3
  28. data/lib/baykit/bayserver/{agent/multiplexer → common}/write_unit.rb +1 -3
  29. data/lib/baykit/bayserver/docker/base/inbound_data_listener.rb +0 -1
  30. data/lib/baykit/bayserver/docker/base/port_base.rb +5 -5
  31. data/lib/baykit/bayserver/docker/base/warp_base.rb +7 -4
  32. data/lib/baykit/bayserver/docker/built_in/built_in_harbor_docker.rb +25 -2
  33. data/lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb +42 -26
  34. data/lib/baykit/bayserver/docker/harbor.rb +14 -0
  35. data/lib/baykit/bayserver/docker/send_file/file_content.rb +66 -0
  36. data/lib/baykit/bayserver/docker/send_file/file_content_handler.rb +113 -29
  37. data/lib/baykit/bayserver/docker/send_file/file_store.rb +117 -0
  38. data/lib/baykit/bayserver/docker/send_file/send_file_docker.rb +13 -5
  39. data/lib/baykit/bayserver/docker/send_file/send_file_ship.rb +11 -2
  40. data/lib/baykit/bayserver/docker/send_file/wait_file_ship.rb +92 -0
  41. data/lib/baykit/bayserver/mem_usage.rb +2 -0
  42. data/lib/baykit/bayserver/protocol/packet.rb +2 -1
  43. data/lib/baykit/bayserver/protocol/packet_part_accessor.rb +5 -5
  44. data/lib/baykit/bayserver/protocol/protocol_exception.rb +7 -1
  45. data/lib/baykit/bayserver/rudders/io_rudder.rb +2 -2
  46. data/lib/baykit/bayserver/rudders/rudder.rb +4 -0
  47. data/lib/baykit/bayserver/rudders/rudder_base.rb +21 -0
  48. data/lib/baykit/bayserver/tours/req_content_handler.rb +13 -13
  49. data/lib/baykit/bayserver/tours/tour.rb +1 -6
  50. data/lib/baykit/bayserver/tours/tour_req.rb +4 -8
  51. data/lib/baykit/bayserver/tours/tour_res.rb +1 -8
  52. data/lib/baykit/bayserver/util/cgi_util.rb +7 -2
  53. data/lib/baykit/bayserver/util/headers.rb +2 -2
  54. data/lib/baykit/bayserver/util/http_status.rb +7 -0
  55. data/lib/baykit/bayserver/util/http_util.rb +16 -0
  56. data/lib/baykit/bayserver/util/nio_selector.rb +103 -0
  57. data/lib/baykit/bayserver/util/rb_selector.rb +55 -0
  58. data/lib/baykit/bayserver/util/selector.rb +43 -80
  59. data/lib/baykit/bayserver/util/simple_buffer.rb +1 -1
  60. data/lib/baykit/bayserver/version.rb +1 -1
  61. metadata +16 -20
  62. data/lib/baykit/bayserver/agent/accept_handler.rb +0 -71
  63. data/lib/baykit/bayserver/agent/channel_listener.rb +0 -35
  64. data/lib/baykit/bayserver/agent/transporter/data_listener.rb +0 -38
  65. data/lib/baykit/bayserver/agent/transporter/package.rb +0 -0
  66. data/lib/baykit/bayserver/agent/transporter/spin_read_transporter.rb +0 -111
  67. data/lib/baykit/bayserver/agent/transporter/spin_write_transporter.rb +0 -125
  68. data/lib/baykit/bayserver/agent/transporter/transporter.rb +0 -332
  69. data/lib/baykit/bayserver/docker/built_in/log_boat.rb +0 -71
  70. data/lib/baykit/bayserver/tours/send_file_yacht.rb +0 -97
  71. data/lib/baykit/bayserver/watercraft/boat.rb +0 -43
  72. data/lib/baykit/bayserver/watercraft/yacht.rb +0 -42
@@ -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.3'
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.3
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-12-24 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,8 +20,6 @@ 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
25
  - lib/baykit/bayserver/agent/letters/accepted_letter.rb
@@ -38,13 +36,10 @@ files:
38
36
  - lib/baykit/bayserver/agent/multiplexer/job_multiplexer_base.rb
39
37
  - lib/baykit/bayserver/agent/multiplexer/multiplexer_base.rb
40
38
  - lib/baykit/bayserver/agent/multiplexer/plain_transporter.rb
41
- - lib/baykit/bayserver/agent/multiplexer/rudder_state.rb
42
39
  - lib/baykit/bayserver/agent/multiplexer/secure_transporter.rb
43
40
  - lib/baykit/bayserver/agent/multiplexer/spider_multiplexer.rb
44
41
  - lib/baykit/bayserver/agent/multiplexer/spin_multiplexer.rb
45
42
  - lib/baykit/bayserver/agent/multiplexer/taxi_multiplexer.rb
46
- - lib/baykit/bayserver/agent/multiplexer/transporter.rb
47
- - lib/baykit/bayserver/agent/multiplexer/write_unit.rb
48
43
  - lib/baykit/bayserver/agent/next_socket_action.rb
49
44
  - lib/baykit/bayserver/agent/non_blocking_handler.rb
50
45
  - lib/baykit/bayserver/agent/package.rb
@@ -53,11 +48,6 @@ files:
53
48
  - lib/baykit/bayserver/agent/signal/signal_sender.rb
54
49
  - lib/baykit/bayserver/agent/spin_handler.rb
55
50
  - lib/baykit/bayserver/agent/timer_handler.rb
56
- - lib/baykit/bayserver/agent/transporter/data_listener.rb
57
- - lib/baykit/bayserver/agent/transporter/package.rb
58
- - lib/baykit/bayserver/agent/transporter/spin_read_transporter.rb
59
- - lib/baykit/bayserver/agent/transporter/spin_write_transporter.rb
60
- - lib/baykit/bayserver/agent/transporter/transporter.rb
61
51
  - lib/baykit/bayserver/agent/upgrade_exception.rb
62
52
  - lib/baykit/bayserver/bay_dockers.rb
63
53
  - lib/baykit/bayserver/bay_exception.rb
@@ -80,12 +70,16 @@ files:
80
70
  - lib/baykit/bayserver/common/postpone.rb
81
71
  - lib/baykit/bayserver/common/read_only_ship.rb
82
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
83
76
  - lib/baykit/bayserver/common/vehicle.rb
84
77
  - lib/baykit/bayserver/common/vehicle_runner.rb
85
78
  - lib/baykit/bayserver/common/warp_data.rb
86
79
  - lib/baykit/bayserver/common/warp_handler.rb
87
80
  - lib/baykit/bayserver/common/warp_ship.rb
88
81
  - lib/baykit/bayserver/common/warp_ship_store.rb
82
+ - lib/baykit/bayserver/common/write_unit.rb
89
83
  - lib/baykit/bayserver/config_exception.rb
90
84
  - lib/baykit/bayserver/constants.rb
91
85
  - lib/baykit/bayserver/docker/base/club_base.rb
@@ -101,7 +95,6 @@ files:
101
95
  - lib/baykit/bayserver/docker/built_in/built_in_secure_docker.rb
102
96
  - lib/baykit/bayserver/docker/built_in/built_in_town_docker.rb
103
97
  - lib/baykit/bayserver/docker/built_in/built_in_trouble_docker.rb
104
- - lib/baykit/bayserver/docker/built_in/log_boat.rb
105
98
  - lib/baykit/bayserver/docker/built_in/log_item.rb
106
99
  - lib/baykit/bayserver/docker/built_in/log_item_factory.rb
107
100
  - lib/baykit/bayserver/docker/built_in/log_items.rb
@@ -117,9 +110,12 @@ files:
117
110
  - lib/baykit/bayserver/docker/reroute.rb
118
111
  - lib/baykit/bayserver/docker/secure.rb
119
112
  - lib/baykit/bayserver/docker/send_file/directory_train.rb
113
+ - lib/baykit/bayserver/docker/send_file/file_content.rb
120
114
  - lib/baykit/bayserver/docker/send_file/file_content_handler.rb
115
+ - lib/baykit/bayserver/docker/send_file/file_store.rb
121
116
  - lib/baykit/bayserver/docker/send_file/send_file_docker.rb
122
117
  - lib/baykit/bayserver/docker/send_file/send_file_ship.rb
118
+ - lib/baykit/bayserver/docker/send_file/wait_file_ship.rb
123
119
  - lib/baykit/bayserver/docker/town.rb
124
120
  - lib/baykit/bayserver/docker/trouble.rb
125
121
  - lib/baykit/bayserver/docker/warp.rb
@@ -142,6 +138,7 @@ files:
142
138
  - lib/baykit/bayserver/protocol/protocol_handler_store.rb
143
139
  - lib/baykit/bayserver/rudders/io_rudder.rb
144
140
  - lib/baykit/bayserver/rudders/rudder.rb
141
+ - lib/baykit/bayserver/rudders/rudder_base.rb
145
142
  - lib/baykit/bayserver/ships/ship.rb
146
143
  - lib/baykit/bayserver/sink.rb
147
144
  - lib/baykit/bayserver/taxi/taxi.rb
@@ -151,7 +148,6 @@ files:
151
148
  - lib/baykit/bayserver/tours/read_file_taxi.rb
152
149
  - lib/baykit/bayserver/tours/req_content_handler.rb
153
150
  - lib/baykit/bayserver/tours/send_file_train.rb
154
- - lib/baykit/bayserver/tours/send_file_yacht.rb
155
151
  - lib/baykit/bayserver/tours/tour.rb
156
152
  - lib/baykit/bayserver/tours/tour_handler.rb
157
153
  - lib/baykit/bayserver/tours/tour_req.rb
@@ -180,9 +176,11 @@ files:
180
176
  - lib/baykit/bayserver/util/md5_password.rb
181
177
  - lib/baykit/bayserver/util/message.rb
182
178
  - lib/baykit/bayserver/util/mimes.rb
179
+ - lib/baykit/bayserver/util/nio_selector.rb
183
180
  - lib/baykit/bayserver/util/object_factory.rb
184
181
  - lib/baykit/bayserver/util/object_store.rb
185
182
  - lib/baykit/bayserver/util/postman.rb
183
+ - lib/baykit/bayserver/util/rb_selector.rb
186
184
  - lib/baykit/bayserver/util/reusable.rb
187
185
  - lib/baykit/bayserver/util/selector.rb
188
186
  - lib/baykit/bayserver/util/simple_buffer.rb
@@ -193,13 +191,11 @@ files:
193
191
  - lib/baykit/bayserver/util/url_encoder.rb
194
192
  - lib/baykit/bayserver/util/valve.rb
195
193
  - lib/baykit/bayserver/version.rb
196
- - lib/baykit/bayserver/watercraft/boat.rb
197
- - lib/baykit/bayserver/watercraft/yacht.rb
198
194
  homepage: https://baykit.yokohama
199
195
  licenses:
200
196
  - MIT
201
197
  metadata: {}
202
- post_install_message:
198
+ post_install_message:
203
199
  rdoc_options: []
204
200
  require_paths:
205
201
  - lib
@@ -214,8 +210,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
210
  - !ruby/object:Gem::Version
215
211
  version: '0'
216
212
  requirements: []
217
- rubygems_version: 3.1.6
218
- signing_key:
213
+ rubygems_version: 3.4.19
214
+ signing_key:
219
215
  specification_version: 4
220
216
  summary: BayServer core module
221
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,38 +0,0 @@
1
- module Baykit
2
- module BayServer
3
- module Agent
4
- module Transporter
5
- module DataListener # interface
6
-
7
- def notify_connect()
8
- raise NotImplementedError.new
9
- end
10
-
11
- def notify_handshake_done(protocol)
12
- raise NotImplementedError.new
13
- end
14
-
15
- def notify_read(buf)
16
- raise NotImplementedError.new
17
- end
18
-
19
- def notify_eof()
20
- raise NotImplementedError.new
21
- end
22
-
23
- def notify_protocol_error(err)
24
- raise NotImplementedError.new
25
- end
26
-
27
- def notify_close()
28
- raise NotImplementedError.new
29
- end
30
-
31
- def check_timeout(duration_sec)
32
- raise NotImplementedError.new
33
- end
34
- end
35
- end
36
- end
37
- end
38
- end
File without changes
@@ -1,111 +0,0 @@
1
- require 'baykit/bayserver/agent/spin_handler'
2
- require 'baykit/bayserver/util/string_util'
3
- require 'baykit/bayserver/util/valve'
4
-
5
- module Baykit
6
- module BayServer
7
- module Agent
8
- module Transporter
9
- class SpinReadTransporter
10
- include Baykit::BayServer::Agent::SpinHandler::SpinListener # implements
11
- include Baykit::BayServer::Util::Valve # implements
12
- include Baykit::BayServer::Util
13
-
14
- attr :spin_handler
15
- attr :data_listener
16
- attr :infile
17
- attr :read_buf
18
- attr :total_read
19
- attr :file_len
20
- attr :timeout_sec
21
- attr :eof_checker
22
- attr :is_closed
23
-
24
- def initialize(buf_size)
25
- @read_buf = StringUtil.alloc(buf_size)
26
- end
27
-
28
- def init(spin_hnd, lis, infile, limit, timeout_sec, eof_checker)
29
- @spin_handler = spin_hnd
30
- @data_listener = lis
31
- @infile = infile
32
- @file_len = limit
33
- @total_read = 0
34
- @timeout_sec = timeout_sec
35
- @eof_checker = eof_checker
36
- @is_closed = false
37
- end
38
-
39
- def to_s
40
- data_listener.to_s()
41
- end
42
-
43
- ######################################################
44
- # Implements Reusable
45
- ######################################################
46
-
47
- def reset()
48
- @data_listener = nil
49
- @infile = nil
50
- end
51
-
52
- ######################################################
53
- # Implements SpinListener
54
- ######################################################
55
-
56
- def lap()
57
- begin
58
- @infile.sysread(@buf_size, @read_buf)
59
-
60
- if @read_buf.length == 0
61
- return NextSocketAction::CONTINUE, true
62
- end
63
- @total_read += @read_buf.length
64
-
65
- next_act = @yacht.notify_read(@read_buf)
66
-
67
- if @total_read == @file_len
68
- @data_listener.notify_eof()
69
- close()
70
- return NextSocketAction::CLOSE, false
71
- end
72
-
73
- return next_act, false
74
- rescue Exception => e
75
- BayLog.error_e(e)
76
- close()
77
- return NextSocketAction::CLOSE, false
78
- end
79
- end
80
-
81
- def check_timeout(duration_sec)
82
- return duration_sec > @timeout_sec
83
- end
84
-
85
- def close()
86
- if @infile != nil
87
- @infile.close()
88
- end
89
- @data_listener.notify_close()
90
- @is_closed = true
91
- end
92
-
93
- ######################################################
94
- # Implements Valve
95
- ######################################################
96
-
97
- def open_valve()
98
- @spin_handler.ask_to_callback(self)
99
- end
100
-
101
- ######################################################
102
- # Other methods
103
- ######################################################
104
-
105
-
106
- end
107
-
108
- end
109
- end
110
- end
111
- end