bayserver-core 3.0.3 → 3.3.2

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 (77) 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 +128 -75
  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 -15
  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 +9 -8
  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_handler.rb +1 -1
  51. data/lib/baykit/bayserver/tours/tour_req.rb +4 -8
  52. data/lib/baykit/bayserver/tours/tour_res.rb +1 -8
  53. data/lib/baykit/bayserver/util/cgi_util.rb +7 -2
  54. data/lib/baykit/bayserver/util/headers.rb +2 -2
  55. data/lib/baykit/bayserver/util/http_status.rb +7 -0
  56. data/lib/baykit/bayserver/util/http_util.rb +16 -0
  57. data/lib/baykit/bayserver/util/io_util.rb +1 -3
  58. data/lib/baykit/bayserver/util/nio_selector.rb +103 -0
  59. data/lib/baykit/bayserver/util/object_factory.rb +5 -2
  60. data/lib/baykit/bayserver/util/object_store.rb +5 -5
  61. data/lib/baykit/bayserver/util/rb_selector.rb +55 -0
  62. data/lib/baykit/bayserver/util/reusable.rb +3 -2
  63. data/lib/baykit/bayserver/util/selector.rb +43 -80
  64. data/lib/baykit/bayserver/util/simple_buffer.rb +2 -4
  65. data/lib/baykit/bayserver/version.rb +1 -1
  66. metadata +16 -20
  67. data/lib/baykit/bayserver/agent/accept_handler.rb +0 -71
  68. data/lib/baykit/bayserver/agent/channel_listener.rb +0 -35
  69. data/lib/baykit/bayserver/agent/transporter/data_listener.rb +0 -38
  70. data/lib/baykit/bayserver/agent/transporter/package.rb +0 -0
  71. data/lib/baykit/bayserver/agent/transporter/spin_read_transporter.rb +0 -111
  72. data/lib/baykit/bayserver/agent/transporter/spin_write_transporter.rb +0 -125
  73. data/lib/baykit/bayserver/agent/transporter/transporter.rb +0 -332
  74. data/lib/baykit/bayserver/docker/built_in/log_boat.rb +0 -71
  75. data/lib/baykit/bayserver/tours/send_file_yacht.rb +0 -97
  76. data/lib/baykit/bayserver/watercraft/boat.rb +0 -43
  77. data/lib/baykit/bayserver/watercraft/yacht.rb +0 -42
@@ -14,14 +14,19 @@ module Baykit
14
14
 
15
15
  include Baykit::BayServer::Rudders
16
16
  include Baykit::BayServer::Util
17
+ include Baykit::BayServer::Common
17
18
 
18
19
  class Lapper # abstract class
19
20
 
21
+ attr :multiplexer
22
+ attr :state_id
20
23
  attr :state
21
24
  attr :last_access
22
25
 
23
- def initialize(state)
26
+ def initialize(mpx, state)
27
+ @multiplexer = mpx
24
28
  @state = state
29
+ @state_id = state.id
25
30
  access
26
31
  end
27
32
 
@@ -46,8 +51,8 @@ module Baykit
46
51
 
47
52
  attr :agent
48
53
 
49
- def initialize(agt, st)
50
- super(st)
54
+ def initialize(mpx, agt, st)
55
+ super(mpx, st)
51
56
  @agent = agt
52
57
  st.rudder.set_non_blocking
53
58
  end
@@ -61,10 +66,9 @@ module Baykit
61
66
 
62
67
  begin
63
68
  n = @state.rudder.read(@state.read_buf, @state.buf_size)
64
- #infile.sysread(@state.buf_size, @state.read_buf)
65
- rescue EOFError => e
66
- @state.read_buf.clear
67
- eof = true
69
+ if n == 0
70
+ eof = true
71
+ end
68
72
  rescue Errno::EAGAIN => e
69
73
  BayLog.debug("%s %s", @agent, e)
70
74
  return true
