bayserver-core 2.3.2 → 3.0.0
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 +4 -4
- data/lib/baykit/bayserver/agent/accept_handler.rb +0 -26
- data/lib/baykit/bayserver/agent/channel_listener.rb +6 -6
- data/lib/baykit/bayserver/agent/command_receiver.rb +97 -38
- data/lib/baykit/bayserver/agent/grand_agent.rb +444 -134
- data/lib/baykit/bayserver/agent/letter.rb +30 -0
- data/lib/baykit/bayserver/agent/lifecycle_listener.rb +9 -7
- data/lib/baykit/bayserver/agent/monitor/grand_agent_monitor.rb +298 -0
- data/lib/baykit/bayserver/agent/multiplexer/job_multiplexer.rb +257 -0
- data/lib/baykit/bayserver/agent/multiplexer/job_multiplexer_base.rb +52 -0
- data/lib/baykit/bayserver/agent/multiplexer/multiplexer_base.rb +150 -0
- data/lib/baykit/bayserver/agent/multiplexer/plain_transporter.rb +129 -0
- data/lib/baykit/bayserver/agent/multiplexer/rudder_state.rb +81 -0
- data/lib/baykit/bayserver/agent/multiplexer/secure_transporter.rb +50 -0
- data/lib/baykit/bayserver/agent/multiplexer/spider_multiplexer.rb +561 -0
- data/lib/baykit/bayserver/agent/multiplexer/spin_multiplexer.rb +311 -0
- data/lib/baykit/bayserver/agent/multiplexer/taxi_multiplexer.rb +194 -0
- data/lib/baykit/bayserver/agent/multiplexer/transporter.rb +61 -0
- data/lib/baykit/bayserver/agent/multiplexer/write_unit.rb +30 -0
- data/lib/baykit/bayserver/agent/non_blocking_handler.rb +0 -319
- data/lib/baykit/bayserver/agent/signal/signal_agent.rb +2 -1
- data/lib/baykit/bayserver/agent/timer_handler.rb +1 -1
- data/lib/baykit/bayserver/agent/transporter/data_listener.rb +7 -7
- data/lib/baykit/bayserver/agent/transporter/package.rb +0 -3
- data/lib/baykit/bayserver/agent/transporter/transporter.rb +5 -139
- data/lib/baykit/bayserver/bay_log.rb +1 -0
- data/lib/baykit/bayserver/bayserver.rb +32 -28
- data/lib/baykit/bayserver/{util → common}/groups.rb +1 -1
- data/lib/baykit/bayserver/common/inbound_handler.rb +12 -0
- data/lib/baykit/bayserver/{docker/base → common}/inbound_ship.rb +94 -19
- data/lib/baykit/bayserver/{docker/base → common}/inbound_ship_store.rb +7 -9
- data/lib/baykit/bayserver/common/multiplexer.rb +98 -0
- data/lib/baykit/bayserver/common/postpone.rb +15 -0
- data/lib/baykit/bayserver/common/read_only_ship.rb +42 -0
- data/lib/baykit/bayserver/common/recipient.rb +24 -0
- data/lib/baykit/bayserver/common/vehicle.rb +24 -0
- data/lib/baykit/bayserver/common/vehicle_runner.rb +127 -0
- data/lib/baykit/bayserver/{docker/warp → common}/warp_data.rb +18 -10
- data/lib/baykit/bayserver/common/warp_handler.rb +27 -0
- data/lib/baykit/bayserver/{docker/warp → common}/warp_ship.rb +107 -27
- data/lib/baykit/bayserver/{docker/warp → common}/warp_ship_store.rb +3 -8
- data/lib/baykit/bayserver/docker/base/inbound_data_listener.rb +2 -2
- data/lib/baykit/bayserver/docker/base/port_base.rb +59 -27
- data/lib/baykit/bayserver/docker/{warp/warp_docker.rb → base/warp_base.rb} +43 -50
- data/lib/baykit/bayserver/docker/built_in/built_in_harbor_docker.rb +118 -31
- data/lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb +60 -63
- data/lib/baykit/bayserver/docker/built_in/built_in_permission_docker.rb +11 -10
- data/lib/baykit/bayserver/docker/built_in/built_in_secure_docker.rb +13 -4
- data/lib/baykit/bayserver/docker/city.rb +27 -13
- data/lib/baykit/bayserver/docker/club.rb +8 -8
- data/lib/baykit/bayserver/docker/docker.rb +9 -1
- data/lib/baykit/bayserver/docker/harbor.rb +184 -22
- data/lib/baykit/bayserver/docker/permission.rb +7 -6
- data/lib/baykit/bayserver/docker/port.rb +39 -11
- data/lib/baykit/bayserver/docker/secure.rb +11 -9
- data/lib/baykit/bayserver/docker/send_file/file_content_handler.rb +99 -4
- data/lib/baykit/bayserver/docker/send_file/send_file_docker.rb +6 -2
- data/lib/baykit/bayserver/docker/send_file/send_file_ship.rb +92 -0
- data/lib/baykit/bayserver/docker/town.rb +31 -15
- data/lib/baykit/bayserver/docker/trouble.rb +17 -5
- data/lib/baykit/bayserver/docker/warp.rb +34 -0
- data/lib/baykit/bayserver/mem_usage.rb +9 -9
- data/lib/baykit/bayserver/protocol/command_packer.rb +1 -8
- data/lib/baykit/bayserver/protocol/packet_packer.rb +7 -11
- data/lib/baykit/bayserver/protocol/packet_store.rb +4 -4
- data/lib/baykit/bayserver/protocol/protocol_handler.rb +26 -8
- data/lib/baykit/bayserver/protocol/protocol_handler_store.rb +5 -5
- data/lib/baykit/bayserver/rudders/io_rudder.rb +62 -0
- data/lib/baykit/bayserver/rudders/rudder.rb +29 -0
- data/lib/baykit/bayserver/{watercraft → ships}/ship.rb +65 -41
- data/lib/baykit/bayserver/taxi/taxi.rb +15 -10
- data/lib/baykit/bayserver/taxi/taxi_runner.rb +9 -94
- data/lib/baykit/bayserver/tours/read_file_taxi.rb +2 -2
- data/lib/baykit/bayserver/tours/req_content_handler.rb +16 -13
- data/lib/baykit/bayserver/tours/tour.rb +2 -2
- data/lib/baykit/bayserver/tours/tour_handler.rb +36 -0
- data/lib/baykit/bayserver/tours/tour_req.rb +14 -24
- data/lib/baykit/bayserver/tours/tour_res.rb +5 -89
- data/lib/baykit/bayserver/tours/tour_store.rb +5 -5
- data/lib/baykit/bayserver/train/train_runner.rb +17 -13
- data/lib/baykit/bayserver/util/data_consume_listener.rb +1 -1
- data/lib/baykit/bayserver/util/executor_service.rb +11 -7
- data/lib/baykit/bayserver/util/ip_matcher.rb +9 -39
- data/lib/baykit/bayserver/util/locale.rb +1 -1
- data/lib/baykit/bayserver/util/selector.rb +24 -5
- data/lib/baykit/bayserver/util/sys_util.rb +6 -6
- data/lib/baykit/bayserver/version.rb +1 -1
- metadata +37 -18
- data/lib/baykit/bayserver/agent/grand_agent_monitor.rb +0 -231
- data/lib/baykit/bayserver/agent/transporter/plain_transporter.rb +0 -55
- data/lib/baykit/bayserver/agent/transporter/secure_transporter.rb +0 -81
- data/lib/baykit/bayserver/docker/base/inbound_handler.rb +0 -42
- data/lib/baykit/bayserver/docker/warp/package.rb +0 -4
- data/lib/baykit/bayserver/docker/warp/warp_data_listener.rb +0 -112
- data/lib/baykit/bayserver/docker/warp/warp_handler.rb +0 -38
- /data/lib/baykit/bayserver/{util → common}/cities.rb +0 -0
|
@@ -8,10 +8,13 @@ require 'baykit/bayserver/version'
|
|
|
8
8
|
require 'baykit/bayserver/mem_usage'
|
|
9
9
|
require 'baykit/bayserver/sink'
|
|
10
10
|
|
|
11
|
+
require 'baykit/bayserver/rudders/io_rudder'
|
|
12
|
+
|
|
11
13
|
require 'baykit/bayserver/agent/signal/signal_agent'
|
|
12
14
|
require 'baykit/bayserver/agent/signal/signal_sender'
|
|
13
15
|
require 'baykit/bayserver/agent/signal/signal_sender'
|
|
14
16
|
require 'baykit/bayserver/agent/grand_agent'
|
|
17
|
+
require 'baykit/bayserver/agent/monitor/grand_agent_monitor'
|
|
15
18
|
|
|
16
19
|
require 'baykit/bayserver/bcf/package'
|
|
17
20
|
|
|
@@ -24,8 +27,8 @@ require 'baykit/bayserver/taxi/taxi_runner'
|
|
|
24
27
|
require 'baykit/bayserver/protocol/protocol_handler_store'
|
|
25
28
|
|
|
26
29
|
require 'baykit/bayserver/docker/package'
|
|
27
|
-
require 'baykit/bayserver/
|
|
28
|
-
require 'baykit/bayserver/
|
|
30
|
+
require 'baykit/bayserver/common/inbound_ship_store'
|
|
31
|
+
require 'baykit/bayserver/common/warp_ship_store'
|
|
29
32
|
|
|
30
33
|
require 'baykit/bayserver/util/locale'
|
|
31
34
|
require 'baykit/bayserver/util/md5_password'
|
|
@@ -33,9 +36,10 @@ require 'baykit/bayserver/util/string_util'
|
|
|
33
36
|
require 'baykit/bayserver/util/mimes'
|
|
34
37
|
require 'baykit/bayserver/util/reusable'
|
|
35
38
|
require 'baykit/bayserver/util/http_status'
|
|
36
|
-
require 'baykit/bayserver/util/cities'
|
|
37
39
|
require 'baykit/bayserver/util/selector'
|
|
38
40
|
|
|
41
|
+
require 'baykit/bayserver/common/cities'
|
|
42
|
+
|
|
39
43
|
module Baykit
|
|
40
44
|
module BayServer
|
|
41
45
|
|
|
@@ -46,12 +50,14 @@ module Baykit
|
|
|
46
50
|
include Baykit::BayServer::Train
|
|
47
51
|
include Baykit::BayServer::Taxi
|
|
48
52
|
include Baykit::BayServer::Agent::Signal
|
|
53
|
+
include Baykit::BayServer::Agent::Monitor
|
|
49
54
|
include Baykit::BayServer::Protocol
|
|
50
55
|
include Baykit::BayServer::WaterCraft
|
|
51
56
|
include Baykit::BayServer::Tours
|
|
52
57
|
include Baykit::BayServer::Docker
|
|
53
58
|
include Baykit::BayServer::Docker::Base
|
|
54
|
-
include Baykit::BayServer::
|
|
59
|
+
include Baykit::BayServer::Common
|
|
60
|
+
include Baykit::BayServer::Rudders
|
|
55
61
|
|
|
56
62
|
ENV_BSERV_HOME = "BSERV_HOME"
|
|
57
63
|
ENV_BSERV_LIB = "BSERV_LIB"
|
|
@@ -68,12 +74,12 @@ module Baykit
|
|
|
68
74
|
attr :my_host_name
|
|
69
75
|
attr :my_host_addr
|
|
70
76
|
attr :dockers
|
|
77
|
+
attr :software_name
|
|
78
|
+
attr :cities
|
|
71
79
|
attr :ports
|
|
72
80
|
attr :harbor
|
|
73
|
-
attr :
|
|
74
|
-
attr :
|
|
75
|
-
attr :ractor_local_map
|
|
76
|
-
attr :software_name
|
|
81
|
+
attr :anchorable_port_map
|
|
82
|
+
attr :unanchorable_port_map
|
|
77
83
|
attr :rack_app
|
|
78
84
|
attr :derived_port_nos
|
|
79
85
|
attr :monitor_port
|
|
@@ -88,8 +94,8 @@ module Baykit
|
|
|
88
94
|
@harbor = nil
|
|
89
95
|
@any_city = nil
|
|
90
96
|
@cities = Cities.new()
|
|
91
|
-
@
|
|
92
|
-
@
|
|
97
|
+
@anchorable_port_map = {}
|
|
98
|
+
@unanchorable_port_map = {}
|
|
93
99
|
|
|
94
100
|
def self.get_version
|
|
95
101
|
return Version::VERSION
|
|
@@ -212,7 +218,7 @@ module Baykit
|
|
|
212
218
|
#
|
|
213
219
|
def self.start(agt_id)
|
|
214
220
|
begin
|
|
215
|
-
BayMessage.init(@bserv_lib + "/conf/messages", Locale.
|
|
221
|
+
BayMessage.init(@bserv_lib + "/conf/messages", Locale.default())
|
|
216
222
|
|
|
217
223
|
@dockers = BayDockers.new
|
|
218
224
|
@dockers.init(@bserv_lib + "/conf/dockers.bcf")
|
|
@@ -267,6 +273,8 @@ module Baykit
|
|
|
267
273
|
child_start(agt_id)
|
|
268
274
|
end
|
|
269
275
|
|
|
276
|
+
return
|
|
277
|
+
|
|
270
278
|
while not GrandAgentMonitor.monitors.empty?
|
|
271
279
|
sel = Selector.new()
|
|
272
280
|
pip_to_mon_map = {}
|
|
@@ -326,6 +334,8 @@ module Baykit
|
|
|
326
334
|
raise e
|
|
327
335
|
end
|
|
328
336
|
|
|
337
|
+
@anchorable_port_map[IORudder.new(skt)] = dkr
|
|
338
|
+
|
|
329
339
|
skt.listen(0)
|
|
330
340
|
|
|
331
341
|
#skt = port_dkr.new_server_socket skt
|
|
@@ -365,10 +375,7 @@ module Baykit
|
|
|
365
375
|
# Thread mode
|
|
366
376
|
GrandAgent.init(
|
|
367
377
|
(1..@harbor.grand_agents).to_a,
|
|
368
|
-
|
|
369
|
-
unanchored_port_map,
|
|
370
|
-
@harbor.max_ships,
|
|
371
|
-
@harbor.multi_core)
|
|
378
|
+
@harbor.max_ships)
|
|
372
379
|
|
|
373
380
|
invoke_runners()
|
|
374
381
|
end
|
|
@@ -376,17 +383,18 @@ module Baykit
|
|
|
376
383
|
SignalAgent.init(@harbor.control_port)
|
|
377
384
|
GrandAgentMonitor.init(@harbor.grand_agents, anchored_port_map)
|
|
378
385
|
create_pid_file(Process.pid)
|
|
386
|
+
GrandAgentMonitor.join
|
|
379
387
|
end
|
|
380
388
|
|
|
381
389
|
def self.child_start(agt_id)
|
|
382
390
|
|
|
383
391
|
invoke_runners()
|
|
384
392
|
|
|
385
|
-
|
|
393
|
+
@anchorable_port_map = {}
|
|
386
394
|
unanchored_port_map = {}
|
|
387
395
|
|
|
388
396
|
if(SysUtil.run_on_windows())
|
|
389
|
-
open_ports(
|
|
397
|
+
open_ports(@anchorable_port_map, unanchored_port_map)
|
|
390
398
|
else
|
|
391
399
|
@derived_port_nos.each do |no|
|
|
392
400
|
# Rebuild server socket
|
|
@@ -402,27 +410,23 @@ module Baykit
|
|
|
402
410
|
end
|
|
403
411
|
|
|
404
412
|
if portDkr == nil
|
|
405
|
-
BayLog.fatal("Cannot find port docker: %d", port)
|
|
413
|
+
BayLog.fatal("Cannot find port docker: %d", portDkr.port)
|
|
406
414
|
exit(1)
|
|
407
415
|
end
|
|
408
416
|
|
|
409
|
-
|
|
417
|
+
BayLog.debug("agt#%d server port=%d socket=%s(%d)", agt_id, portDkr.port, skt, no)
|
|
418
|
+
@anchorable_port_map[IORudder.new(skt)] = portDkr
|
|
410
419
|
end
|
|
411
420
|
end
|
|
412
421
|
|
|
413
|
-
skt= TCPSocket.new("localhost", @monitor_port)
|
|
414
422
|
|
|
415
|
-
GrandAgent.init(
|
|
416
|
-
[agt_id],
|
|
417
|
-
anchored_port_map,
|
|
418
|
-
nil,
|
|
419
|
-
@harbor.max_ships,
|
|
420
|
-
@harbor.multi_core
|
|
421
|
-
)
|
|
423
|
+
GrandAgent.init([agt_id], @harbor.max_ships)
|
|
422
424
|
agt = GrandAgent.get(agt_id)
|
|
423
425
|
|
|
424
|
-
|
|
426
|
+
skt= TCPSocket.new("localhost", @monitor_port)
|
|
427
|
+
rd = IORudder.new(skt)
|
|
425
428
|
|
|
429
|
+
agt.add_command_receiver(rd)
|
|
426
430
|
agt.run()
|
|
427
431
|
end
|
|
428
432
|
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
+
require 'baykit/bayserver/sink'
|
|
2
|
+
|
|
1
3
|
require 'baykit/bayserver/agent/next_socket_action'
|
|
2
|
-
require 'baykit/bayserver/
|
|
4
|
+
require 'baykit/bayserver/rudders/io_rudder'
|
|
5
|
+
require 'baykit/bayserver/ships/ship'
|
|
3
6
|
require 'baykit/bayserver/tours/package'
|
|
4
7
|
|
|
5
8
|
module Baykit
|
|
6
9
|
module BayServer
|
|
7
|
-
module
|
|
8
|
-
|
|
9
|
-
class InboundShip < Baykit::BayServer::WaterCraft::Ship
|
|
10
|
+
module Common
|
|
11
|
+
class InboundShip < Baykit::BayServer::Ships::Ship
|
|
10
12
|
|
|
13
|
+
include Baykit::BayServer
|
|
11
14
|
include Baykit::BayServer::Agent
|
|
12
15
|
include Baykit::BayServer::Tours
|
|
13
|
-
include Baykit::BayServer::WaterCraft
|
|
14
16
|
include Baykit::BayServer::Util
|
|
17
|
+
include Baykit::BayServer::Rudders
|
|
18
|
+
include Baykit::BayServer::Ships
|
|
15
19
|
|
|
16
20
|
# class variables
|
|
17
21
|
class << self
|
|
@@ -23,27 +27,29 @@ module Baykit
|
|
|
23
27
|
|
|
24
28
|
attr :port_docker
|
|
25
29
|
|
|
26
|
-
attr :
|
|
30
|
+
attr :protocol_handler
|
|
27
31
|
attr_accessor :need_end
|
|
28
32
|
attr :socket_timeout_sec
|
|
29
|
-
attr :
|
|
33
|
+
attr :tour_store
|
|
30
34
|
attr :active_tours
|
|
35
|
+
attr :lock
|
|
31
36
|
|
|
32
37
|
def initialize()
|
|
33
38
|
super
|
|
34
|
-
@lock = Monitor.new
|
|
39
|
+
@lock = ::Monitor.new
|
|
35
40
|
@active_tours = []
|
|
36
41
|
end
|
|
37
42
|
|
|
38
43
|
def to_s
|
|
39
|
-
|
|
44
|
+
proto = @protocol_handler != nil ? "[" + @protocol_handler.protocol + "]" : ""
|
|
45
|
+
return "agt##{@agent_id} ship##{@ship_id}/#{@object_id}#{proto}"
|
|
40
46
|
end
|
|
41
47
|
|
|
42
|
-
def init_inbound(
|
|
43
|
-
self.init(
|
|
44
|
-
@port_docker =
|
|
48
|
+
def init_inbound(rd, agt_id, tp, port_dkr, proto_hnd)
|
|
49
|
+
self.init(agt_id, rd, tp)
|
|
50
|
+
@port_docker = port_dkr
|
|
45
51
|
@socket_timeout_sec = @port_docker.timeout_sec >= 0 ? @port_docker.timeout_sec : BayServer.harbor.socket_timeout_sec
|
|
46
|
-
@tour_store = TourStore.get_store(
|
|
52
|
+
@tour_store = TourStore.get_store(agt_id)
|
|
47
53
|
set_protocol_handler(proto_hnd)
|
|
48
54
|
end
|
|
49
55
|
|
|
@@ -61,10 +67,74 @@ module Baykit
|
|
|
61
67
|
@need_end = false
|
|
62
68
|
end
|
|
63
69
|
|
|
70
|
+
######################################################
|
|
71
|
+
# Implements Ship
|
|
72
|
+
######################################################
|
|
73
|
+
|
|
74
|
+
def notify_handshake_done(proto)
|
|
75
|
+
return NextSocketAction::CONTINUE
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def notify_connect
|
|
79
|
+
raise Sink.new
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def notify_read(buf)
|
|
83
|
+
return @protocol_handler.bytes_received(buf)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def notify_eof
|
|
87
|
+
BayLog.debug("%s EOF detected", self)
|
|
88
|
+
return NextSocketAction::CLOSE
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def notify_error(e)
|
|
92
|
+
BayLog.debug_e(e, "%s Error notified", self)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def notify_protocol_error(e)
|
|
96
|
+
BayLog.debug_e(e)
|
|
97
|
+
return tour_handler.on_protocol_error(e)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def notify_close
|
|
101
|
+
BayLog.debug("%s notifyClose", self)
|
|
102
|
+
|
|
103
|
+
abort_tours
|
|
104
|
+
|
|
105
|
+
if @active_tours.length > 0
|
|
106
|
+
# cannot close because there are some running tours
|
|
107
|
+
BayLog.debug("%s cannot end ship because there are some running tours (ignore)", self)
|
|
108
|
+
@need_end = true
|
|
109
|
+
else
|
|
110
|
+
end_ship
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def check_timeout(duration_sec)
|
|
115
|
+
if @socket_timeout_sec <= 0
|
|
116
|
+
timeout = false
|
|
117
|
+
elsif @keeping
|
|
118
|
+
timeout = duration_sec >= BayServer.harbor.keep_timeout_sec
|
|
119
|
+
else
|
|
120
|
+
timeout = duration_sec >= @socket_timeout_sec
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
BayLog.debug("%s Check timeout: dur=%d, timeout=%s, keeping=%s limit=%d keeplim=%d",
|
|
124
|
+
self, duration_sec, timeout, @keeping, @socket_timeout_sec, BayServer.harbor.keep_timeout_sec)
|
|
125
|
+
return timeout;
|
|
126
|
+
end
|
|
127
|
+
|
|
64
128
|
######################################################
|
|
65
129
|
# Other methods
|
|
66
130
|
######################################################
|
|
67
131
|
|
|
132
|
+
def set_protocol_handler(proto_handler)
|
|
133
|
+
@protocol_handler = proto_handler
|
|
134
|
+
proto_handler.init(self)
|
|
135
|
+
BayLog.debug("%s protocol handler is set", self)
|
|
136
|
+
end
|
|
137
|
+
|
|
68
138
|
def get_tour(tur_key, force=false, rent=true)
|
|
69
139
|
tur = nil
|
|
70
140
|
store_key = InboundShip.uniq_key(@ship_id, tur_key)
|
|
@@ -98,6 +168,7 @@ module Baykit
|
|
|
98
168
|
|
|
99
169
|
if tur.zombie? || tur.aborted?
|
|
100
170
|
# Don't send peer any data
|
|
171
|
+
BayLog.debug("%s zombie tur", tur)
|
|
101
172
|
return
|
|
102
173
|
end
|
|
103
174
|
|
|
@@ -137,7 +208,8 @@ module Baykit
|
|
|
137
208
|
@port_docker.additional_headers.each do |nv|
|
|
138
209
|
tur.res.headers.add(nv[0], nv[1])
|
|
139
210
|
end
|
|
140
|
-
|
|
211
|
+
BayLog.debug("%s send_res_headers", tur)
|
|
212
|
+
tour_handler.send_res_headers(tur)
|
|
141
213
|
end
|
|
142
214
|
end
|
|
143
215
|
|
|
@@ -156,15 +228,15 @@ module Baykit
|
|
|
156
228
|
def send_res_content(check_id, tur, bytes, ofs, len, &callback)
|
|
157
229
|
|
|
158
230
|
BayLog.debug("%s send_res_content bytes: %d", self, len)
|
|
159
|
-
|
|
160
231
|
check_ship_id(check_id)
|
|
161
232
|
|
|
162
233
|
max_len = @protocol_handler.max_res_packet_data_size();
|
|
234
|
+
BayLog.debug("%s max_len=%d", self, max_len)
|
|
163
235
|
if len > max_len
|
|
164
236
|
send_res_content(Ship::SHIP_ID_NOCHECK, tur, bytes, ofs, max_len)
|
|
165
237
|
send_res_content(Ship::SHIP_ID_NOCHECK, tur, bytes, ofs + max_len, len - max_len, &callback)
|
|
166
238
|
else
|
|
167
|
-
|
|
239
|
+
tour_handler.send_res_content(tur, bytes, ofs, len, &callback)
|
|
168
240
|
end
|
|
169
241
|
end
|
|
170
242
|
|
|
@@ -191,7 +263,7 @@ module Baykit
|
|
|
191
263
|
end
|
|
192
264
|
end
|
|
193
265
|
|
|
194
|
-
|
|
266
|
+
tour_handler.send_end_tour(tur, keep_alive, &callback)
|
|
195
267
|
end
|
|
196
268
|
end
|
|
197
269
|
|
|
@@ -236,7 +308,7 @@ module Baykit
|
|
|
236
308
|
|
|
237
309
|
def end_ship()
|
|
238
310
|
BayLog.debug("%s endShip", self)
|
|
239
|
-
@port_docker.return_protocol_handler(@
|
|
311
|
+
@port_docker.return_protocol_handler(@agent_id, @protocol_handler)
|
|
240
312
|
@port_docker.return_ship(self)
|
|
241
313
|
end
|
|
242
314
|
|
|
@@ -259,6 +331,10 @@ module Baykit
|
|
|
259
331
|
end
|
|
260
332
|
end
|
|
261
333
|
|
|
334
|
+
def tour_handler
|
|
335
|
+
return @protocol_handler.command_handler
|
|
336
|
+
end
|
|
337
|
+
|
|
262
338
|
protected
|
|
263
339
|
def send_error_content(chk_id, tour, content)
|
|
264
340
|
|
|
@@ -306,7 +382,6 @@ module Baykit
|
|
|
306
382
|
end
|
|
307
383
|
end
|
|
308
384
|
end
|
|
309
|
-
end
|
|
310
385
|
end
|
|
311
386
|
end
|
|
312
387
|
end
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
require 'baykit/bayserver/agent/grand_agent'
|
|
2
2
|
require 'baykit/bayserver/agent/lifecycle_listener'
|
|
3
3
|
|
|
4
|
-
require 'baykit/bayserver/
|
|
5
|
-
require 'baykit/bayserver/
|
|
4
|
+
require 'baykit/bayserver/common/inbound_ship'
|
|
5
|
+
require 'baykit/bayserver/common/inbound_ship_store'
|
|
6
6
|
|
|
7
7
|
require 'baykit/bayserver/util/object_store'
|
|
8
8
|
require 'baykit/bayserver/util/string_util'
|
|
9
9
|
|
|
10
10
|
module Baykit
|
|
11
11
|
module BayServer
|
|
12
|
-
module
|
|
13
|
-
module Base
|
|
12
|
+
module Common
|
|
14
13
|
class InboundShipStore < Baykit::BayServer::Util::ObjectStore
|
|
15
14
|
include Baykit::BayServer::WaterCraft
|
|
16
15
|
include Baykit::BayServer::Util
|
|
@@ -19,12 +18,12 @@ module Baykit
|
|
|
19
18
|
class AgentListener
|
|
20
19
|
include Baykit::BayServer::Agent::LifecycleListener # implements
|
|
21
20
|
|
|
22
|
-
def add(
|
|
23
|
-
InboundShipStore.stores[
|
|
21
|
+
def add(agt_id)
|
|
22
|
+
InboundShipStore.stores[agt_id] = InboundShipStore.new();
|
|
24
23
|
end
|
|
25
24
|
|
|
26
|
-
def remove(
|
|
27
|
-
InboundShipStore.stores.delete(
|
|
25
|
+
def remove(agt_id)
|
|
26
|
+
InboundShipStore.stores.delete(agt_id);
|
|
28
27
|
end
|
|
29
28
|
end
|
|
30
29
|
|
|
@@ -60,7 +59,6 @@ module Baykit
|
|
|
60
59
|
end
|
|
61
60
|
|
|
62
61
|
end
|
|
63
|
-
end
|
|
64
62
|
end
|
|
65
63
|
end
|
|
66
64
|
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Common
|
|
6
|
+
module Multiplexer # interface
|
|
7
|
+
|
|
8
|
+
def add_rudder_state(rd, st)
|
|
9
|
+
raise NotImplementedError.new
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def get_rudder_state(rd)
|
|
13
|
+
raise NotImplementedError.new
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def get_transporter(rd)
|
|
17
|
+
raise NotImplementedError.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def req_accept(rd)
|
|
21
|
+
raise NotImplementedError.new
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def req_connect(rd, adr)
|
|
25
|
+
raise NotImplementedError.new
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def req_read(rd)
|
|
29
|
+
raise NotImplementedError.new
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def req_write(rd, buf, adr, tag, lis)
|
|
33
|
+
raise NotImplementedError.new
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def req_end(rd)
|
|
37
|
+
raise NotImplementedError.new
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def req_close(rd)
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def cancel_read(st)
|
|
45
|
+
raise NotImplementedError.new
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def cancel_write(st)
|
|
49
|
+
raise NotImplementedError.new
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def next_accept(st)
|
|
53
|
+
raise NotImplementedError.new
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def next_read(st)
|
|
57
|
+
raise NotImplementedError.new
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def next_write(st)
|
|
61
|
+
raise NotImplementedError.new
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def shutdown()
|
|
65
|
+
raise NotImplementedError.new
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def is_non_blocking()
|
|
69
|
+
raise NotImplementedError.new
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def use_async_api()
|
|
73
|
+
raise NotImplementedError.new
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def consume_oldest_unit(st)
|
|
77
|
+
raise NotImplementedError.new
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def close_rudder(st)
|
|
81
|
+
raise NotImplementedError.new
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def is_busy
|
|
85
|
+
raise NotImplementedError.new
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def on_busy
|
|
89
|
+
raise NotImplementedError.new
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def on_free
|
|
93
|
+
raise NotImplementedError.new
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'baykit/bayserver/ships/ship'
|
|
2
|
+
require 'baykit/bayserver/sink'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
module Baykit
|
|
6
|
+
module BayServer
|
|
7
|
+
module Common
|
|
8
|
+
|
|
9
|
+
class ReadOnlyShip < Baykit::BayServer::Ships::Ship
|
|
10
|
+
|
|
11
|
+
include Baykit::BayServer
|
|
12
|
+
|
|
13
|
+
#########################################
|
|
14
|
+
# Implements Reusable
|
|
15
|
+
#########################################
|
|
16
|
+
def reset
|
|
17
|
+
super
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
#########################################
|
|
22
|
+
# Implements Ship
|
|
23
|
+
#########################################
|
|
24
|
+
|
|
25
|
+
def notify_handshake_done(proto)
|
|
26
|
+
raise Sink.new
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def notify_connect
|
|
30
|
+
raise Sink.new
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def notify_protocol_error(e)
|
|
34
|
+
raise Sink.new
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Common
|
|
6
|
+
module Recipient # interface
|
|
7
|
+
|
|
8
|
+
#
|
|
9
|
+
# Receive letters
|
|
10
|
+
#
|
|
11
|
+
def receive(wait)
|
|
12
|
+
raise NotImplementedError.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
#
|
|
16
|
+
# Wake up the recipient
|
|
17
|
+
#
|
|
18
|
+
def wakeup()
|
|
19
|
+
raise NotImplementedError.new
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Common
|
|
6
|
+
class Vehicle # abstract class
|
|
7
|
+
|
|
8
|
+
attr :id
|
|
9
|
+
|
|
10
|
+
def initialize(id)
|
|
11
|
+
@id = id
|
|
12
|
+
end
|
|
13
|
+
def run()
|
|
14
|
+
raise NotImplementedError.new
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def on_timer()
|
|
18
|
+
raise NotImplementedError.new
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|