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.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/lib/baykit/bayserver/agent/accept_handler.rb +0 -26
  3. data/lib/baykit/bayserver/agent/channel_listener.rb +6 -6
  4. data/lib/baykit/bayserver/agent/command_receiver.rb +97 -38
  5. data/lib/baykit/bayserver/agent/grand_agent.rb +444 -134
  6. data/lib/baykit/bayserver/agent/letter.rb +30 -0
  7. data/lib/baykit/bayserver/agent/lifecycle_listener.rb +9 -7
  8. data/lib/baykit/bayserver/agent/monitor/grand_agent_monitor.rb +298 -0
  9. data/lib/baykit/bayserver/agent/multiplexer/job_multiplexer.rb +257 -0
  10. data/lib/baykit/bayserver/agent/multiplexer/job_multiplexer_base.rb +52 -0
  11. data/lib/baykit/bayserver/agent/multiplexer/multiplexer_base.rb +150 -0
  12. data/lib/baykit/bayserver/agent/multiplexer/plain_transporter.rb +129 -0
  13. data/lib/baykit/bayserver/agent/multiplexer/rudder_state.rb +81 -0
  14. data/lib/baykit/bayserver/agent/multiplexer/secure_transporter.rb +50 -0
  15. data/lib/baykit/bayserver/agent/multiplexer/spider_multiplexer.rb +561 -0
  16. data/lib/baykit/bayserver/agent/multiplexer/spin_multiplexer.rb +311 -0
  17. data/lib/baykit/bayserver/agent/multiplexer/taxi_multiplexer.rb +194 -0
  18. data/lib/baykit/bayserver/agent/multiplexer/transporter.rb +61 -0
  19. data/lib/baykit/bayserver/agent/multiplexer/write_unit.rb +30 -0
  20. data/lib/baykit/bayserver/agent/non_blocking_handler.rb +0 -319
  21. data/lib/baykit/bayserver/agent/signal/signal_agent.rb +2 -1
  22. data/lib/baykit/bayserver/agent/timer_handler.rb +1 -1
  23. data/lib/baykit/bayserver/agent/transporter/data_listener.rb +7 -7
  24. data/lib/baykit/bayserver/agent/transporter/package.rb +0 -3
  25. data/lib/baykit/bayserver/agent/transporter/transporter.rb +5 -139
  26. data/lib/baykit/bayserver/bay_log.rb +1 -0
  27. data/lib/baykit/bayserver/bayserver.rb +32 -28
  28. data/lib/baykit/bayserver/{util → common}/groups.rb +1 -1
  29. data/lib/baykit/bayserver/common/inbound_handler.rb +12 -0
  30. data/lib/baykit/bayserver/{docker/base → common}/inbound_ship.rb +94 -19
  31. data/lib/baykit/bayserver/{docker/base → common}/inbound_ship_store.rb +7 -9
  32. data/lib/baykit/bayserver/common/multiplexer.rb +98 -0
  33. data/lib/baykit/bayserver/common/postpone.rb +15 -0
  34. data/lib/baykit/bayserver/common/read_only_ship.rb +42 -0
  35. data/lib/baykit/bayserver/common/recipient.rb +24 -0
  36. data/lib/baykit/bayserver/common/vehicle.rb +24 -0
  37. data/lib/baykit/bayserver/common/vehicle_runner.rb +127 -0
  38. data/lib/baykit/bayserver/{docker/warp → common}/warp_data.rb +18 -10
  39. data/lib/baykit/bayserver/common/warp_handler.rb +27 -0
  40. data/lib/baykit/bayserver/{docker/warp → common}/warp_ship.rb +107 -27
  41. data/lib/baykit/bayserver/{docker/warp → common}/warp_ship_store.rb +3 -8
  42. data/lib/baykit/bayserver/docker/base/inbound_data_listener.rb +2 -2
  43. data/lib/baykit/bayserver/docker/base/port_base.rb +59 -27
  44. data/lib/baykit/bayserver/docker/{warp/warp_docker.rb → base/warp_base.rb} +43 -50
  45. data/lib/baykit/bayserver/docker/built_in/built_in_harbor_docker.rb +118 -31
  46. data/lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb +60 -63
  47. data/lib/baykit/bayserver/docker/built_in/built_in_permission_docker.rb +11 -10
  48. data/lib/baykit/bayserver/docker/built_in/built_in_secure_docker.rb +13 -4
  49. data/lib/baykit/bayserver/docker/city.rb +27 -13
  50. data/lib/baykit/bayserver/docker/club.rb +8 -8
  51. data/lib/baykit/bayserver/docker/docker.rb +9 -1
  52. data/lib/baykit/bayserver/docker/harbor.rb +184 -22
  53. data/lib/baykit/bayserver/docker/permission.rb +7 -6
  54. data/lib/baykit/bayserver/docker/port.rb +39 -11
  55. data/lib/baykit/bayserver/docker/secure.rb +11 -9
  56. data/lib/baykit/bayserver/docker/send_file/file_content_handler.rb +99 -4
  57. data/lib/baykit/bayserver/docker/send_file/send_file_docker.rb +6 -2
  58. data/lib/baykit/bayserver/docker/send_file/send_file_ship.rb +92 -0
  59. data/lib/baykit/bayserver/docker/town.rb +31 -15
  60. data/lib/baykit/bayserver/docker/trouble.rb +17 -5
  61. data/lib/baykit/bayserver/docker/warp.rb +34 -0
  62. data/lib/baykit/bayserver/mem_usage.rb +9 -9
  63. data/lib/baykit/bayserver/protocol/command_packer.rb +1 -8
  64. data/lib/baykit/bayserver/protocol/packet_packer.rb +7 -11
  65. data/lib/baykit/bayserver/protocol/packet_store.rb +4 -4
  66. data/lib/baykit/bayserver/protocol/protocol_handler.rb +26 -8
  67. data/lib/baykit/bayserver/protocol/protocol_handler_store.rb +5 -5
  68. data/lib/baykit/bayserver/rudders/io_rudder.rb +62 -0
  69. data/lib/baykit/bayserver/rudders/rudder.rb +29 -0
  70. data/lib/baykit/bayserver/{watercraft → ships}/ship.rb +65 -41
  71. data/lib/baykit/bayserver/taxi/taxi.rb +15 -10
  72. data/lib/baykit/bayserver/taxi/taxi_runner.rb +9 -94
  73. data/lib/baykit/bayserver/tours/read_file_taxi.rb +2 -2
  74. data/lib/baykit/bayserver/tours/req_content_handler.rb +16 -13
  75. data/lib/baykit/bayserver/tours/tour.rb +2 -2
  76. data/lib/baykit/bayserver/tours/tour_handler.rb +36 -0
  77. data/lib/baykit/bayserver/tours/tour_req.rb +14 -24
  78. data/lib/baykit/bayserver/tours/tour_res.rb +5 -89
  79. data/lib/baykit/bayserver/tours/tour_store.rb +5 -5
  80. data/lib/baykit/bayserver/train/train_runner.rb +17 -13
  81. data/lib/baykit/bayserver/util/data_consume_listener.rb +1 -1
  82. data/lib/baykit/bayserver/util/executor_service.rb +11 -7
  83. data/lib/baykit/bayserver/util/ip_matcher.rb +9 -39
  84. data/lib/baykit/bayserver/util/locale.rb +1 -1
  85. data/lib/baykit/bayserver/util/selector.rb +24 -5
  86. data/lib/baykit/bayserver/util/sys_util.rb +6 -6
  87. data/lib/baykit/bayserver/version.rb +1 -1
  88. metadata +37 -18
  89. data/lib/baykit/bayserver/agent/grand_agent_monitor.rb +0 -231
  90. data/lib/baykit/bayserver/agent/transporter/plain_transporter.rb +0 -55
  91. data/lib/baykit/bayserver/agent/transporter/secure_transporter.rb +0 -81
  92. data/lib/baykit/bayserver/docker/base/inbound_handler.rb +0 -42
  93. data/lib/baykit/bayserver/docker/warp/package.rb +0 -4
  94. data/lib/baykit/bayserver/docker/warp/warp_data_listener.rb +0 -112
  95. data/lib/baykit/bayserver/docker/warp/warp_handler.rb +0 -38
  96. /data/lib/baykit/bayserver/{util → common}/cities.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef1870c148ef4f045575bdd31e28b5e13808013fa159e0642a627471e0b80962