@@ -78,11 +82,11 @@ module Baykit
78
82
  end
79
83
  end
80
84
 
81
- @agent.send_read_letter(@state, @state.read_buf.length, nil, false)
85
+ @agent.send_read_letter(@state_id, @state.rudder, @multiplexer, @state.read_buf.length, nil, false)
82
86
  return false
83
87
 
84
88
  rescue Exception => e
85
- @agent.send_error_letter(@state, e, false)
89
+ @agent.send_error_letter(@state_id, @state.rudder, @multiplexer, e, false)
86
90
  return false
87
91
  end
88
92
  end
@@ -140,7 +144,7 @@ module Baykit
140
144
  end
141
145
  end
142
146
 
143
- def req_write(rd, buf, len, adr, tag, &lis)
147
+ def req_write(rd, buf, adr, tag, &lis)
144
148
  st = get_rudder_state(rd)
145
149
  if st == nil
146
150
  BayLog.warn("Invalid rudder")
@@ -173,8 +177,9 @@ module Baykit
173
177
 
174
178
  def req_close(rd)
175
179
  st = get_rudder_state(rd)
176
- close_rudder(st)
177
- @agent.send_closed_letter(st, false)
180
+ st.closing = true
181
+ close_rudder(rd)
182
+ @agent.send_closed_letter(st.id, st.rudder, self, false)
178
183
  end
179
184
 
180
185
 
@@ -206,7 +211,7 @@ module Baykit
206
211
  end
207
212
 
208
213
  def next_read(st)
209
- lpr = ReadIOLapper.new(@agent, st)
214
+ lpr = ReadIOLapper.new(self, @agent, st)
210
215
  lpr.next
211
216
 
212
217
  add_to_running_list(lpr)
@@ -266,7 +271,7 @@ module Baykit
266
271
  spun = lpr.lap
267
272
  st.access
268
273
 
269
- all_spun = all_spun & spun
274
+ all_spun = all_spun && spun
270
275
  end
271
276
 
272
277
  if all_spun
@@ -287,11 +292,11 @@ module Baykit
287
292
  #########################################
288
293
  private
289
294
 
290
- def remove_from_running_list(st)
291
- BayLog.debug("remove: %s", st.rudder)
295
+ def remove_from_running_list(rd)
296
+ BayLog.debug("remove: %s", rd)
292
297
  @running_list_lock.synchronize do
293
298
  @running_list.delete_if do |lpr |
294
- lpr.state == st
299
+ lpr.state.rudder == rd
295
300
  end
296
301
  end
297
302
  end
@@ -21,9 +21,9 @@ module Baykit
21
21
  end
22
22
  def depart
23
23
  if @for_read
24
- @rudder_state.multiplexer.do_next_read(@rudder_state)
24
+ @rudder_state.multiplexer.do_next_read(@rudder_state.rudder)
25
25
  else
26
- @rudder_state.multiplexer.do_next_write(@rudder_state)
26
+ @rudder_state.multiplexer.do_next_write(@rudder_state.rudder)
27
27
  end
28
28
  end
29
29
 
@@ -40,6 +40,7 @@ module Baykit
40
40
  include Baykit::BayServer::Rudders
41
41
  include Baykit::BayServer::Util
42
42
  include Baykit::BayServer::Taxi
43
+ include Baykit::BayServer::Common
43
44
 
44
45
  def initialize(agt)
45
46
  super
@@ -87,7 +88,7 @@ module Baykit
87
88
  st = get_rudder_state(rd)
88
89
  BayLog.debug("%s reqWrite st=%s", @agent, st)
89
90
 
90
- if st == nil || st.closed
91
+ if st == nil
91
92
  BayLog.warn("%s Channel is closed: %s", @agent, rd)
92
93
  lis.call
93
94
  return
@@ -114,10 +115,10 @@ module Baykit
114
115
  end
115
116
 
116
117
  def req_close(rd)
118
+ BayLog.debug("%s reqClose rd=%s", @agent, rd);
119
+ close_rudder(rd)
117
120
  st = get_rudder_state(rd)
118
- BayLog.debug("%s reqClose st=%s", @agent, st);
119
- close_rudder(st)
120
- @agent.send_closed_letter(st, false)
121
+ @agent.send_closed_letter(st.id, rd, self, true)
121
122
  st.access
122
123
  end
123
124
 
@@ -155,22 +156,25 @@ module Baykit
155
156
  TaxiRunner.post(@agent.agent_id, TaxiForMpx.new(st, for_read))
156
157
  end
157
158
 
158
- def do_next_read(st)
159
- st.access
159
+ def do_next_read(rd)
160
+ st = get_rudder_state(rd)
161
+
160
162
  begin
161
163
  len = st.rudder.read(st.read_buf, st.buf_size)
162
164
  if len <= 0
163
165
  len = 0
164
166
  end
165
- @agent.send_read_letter(st, len, nil, true)
167
+ @agent.send_read_letter(st.id, rd, self, len, nil, true)
166
168
 
167
169
  rescue Exception => e
168
- @agent.send_error_letter(st, e, true)
170
+ @agent.send_error_letter(st.id, rd, self, e, true)
169
171
  end
170
172
  end
171
173
 
172
- def do_next_write(st)
174
+ def do_next_write(rd)
175
+ st = get_rudder_state(rd)
173
176
  st.access
177
+
174
178
  begin
175
179
  if st.write_queue.empty?
176
180
  raise Sink("%s write queue is empty", self)
@@ -183,10 +187,10 @@ module Baykit
183
187
  len = st.rudder.write(u.buf)
184
188
  u.buf.slice!(0, len)
185
189
  end
186
- @agent.send_wrote_letter(st, len, true)
190
+ @agent.send_wrote_letter(st.id, rd, self, len, true)
187
191
 
188
192
  rescue Exception => e
189
- @agent.send_error_letter(st, e, true)
193
+ @agent.send_error_letter(st.id, rd, self, e, true)
190
194
  end
191
195
  end
192
196
  end
@@ -81,6 +81,10 @@ module Baykit
81
81
  end
82
82
 
83
83
  def self.log(lvl, stack_idx, err, fmt, args)
84
+ if lvl < @log_level
85
+ return
86
+ end
87
+
84
88
  #pos = caller[1].split("/")[-1]
85
89
  apos = parse_caller(caller[1])
86
90
  if(!@full_path)
@@ -90,22 +94,20 @@ module Baykit
90
94
  #pos = caller[1]
91
95
 
92
96
  if fmt != nil
93
- if lvl >= @log_level
94
- begin
95
- if args == nil || args.length == 0
96
- msg = sprintf("%s", fmt)
97
- else
98
- msg = sprintf(fmt, *args)
99
- end
100
- rescue => e
101
- puts(e.class)
102
- puts(e.message + " " + pos)
103
- print_exception(e)
104
- msg = fmt
97
+ begin
98
+ if args == nil || args.length == 0
99
+ msg = sprintf("%s", fmt)
100
+ else
101
+ msg = sprintf(fmt, *args)
105
102
  end
106
-
107
- print("[#{Time.now}] #{LOG_LEVEL_NAME[lvl]}. #{msg} (at #{pos})\n")
103
+ rescue => e
104
+ puts(e.class)
105
+ puts(e.message + " " + pos)
106
+ print_exception(e)
107
+ msg = fmt
108
108
  end
109
+
110
+ print("[#{Time.now}] #{LOG_LEVEL_NAME[lvl]}. #{msg} (at #{pos})\n")
109
111
  end
110
112
 
111
113
  if err != nil
@@ -129,8 +131,10 @@ module Baykit
129
131
  end
130
132
 
131
133
  def self.print_exception err