4
- data.tar.gz: 0247c5d8b92f4c9f1cf95b20ae02687202d524c6edd82158711bce98fa5e8e6e
3
+ metadata.gz: 38bca64c229f0bad4d592192eeff7d6daefdc188399675a1fc60f8ba768294ef
4
+ data.tar.gz: 2020fd1e4f422ce497dd12b8c6107101a4c3e15cc22fda349edc689d8542a4d6
5
5
  SHA512:
6
- metadata.gz: c3460ae4f7b5d50945fb20e5f6072838fe7277ccf6d6b9f0cd9d8e51e4ecd3c87a729121cc1d502edb8ddb120841e99377a63ba62324515a74de06d27fe769b6
7
- data.tar.gz: 22d1f706b151704256cf55526e8b4bc6d29a04c2ab543c9803cb32316719239140997390d7b88b500e1d248cc8281821e68666ba68f2abdddd247880a2dbc698
6
+ metadata.gz: 6b8d633c192766082c8e9d9cfa5b161aa982803b55d0f5c3e6a09c86b3aac65b549254f9dca34fd4f8cf4b1f68d4cb1c6ae2d1f9f5236ade26b753eedd62c607
7
+ data.tar.gz: 58458cf12a212850c552c08827cdee15e6e7bd78fdf4bd9b87e22505fe034c843494fc008566b7b73a4c3a4b4c72e150f810e8b320caa6670f941667afbde12a
@@ -23,32 +23,6 @@ module Baykit
23
23
  end