132
- for s in err.backtrace
133
- puts "\t" + s
134
+ if err.backtrace != nil
135
+ for s in err.backtrace
136
+ puts "\t" + s
137
+ end
134
138
  end
135
139
  if err.cause
136
140
  puts "Caused by:"
@@ -28,6 +28,7 @@ require 'baykit/bayserver/protocol/protocol_handler_store'
28
28
 
29
29
  require 'baykit/bayserver/docker/package'
30
30
  require 'baykit/bayserver/common/inbound_ship_store'
31
+ require 'baykit/bayserver/common/rudder_state_store'
31
32
  require 'baykit/bayserver/common/warp_ship_store'
32
33
 
33
34
  require 'baykit/bayserver/util/locale'
@@ -52,7 +53,6 @@ module Baykit
52
53
  include Baykit::BayServer::Agent::Signal
53
54
  include Baykit::BayServer::Agent::Monitor
54
55
  include Baykit::BayServer::Protocol
55
- include Baykit::BayServer::WaterCraft
56
56
  include Baykit::BayServer::Tours
57
57
  include Baykit::BayServer::Docker
58
58
  include Baykit::BayServer::Docker::Base
@@ -249,6 +249,7 @@ module Baykit
249
249
 
250
250
  # Init stores, memory usage managers
251
251
  PacketStore.init()
252
+ RudderStateStore.init()
252
253
  InboundShipStore.init()
253
254
  ProtocolHandlerStore.init()
254
255
  TourStore.init(TourStore::MAX_TOURS)
@@ -281,7 +282,7 @@ module Baykit
281
282
  end
282
283
  end
283
284
 
284
- def self.open_ports(anchored_port_map, unanchored_port_map)
285
+ def self.open_ports()
285
286
  @ports.each do |dkr|
286
287
  # open port
287
288
  adr = dkr.address()
@@ -312,8 +313,6 @@ module Baykit
312
313
 
313
314
  skt.listen(0)
314
315
 
315
- #skt = port_dkr.new_server_socket skt
316
- anchored_port_map[skt] = dkr
317
316
  else
318
317
  # Open UDP port
319
318
  BayLog.info(BayMessage.get(:MSG_OPENING_UDP_PORT, dkr.host, dkr.port, dkr.protocol()))
@@ -328,23 +327,20 @@ module Baykit
328
327
  BayLog.error_e(e, BayMessage.get(:INT_CANNOT_OPEN_PORT, dkr.host, dkr.port, e))
329
328
  raise e
330
329
  end
331
- unanchored_port_map[skt] = dkr
330
+ @unanchorable_port_map[IORudder.new(skt)] = dkr
332
331
 
333
332
  end
334
333
  end
335
334
  end
336
335
 
337
336
  def self.parent_start()
338
- anchored_port_map = {}
339
- unanchored_port_map = {}
340
-
341
337
 
342
338
  if @harbor.multi_core
343
339
  if !SysUtil.run_on_windows()
344
- open_ports(anchored_port_map, unanchored_port_map)
340
+ open_ports()
345
341
  end
346
342
  else
347
- open_ports(anchored_port_map, unanchored_port_map)
343
+ open_ports()
348
344
 
349
345
  # Thread mode
350
346
  GrandAgent.init(
@@ -355,7 +351,7 @@ module Baykit
355
351
  end
356
352
 
357
353
  SignalAgent.init(@harbor.control_port)
358
- GrandAgentMonitor.init(@harbor.grand_agents, anchored_port_map)
354
+ GrandAgentMonitor.init(@harbor.grand_agents)
359
355
  create_pid_file(Process.pid)
360
356
  GrandAgentMonitor.join
361
357
  end
@@ -364,11 +360,8 @@ module Baykit
364
360
 
365
361
  invoke_runners()
366
362
 
367
- @anchorable_port_map = {}
368
- unanchored_port_map = {}
369
-
370
363
  if(SysUtil.run_on_windows())
371
- open_ports(@anchorable_port_map, unanchored_port_map)
364
+ open_ports()
372
365
  else
373
366
  @derived_port_nos.each do |no|
374
367
  # Rebuild server socket
@@ -1,6 +1,6 @@
1
1
  module Baykit
2
2
  module BayServer
3
- module Util
3
+ module Common
4
4
  class Cities
5
5
 
6
6
  attr :any_city
@@ -208,22 +208,8 @@ module Baykit
208
208
  if !tur.valid?
209
209
  raise Sink.new("Tour is not valid")
210
210
  end
211
- keep_alive = false
212
- if tur.req.headers.get_connection() == Headers::CONNECTION_KEEP_ALIVE
213
- keep_alive = true
214
- if keep_alive
215
- res_conn = tur.res.headers.get_connection()
216
- keep_alive = (res_conn == Headers::CONNECTION_KEEP_ALIVE) ||
217
- (res_conn == Headers::CONNECTION_UNKOWN)
218
- end
219
- if keep_alive
220
- if tur.res.headers.content_length() < 0
221
- keep_alive = false
222
- end
223
- end
224
- end
225
211
 
226
- tour_handler.send_end_tour(tur, keep_alive, &callback)
212
+ tour_handler.send_end_tour(tur, &callback)
227
213
  end
228
214
  end
229
215
 
@@ -11,7 +11,6 @@ module Baykit
11
11
  module BayServer
12
12
  module Common
13
13
  class InboundShipStore < Baykit::BayServer::Util::ObjectStore
14
- include Baykit::BayServer::WaterCraft
15
14
  include Baykit::BayServer::Util
16
15
  include Baykit::BayServer::Agent
17
16
 
@@ -1,15 +1,26 @@
1
+ require 'baykit/bayserver/util/reusable'
2
+ require 'baykit/bayserver/util/counter'
1
3
 
2
4
  module Baykit
3
5
  module BayServer
4
- module Agent
5
- module Multiplexer
6
+ module Common
6
7
  class RudderState
8
+ include Baykit::BayServer::Util::Reusable # implements
9
+
10
+ include Baykit::BayServer::Util
11
+ class << self
12
+ attr :id_counter
13
+ end
14
+ @id_counter = Counter.new
15
+
16
+ attr :id
17
+
7
18
  attr :rudder
8
19
  attr :transporter
9
20
  attr_accessor :multiplexer
10
21
 
11
22
  attr :last_access_time
12
-
23
+ attr_accessor :closing
13
24
  attr :read_buf
14
25
  attr :buf_size
15
26
  attr :write_queue
@@ -21,17 +32,19 @@ module Baykit
21
32
  attr :write_queue_lock
22
33
  attr :reading_lock
23
34
  attr :writing_lock
24
- attr_accessor :closed
25
35
  attr_accessor :finale
26
36
 
27
37
  attr_accessor :accepting
28
38
  attr_accessor :connecting
29
39
 
40
+ def initialize
41
+
42
+ end
30
43
 
31
- def initialize(rd, tp = nil, timeout_sec = 0)
44
+ def init(rd, tp = nil, timeout_sec = 0)
45
+ @id = RudderState.id_counter.next
32
46
  @rudder = rd
33
47
  @transporter = tp
34
- @closed = false
35
48
  @timeout_sec = timeout_sec
36
49
 
37
50
  if tp != nil
@@ -60,6 +73,30 @@ module Baykit
60
73
  return str
61
74
  end
62
75
 
76
+ #########################################
77
+ # Implements Reusable
78
+ #########################################
79
+ def reset()
80
+ @id = 0
81
+ @rudder = nil
82
+ @transporter = nil
83
+ @multiplexer = nil
84
+
85
+ @last_access_time = 0
86
+ @closing = false
87
+ @read_buf.clear
88
+ @write_queue = []
89
+ @bytes_read = 0
90
+ @bytes_wrote = 0
91
+ @finale = false
92
+ @reading = false
93
+ @writing = false
94
+ @timeout_sec = 0
95
+ end
96
+
97
+ #########################################
98
+ # Custom methods
99
+ #########################################
63
100
 
64
101
  def access
65
102
  @last_access_time = Time.now.tv_sec
@@ -69,7 +106,6 @@ module Baykit
69
106
  @finale = true
70
107
  end
71
108
 
72
- end
73
109
  end
74
110
  end
75
111
  end
@@ -0,0 +1,63 @@
1
+ require 'baykit/bayserver/agent/grand_agent'
2
+ require 'baykit/bayserver/agent/lifecycle_listener'
3
+
4
+ require 'baykit/bayserver/common/rudder_state'
5
+
6
+ require 'baykit/bayserver/util/object_store'
7
+ require 'baykit/bayserver/util/string_util'
8
+
9
+ module Baykit
10
+ module BayServer
11
+ module Common
12
+ class RudderStateStore < Baykit::BayServer::Util::ObjectStore
13
+ include Baykit::BayServer::Util
14
+ include Baykit::BayServer::Agent
15
+ class AgentListener
16
+ include Baykit::BayServer::Agent::LifecycleListener # implements
17
+
18
+ def add(agt_id)
19
+ RudderStateStore.stores[agt_id] = RudderStateStore.new();
20
+ end
21
+
22
+ def remove(agt_id)
23
+ RudderStateStore.stores.delete(agt_id);
24
+ end
25
+ end
26
+
27
+ class << self
28
+ # Agent id => InboundShipStore
29
+ attr :stores
30
+ end
31
+ @stores = {}
32
+
33
+
34
+ def initialize
35
+ super
36
+ @factory = -> { RudderState.new() }
37
+ end
38
+
39
+ #
40
+ # print memory usage
41
+ #
42
+ def print_usage(indent)
43
+ BayLog.info("%sRudderStateStore Usage:", StringUtil.indent(indent))
44
+ super(indent+1)
45
+ end
46
+
47
+
48
+ ######################################################
49
+ # class methods
50
+ ######################################################
51
+ def self.init()
52
+ GrandAgent.add_lifecycle_listener(AgentListener.new())
53
+ end
54
+
55
+ def self.get_store(agent_id)
56
+ return @stores[agent_id]
57
+ end
58
+
59
+ end
60
+ end
61
+ end
62
+ end
63
+
@@ -2,8 +2,7 @@ require 'baykit/bayserver/util/reusable'
2
2
 
3
3
  module Baykit
4
4
  module BayServer
5
- module Agent
6
- module Multiplexer
5
+ module Common
7
6
  module Transporter # interface
8
7
  include Baykit::BayServer::Util::Reusable # implements
9
8
 
@@ -55,7 +54,6 @@ module Baykit
55
54
  raise NotImplementedError.new
56
55
  end
57
56
  end
58
- end
59
57
  end
60
58
  end
61
59
  end
@@ -172,10 +172,10 @@ module Baykit
172
172
 
173
173
  def end_warp_tour(tur, keep)
174
174
  wdat = WarpData.get(tur)
175
- BayLog.debug("%s end warp tour: started=%s ended=%s", tur, wdat.started, wdat.ended)
175
+ BayLog.debug("%s end warp tour: wtur#%d started=%s ended=%s", tur, wdat.warp_id, wdat.started, wdat.ended)
176
176
 
177
177
  if(!@tour_map.include?(wdat.warp_id))
178
- raise Sink.new("%s WarpId not in tourMap: %d", tur, wdat.warp_id);
178
+ raise Sink.new("%s WarpId not in tourMap: wture#%d", tur, wdat.warp_id);
179
179
  else
180
180
  @tour_map.delete wdat.warp_id
181
181
  end
@@ -214,8 +214,9 @@ module Baykit
214
214
  def notify_error_to_owner_tour(status, msg)
215
215
  @lock.synchronize do
216
216
  @tour_map.keys.each do |warp_id|
217
+ BayLog.debug("%s wtur#%d notify error to owner", self, warp_id)
217
218
  tur = get_tour(warp_id)
218
- BayLog.debug("%s send error to owner: %s running=%s", self, tur, tur.running?)
219
+ BayLog.debug("%s wtur#%d send error to owner: %s running=%s", self, warp_id, tur, tur.running?)
219
220
  if tur.running? || tur.reading?
220
221
  begin
221
222
  tur.res.send_error(Tour::TOUR_ID_NOCHECK, status, msg)
@@ -2,8 +2,7 @@ require 'baykit/bayserver/util/reusable'
2
2
 
3
3
  module Baykit
4
4
  module BayServer
5
- module Agent
6
- module Multiplexer
5
+ module Common
7
6
  class WriteUnit
8
7
 
9
8
  attr :buf
@@ -24,7 +23,6 @@ module Baykit
24
23
  end
25
24
  end
26
25
  end
27
- end
28
26
  end
29
27
  end
30
28
  end
@@ -1,5 +1,4 @@
1
1
  require 'baykit/bayserver/agent/next_socket_action'
2
- require 'baykit/bayserver/agent/transporter/data_listener'
3
2
  require 'baykit/bayserver/ships/ship'
4
3
  require 'baykit/bayserver/tours/package'
5
4
 
@@ -1,6 +1,5 @@
1
1
  require 'baykit/bayserver/protocol/protocol_handler_store'
2
2
  require 'baykit/bayserver/bcf/package'
3
- require 'baykit/bayserver/agent/multiplexer/plain_transporter'
4
3
  require 'baykit/bayserver/rudders/io_rudder'
5
4
  require 'baykit/bayserver/util/object_store'
6
5
  require 'baykit/bayserver/util/object_factory'
@@ -8,6 +7,7 @@ require 'baykit/bayserver/util/object_factory'
8
7
  require 'baykit/bayserver/docker/port'
9
8
  require 'baykit/bayserver/docker/base/docker_base'
10
9
  require 'baykit/bayserver/common/inbound_ship_store'
10
+ require 'baykit/bayserver/agent/multiplexer/plain_transporter'
11
11
 
12
12
  module Baykit
13
13
  module BayServer
@@ -21,7 +21,6 @@ module Baykit
21
21
  include Baykit::BayServer::Agent::Multiplexer
22
22
  include Baykit::BayServer::Docker
23
23
  include Baykit::BayServer::Docker::Base
24
- include Baykit::BayServer::WaterCraft
25
24
  include Baykit::BayServer::Protocol
26
25
  include Baykit::BayServer::Rudders
27
26
  include Baykit::BayServer::Util
@@ -152,8 +151,8 @@ module Baykit
152
151
  raise ConfigException.new(kv.file_name, kv.line_no, BayMessage.get(:CFG_INVALID_PARAMETER_VALUE, kv.value))
153
152
  end
154
153
 
155
- name = kv.value[0 .. idx].strip()
156
- value = kv.value[idx+1 .. -1].strip()
154
+ name = kv.value[0, idx].strip
155
+ value = kv.value[idx+1, kv.value.length].strip
157
156
  @additional_headers << [name, value]
158
157
 
159
158
  else
@@ -218,7 +217,8 @@ module Baykit
218
217
  proto_hnd = PortBase.get_protocol_handler_store(protocol(), agt_id).rent()
219
218
  sip.init_inbound(rd, agt_id, tp, self, proto_hnd)
220
219
 
221
- st = RudderState.new(rd, tp)
220
+ st = RudderStateStore.get_store(agt_id).rent()
221
+ st.init(rd, tp)
222
222
  agt.net_multiplexer.add_rudder_state(rd, st)
223
223
  agt.net_multiplexer.req_read(rd)
224
224
  end