24
24
 
25
25
  def on_acceptable(server_skt)
26
- port_dkr = @port_map[server_skt]
27
-
28
- begin
29
- client_skt, = server_skt.accept_nonblock
30
- rescue IO::WaitReadable
31
- # Maybe another agent get socket
32
- BayLog.debug("Accept failed (must wait readable)")
33
- return
34
- end
35
-
36
- BayLog.debug("Accepted: skt=%d", client_skt.fileno)
37
-
38
- begin
39
- port_dkr.check_admitted(client_skt)
40
- rescue => e
41
- BayLog.error_e(e)
42
- client_skt.close()
43
- return
44
- end
45
-
46
- client_skt.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
47
-
48
- tp = port_dkr.new_transporter(@agent, client_skt)
49
- @agent.non_blocking_handler.ask_to_start(client_skt)
50
- @agent.non_blocking_handler.ask_to_read(client_skt)
51
- @ch_count += 1
52
26
  end
53
27
 
54
28
  def on_closed()
@@ -5,27 +5,27 @@ module Baykit
5
5
  module ChannelListener # interface
6
6
 
7
7
  def on_readable(chk_ch)
8
- raise NotImplementedError()
8
+ raise NotImplementedError.new
9
9
  end
10
10
 
11
11
  def on_writable(chk_ch)
12
- raise NotImplementedError()
12
+ raise NotImplementedError.new
13
13
  end
14
14
 
15
15
  def on_connectable(chk_ch)
16
- raise NotImplementedError()
16
+ raise NotImplementedError.new
17
17
  end
18
18
 
19
19
  def on_error(chk_ch, e)
20
- raise NotImplementedError()
20
+ raise NotImplementedError.new
21
21
  end
22
22
 
23
23
  def on_closed(chk_ch)
24
- raise NotImplementedError()
24
+ raise NotImplementedError.new
25
25
  end
26
26
 
27
27
  def check_timeout(chk_ch, duration)
28
- raise NotImplementedError()
28
+ raise NotImplementedError.new
29
29
  end
30
30
 
31
31
  end
@@ -1,5 +1,6 @@
1
1
 
2
-
2
+ require 'baykit/bayserver/agent/monitor/grand_agent_monitor'
3
+ require 'baykit/bayserver/ships/ship'
3
4
 
4
5
  module Baykit
5
6
  module BayServer
@@ -7,66 +8,124 @@ module Baykit
7
8
  #
8
9
  # CommandReceiver receives commands from GrandAgentMonitor
9
10
  #
10
- class CommandReceiver
11
+ class CommandReceiver < Baykit::BayServer::Ships::Ship
12
+
13
+ include Baykit::BayServer
14
+ include Baykit::BayServer::Agent::Monitor
11
15
  include Baykit::BayServer::Util
12
- attr :agent
13
- attr :communication_channel
14
- attr :aborted
15
-
16
- def initialize(agent, com_ch)
17
- @agent = agent
18
- @communication_channel = com_ch
19
- @aborted = false
16
+
17
+
18
+ def init(agt_id, rd, tp)
19
+ super
20
20
  end
21
21
 
22
22
  def to_s()
23
- return "ComReceiver##{@agent.agent_id}"
23
+ return "ComReceiver##{@agent_id}"
24
+ end
25
+
26
+ #########################################
27
+ # Implements Ship
28
+ #########################################
29
+ def notify_handshake_done(proto)
30
+ raise Sink.new
31
+ end
32
+
33
+ def notify_connect
34
+ raise Sink.new
35
+ end
36
+
37
+ def notify_read(buf)
38
+ BayLog.debug("%s notify_read", self)
39
+ cmd = GrandAgentMonitor.buffer_to_int(buf)
40
+ on_read_command(cmd)
41
+ return NextSocketAction::CONTINUE
42
+ end
43
+
44
+ def notify_eof
45
+ BayLog.debug("%s notify_eof", self)
46
+ return NextSocketAction::CLOSE
47
+ end
48
+
49
+ def notify_error(e)
50
+ BayLog.error_e(e)
51
+ end
52
+
53
+ def notify_protocol_error(e)
54
+ raise Sink.new
24
55
  end
25
56
 
26
- def on_pipe_readable()
27
- cmd = IOUtil.read_int32(@communication_channel)
28
- if cmd == nil
29
- BayLog.debug("%s pipe closed: %d", self, @communication_channel)
30
- @agent.abort_agent()
31
- else
32
- BayLog.debug("%s receive command %d pipe=%d", self, cmd, @communication_channel)
33
- begin
57
+ def notify_close
58
+ end
59
+
60
+ def check_timeout(duration_sec)
61
+ return false
62
+ end
63
+
64
+ #########################################
65
+ # Custom methods
66
+ #########################################
67
+ def on_read_command(cmd)
68
+ agt = GrandAgent.get(@agent_id)
69
+
70
+ BayLog.debug("%s receive command %d rd=%s", self, cmd, @rudder)
71
+ begin
72
+ if cmd == nil
73
+ BayLog.debug("%s pipe closed", self)
74
+ agt.abort_agent
75
+ else
34
76
  case cmd
35
77
  when GrandAgent::CMD_RELOAD_CERT
36
- @agent.reload_cert()
78
+ agt.reload_cert
37
79
  when GrandAgent::CMD_MEM_USAGE
38
- @agent.print_usage()
80
+ agt.print_usage
39
81
  when GrandAgent::CMD_SHUTDOWN
40
- @agent.req_shutdown()
41
- @aborted = true
82
+ agt.req_shutdown
42
83
  when GrandAgent::CMD_ABORT
43
- IOUtil.write_int32(@communication_channel, GrandAgent::CMD_OK)
44
- @agent.abort_agent()
84
+ send_command_to_monitor(agt, GrandAgent::CMD_OK, true)
85
+ agt.abort_agent
86
+ return
87
+ when GrandAgent::CMD_CATCHUP
88
+ agt.catch_up
45
89
  return
46
90
  else
47
91
  BayLog.error("Unknown command: %d", cmd)
48
92
  end
49
- IOUtil.write_int32(@communication_channel, GrandAgent::CMD_OK)
50
- rescue IOError => e
51
- BayLog.debug("%s Read failed (maybe agent shut down): %s", self, e)
52
- ensure
53
- BayLog.debug("%s Command ended", self)
93
+
94
+ send_command_to_monitor(agt, GrandAgent::CMD_OK, false)
54
95
  end
96
+ rescue IOError => e
97
+ BayLog.error_e(e, "%s Command thread aborted(end)", self)
98
+ close
99
+ ensure
100
+ BayLog.debug("%s Command ended", self)
55
101
  end
56
102
  end
57
103
 
58
- def end()
59
- BayLog.debug("%s end", self)
104
+ def send_command_to_monitor(agt, cmd, sync)
105
+ buf = GrandAgentMonitor.int_to_buffer(cmd)
106
+ if sync
107
+
108
+ end
109
+ end
110
+
111
+ def end
112
+ BayLog.debug("%s send end to monitor", self)
60
113
  begin
61
- IOUtil.write_int32(@communication_channel, GrandAgent::CMD_CLOSE)
62
- rescue => e
63
- BayLog.error_e(e, "%s Write error", @agent);
114
+ send_command_to_monitor(nil, GrandAgent::CMD_CLOSE, true)
115
+ rescue IOError => e
116
+ BayLog.error_e(e)
64
117
  end
65
- close()
118
+
119
+ close
66
120
  end
67
121
 
68
- def close()
69
- @communication_channel.close()
122
+ def close
123
+ if @closed
124
+ return
125
+ end
126
+
127
+ @rudder.close
128
+ @closed = true
70
129
  end
71
130
 
72
131
  end