bayserver-core 2.2.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 (149) hide show
  1. checksums.yaml +7 -0
  2. data/lib/baykit/bayserver/agent/accept_handler.rb +97 -0
  3. data/lib/baykit/bayserver/agent/channel_listener.rb +35 -0
  4. data/lib/baykit/bayserver/agent/command_receiver.rb +75 -0
  5. data/lib/baykit/bayserver/agent/grand_agent.rb +319 -0
  6. data/lib/baykit/bayserver/agent/grand_agent_monitor.rb +217 -0
  7. data/lib/baykit/bayserver/agent/next_socket_action.rb +14 -0
  8. data/lib/baykit/bayserver/agent/non_blocking_handler.rb +433 -0
  9. data/lib/baykit/bayserver/agent/package.rb +3 -0
  10. data/lib/baykit/bayserver/agent/signal/signal_agent.rb +165 -0
  11. data/lib/baykit/bayserver/agent/signal/signal_proxy.rb +18 -0
  12. data/lib/baykit/bayserver/agent/signal/signal_sender.rb +99 -0
  13. data/lib/baykit/bayserver/agent/spin_handler.rb +140 -0
  14. data/lib/baykit/bayserver/agent/transporter/data_listener.rb +38 -0
  15. data/lib/baykit/bayserver/agent/transporter/package.rb +3 -0
  16. data/lib/baykit/bayserver/agent/transporter/plain_transporter.rb +55 -0
  17. data/lib/baykit/bayserver/agent/transporter/secure_transporter.rb +81 -0
  18. data/lib/baykit/bayserver/agent/transporter/spin_read_transporter.rb +111 -0
  19. data/lib/baykit/bayserver/agent/transporter/spin_write_transporter.rb +125 -0
  20. data/lib/baykit/bayserver/agent/transporter/transporter.rb +466 -0
  21. data/lib/baykit/bayserver/agent/upgrade_exception.rb +11 -0
  22. data/lib/baykit/bayserver/bay_dockers.rb +60 -0
  23. data/lib/baykit/bayserver/bay_exception.rb +12 -0
  24. data/lib/baykit/bayserver/bay_log.rb +148 -0
  25. data/lib/baykit/bayserver/bay_message.rb +20 -0
  26. data/lib/baykit/bayserver/bayserver.rb +529 -0
  27. data/lib/baykit/bayserver/bcf/bcf_document.rb +44 -0
  28. data/lib/baykit/bayserver/bcf/bcf_element.rb +30 -0
  29. data/lib/baykit/bayserver/bcf/bcf_key_val.rb +19 -0
  30. data/lib/baykit/bayserver/bcf/bcf_object.rb +15 -0
  31. data/lib/baykit/bayserver/bcf/bcf_parser.rb +180 -0
  32. data/lib/baykit/bayserver/bcf/package.rb +6 -0
  33. data/lib/baykit/bayserver/bcf/parse_exception.rb +15 -0
  34. data/lib/baykit/bayserver/config_exception.rb +25 -0
  35. data/lib/baykit/bayserver/constants.rb +8 -0
  36. data/lib/baykit/bayserver/docker/base/club_base.rb +117 -0
  37. data/lib/baykit/bayserver/docker/base/docker_base.rb +66 -0
  38. data/lib/baykit/bayserver/docker/base/inbound_data_listener.rb +89 -0
  39. data/lib/baykit/bayserver/docker/base/inbound_handler.rb +42 -0
  40. data/lib/baykit/bayserver/docker/base/inbound_ship.rb +341 -0
  41. data/lib/baykit/bayserver/docker/base/inbound_ship_store.rb +65 -0
  42. data/lib/baykit/bayserver/docker/base/port_base.rb +228 -0
  43. data/lib/baykit/bayserver/docker/base/reroute_base.rb +28 -0
  44. data/lib/baykit/bayserver/docker/built_in/built_in_city_docker.rb +303 -0
  45. data/lib/baykit/bayserver/docker/built_in/built_in_harbor_docker.rb +226 -0
  46. data/lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb +302 -0
  47. data/lib/baykit/bayserver/docker/built_in/built_in_permission_docker.rb +242 -0
  48. data/lib/baykit/bayserver/docker/built_in/built_in_secure_docker.rb +157 -0
  49. data/lib/baykit/bayserver/docker/built_in/built_in_town_docker.rb +117 -0
  50. data/lib/baykit/bayserver/docker/built_in/built_in_trouble_docker.rb +57 -0
  51. data/lib/baykit/bayserver/docker/built_in/log_boat.rb +71 -0
  52. data/lib/baykit/bayserver/docker/built_in/log_item.rb +18 -0
  53. data/lib/baykit/bayserver/docker/built_in/log_item_factory.rb +18 -0
  54. data/lib/baykit/bayserver/docker/built_in/log_items.rb +287 -0
  55. data/lib/baykit/bayserver/docker/built_in/write_file_taxi.rb +101 -0
  56. data/lib/baykit/bayserver/docker/city.rb +22 -0
  57. data/lib/baykit/bayserver/docker/club.rb +45 -0
  58. data/lib/baykit/bayserver/docker/docker.rb +8 -0
  59. data/lib/baykit/bayserver/docker/harbor.rb +34 -0
  60. data/lib/baykit/bayserver/docker/log.rb +17 -0
  61. data/lib/baykit/bayserver/docker/package.rb +12 -0
  62. data/lib/baykit/bayserver/docker/permission.rb +18 -0
  63. data/lib/baykit/bayserver/docker/port.rb +39 -0
  64. data/lib/baykit/bayserver/docker/reroute.rb +17 -0
  65. data/lib/baykit/bayserver/docker/secure.rb +22 -0
  66. data/lib/baykit/bayserver/docker/send_file/directory_train.rb +123 -0
  67. data/lib/baykit/bayserver/docker/send_file/file_content_handler.rb +43 -0
  68. data/lib/baykit/bayserver/docker/send_file/send_file_docker.rb +71 -0
  69. data/lib/baykit/bayserver/docker/town.rb +30 -0
  70. data/lib/baykit/bayserver/docker/trouble.rb +17 -0
  71. data/lib/baykit/bayserver/docker/warp/package.rb +4 -0
  72. data/lib/baykit/bayserver/docker/warp/warp_data.rb +84 -0
  73. data/lib/baykit/bayserver/docker/warp/warp_data_listener.rb +112 -0
  74. data/lib/baykit/bayserver/docker/warp/warp_docker.rb +273 -0
  75. data/lib/baykit/bayserver/docker/warp/warp_handler.rb +38 -0
  76. data/lib/baykit/bayserver/docker/warp/warp_ship.rb +166 -0
  77. data/lib/baykit/bayserver/docker/warp/warp_ship_store.rb +111 -0
  78. data/lib/baykit/bayserver/http_exception.rb +33 -0
  79. data/lib/baykit/bayserver/mem_usage.rb +104 -0
  80. data/lib/baykit/bayserver/protocol/command.rb +21 -0
  81. data/lib/baykit/bayserver/protocol/command_handler.rb +9 -0
  82. data/lib/baykit/bayserver/protocol/command_packer.rb +49 -0
  83. data/lib/baykit/bayserver/protocol/command_unpacker.rb +13 -0
  84. data/lib/baykit/bayserver/protocol/package.rb +15 -0
  85. data/lib/baykit/bayserver/protocol/packet.rb +63 -0
  86. data/lib/baykit/bayserver/protocol/packet_factory.rb +13 -0
  87. data/lib/baykit/bayserver/protocol/packet_packer.rb +30 -0
  88. data/lib/baykit/bayserver/protocol/packet_part_accessor.rb +122 -0
  89. data/lib/baykit/bayserver/protocol/packet_store.rb +139 -0
  90. data/lib/baykit/bayserver/protocol/packet_unpacker.rb +17 -0
  91. data/lib/baykit/bayserver/protocol/protocol_exception.rb +17 -0
  92. data/lib/baykit/bayserver/protocol/protocol_handler.rb +64 -0
  93. data/lib/baykit/bayserver/protocol/protocol_handler_factory.rb +14 -0
  94. data/lib/baykit/bayserver/protocol/protocol_handler_store.rb +109 -0
  95. data/lib/baykit/bayserver/sink.rb +22 -0
  96. data/lib/baykit/bayserver/taxi/taxi.rb +38 -0
  97. data/lib/baykit/bayserver/taxi/taxi_runner.rb +31 -0
  98. data/lib/baykit/bayserver/tours/content_consume_listener.rb +20 -0
  99. data/lib/baykit/bayserver/tours/package.rb +4 -0
  100. data/lib/baykit/bayserver/tours/read_file_taxi.rb +102 -0
  101. data/lib/baykit/bayserver/tours/req_content_handler.rb +37 -0
  102. data/lib/baykit/bayserver/tours/send_file_train.rb +65 -0
  103. data/lib/baykit/bayserver/tours/send_file_yacht.rb +93 -0
  104. data/lib/baykit/bayserver/tours/tour.rb +195 -0
  105. data/lib/baykit/bayserver/tours/tour_req.rb +251 -0
  106. data/lib/baykit/bayserver/tours/tour_res.rb +400 -0
  107. data/lib/baykit/bayserver/tours/tour_store.rb +121 -0
  108. data/lib/baykit/bayserver/train/train.rb +54 -0
  109. data/lib/baykit/bayserver/train/train_runner.rb +32 -0
  110. data/lib/baykit/bayserver/util/byte_array.rb +54 -0
  111. data/lib/baykit/bayserver/util/byte_buffer.rb +13 -0
  112. data/lib/baykit/bayserver/util/cgi_util.rb +165 -0
  113. data/lib/baykit/bayserver/util/char_util.rb +22 -0
  114. data/lib/baykit/bayserver/util/cities.rb +45 -0
  115. data/lib/baykit/bayserver/util/class_util.rb +17 -0
  116. data/lib/baykit/bayserver/util/counter.rb +23 -0
  117. data/lib/baykit/bayserver/util/data_consume_listener.rb +13 -0
  118. data/lib/baykit/bayserver/util/executor_service.rb +81 -0
  119. data/lib/baykit/bayserver/util/groups.rb +110 -0
  120. data/lib/baykit/bayserver/util/gzip_compressor.rb +55 -0
  121. data/lib/baykit/bayserver/util/headers.rb +194 -0
  122. data/lib/baykit/bayserver/util/host_matcher.rb +48 -0
  123. data/lib/baykit/bayserver/util/http_status.rb +60 -0
  124. data/lib/baykit/bayserver/util/http_util.rb +157 -0
  125. data/lib/baykit/bayserver/util/io_util.rb +32 -0
  126. data/lib/baykit/bayserver/util/ip_matcher.rb +67 -0
  127. data/lib/baykit/bayserver/util/key_val.rb +15 -0
  128. data/lib/baykit/bayserver/util/key_val_list_parser.rb +53 -0
  129. data/lib/baykit/bayserver/util/locale.rb +30 -0
  130. data/lib/baykit/bayserver/util/md5_password.rb +24 -0
  131. data/lib/baykit/bayserver/util/message.rb +56 -0
  132. data/lib/baykit/bayserver/util/mimes.rb +27 -0
  133. data/lib/baykit/bayserver/util/object_factory.rb +13 -0
  134. data/lib/baykit/bayserver/util/object_store.rb +74 -0
  135. data/lib/baykit/bayserver/util/postman.rb +35 -0
  136. data/lib/baykit/bayserver/util/reusable.rb +13 -0
  137. data/lib/baykit/bayserver/util/selector.rb +141 -0
  138. data/lib/baykit/bayserver/util/simple_buffer.rb +53 -0
  139. data/lib/baykit/bayserver/util/simple_inspect.rb +12 -0
  140. data/lib/baykit/bayserver/util/string_util.rb +73 -0
  141. data/lib/baykit/bayserver/util/sys_util.rb +138 -0
  142. data/lib/baykit/bayserver/util/url_decoder.rb +42 -0
  143. data/lib/baykit/bayserver/util/url_encoder.rb +19 -0
  144. data/lib/baykit/bayserver/util/valve.rb +15 -0
  145. data/lib/baykit/bayserver/version.rb +7 -0
  146. data/lib/baykit/bayserver/watercraft/boat.rb +43 -0
  147. data/lib/baykit/bayserver/watercraft/ship.rb +104 -0
  148. data/lib/baykit/bayserver/watercraft/yacht.rb +42 -0
  149. metadata +189 -0
@@ -0,0 +1,45 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ #
7
+ # interface
8
+ #
9
+ module Club
10
+ include Docker # implements
11
+
12
+ # Get the file name part of club
13
+ def file_name()
14
+ raise NotImplementedError.new()
15
+ end
16
+
17
+ # Get the ext (file extension part) of club
18
+ def extension()
19
+ raise NotImplementedError.new()
20
+ end
21
+
22
+ # Check if file name matches this club
23
+ def matches(fname)
24
+ raise NotImplementedError.new()
25
+ end
26
+
27
+ # Get charset of club
28
+ def charset()
29
+ raise NotImplementedError.new()
30
+ end
31
+
32
+ # Check if this club decodes PATH_INFO
33
+ def decode_path_info()
34
+ raise NotImplementedError.new()
35
+ end
36
+
37
+ # Arrive
38
+ def arrive(tur)
39
+ raise NotImplementedError.new()
40
+ end
41
+
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,8 @@
1
+ module Baykit
2
+ module BayServer
3
+ module Docker
4
+ module Docker
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,34 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Harbor
7
+ include Docker
8
+
9
+ FILE_SEND_METHOD_SELECT = 1
10
+ FILE_SEND_METHOD_SPIN = 2
11
+ FILE_SEND_METHOD_TAXI = 3
12
+
13
+ #
14
+ # interface
15
+ #
16
+ # String charset();
17
+ # Locale locale();
18
+ # int shipAgents();
19
+ # int trainRunners();
20
+ # int maxShips();
21
+ # Trouble getTrouble();
22
+ # int socketTimeoutSec();
23
+ # int keepTimeoutSec();
24
+ # boolean traceHeader();
25
+ # int tourBufferSize();
26
+ # String redirectFile();
27
+ # int bayPort();
28
+ # boolean gzipComp();
29
+ # AsyncFileMethod asyncFileMethod();
30
+ #
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,17 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Log
7
+ include Docker # implements
8
+
9
+ #
10
+ # interface
11
+ #
12
+ # void log(Tour tour) throws IOException;
13
+ #
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+ require 'baykit/bayserver/docker/city'
3
+ require 'baykit/bayserver/docker/club'
4
+ require 'baykit/bayserver/docker/harbor'
5
+ require 'baykit/bayserver/docker/log'
6
+ require 'baykit/bayserver/docker/permission'
7
+ require 'baykit/bayserver/docker/port'
8
+ require 'baykit/bayserver/docker/reroute'
9
+ require 'baykit/bayserver/docker/secure'
10
+ require 'baykit/bayserver/docker/town'
11
+ require 'baykit/bayserver/docker/trouble'
12
+
@@ -0,0 +1,18 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Permission
7
+ include Docker # implements
8
+
9
+ #
10
+ # interface
11
+ #
12
+ # void checkAdmitted(SocketChannel ch) throws HttpException;
13
+ # void checkAdmitted(Tour tour) throws HttpException;
14
+ #
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,39 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Port
7
+ include Docker # implements
8
+
9
+ def address()
10
+ raise NotImplementedError()
11
+ end
12
+
13
+ def check_admitted(skt)
14
+ raise NotImplementedError()
15
+ end
16
+
17
+ def find_city(name)
18
+ raise NotImplementedError()
19
+ end
20
+
21
+ def new_transporter(agt, skt)
22
+ raise NotImplementedError()
23
+ end
24
+
25
+ def check_admitted(skt)
26
+ raise NotImplementedError()
27
+ end
28
+
29
+ def return_protocol_handler(agt, proto_hnd)
30
+ raise NotImplementedError()
31
+ end
32
+
33
+ def return_ship(sip)
34
+ raise NotImplementedError()
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,17 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Reroute
7
+ include Docker # implements
8
+
9
+ #
10
+ # interface
11
+ #
12
+ # String reroute(Town twn, String uri)
13
+ #
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Secure
7
+ include Docker # implements
8
+
9
+ #
10
+ # interface
11
+ #
12
+ # void setAppProtocols(String[] protocols);
13
+ #
14
+ # void reloadCert() throws Exception;
15
+ #
16
+ # public Transporter createTransporter();
17
+ #
18
+ end
19
+ end
20
+ end
21
+ end
22
+
@@ -0,0 +1,123 @@
1
+ require 'baykit/bayserver/http_exception'
2
+
3
+ require 'baykit/bayserver/train/train'
4
+ require 'baykit/bayserver/tours/req_content_handler'
5
+
6
+ require 'baykit/bayserver/util/string_util'
7
+ require 'baykit/bayserver/util/http_status'
8
+
9
+ module Baykit
10
+ module BayServer
11
+ module Docker
12
+ module SendFile
13
+ class DirectoryTrain < Baykit::BayServer::Train::Train
14
+ include Baykit::BayServer::Tours::ReqContentHandler # implements
15
+
16
+ include Baykit::BayServer::Agent
17
+ include Baykit::BayServer::Train
18
+ include Baykit::BayServer::Tours
19
+ include Baykit::BayServer::Util
20
+
21
+ attr :path
22
+ attr :available
23
+ attr :abortable
24
+
25
+ def initialize(tur, path)
26
+ super(tur)
27
+ @path = path
28
+ @available = false
29
+ @abortable = true
30
+ end
31
+
32
+ def start_tour()
33
+ @tour.req.set_content_handler(self)
34
+ end
35
+
36
+ #######################################################
37
+ # Implements Train
38
+ #######################################################
39
+
40
+ def depart()
41
+ begin
42
+ @tour.res.headers.set_content_type("text/html")
43
+
44
+ @tour.res.set_consume_listener do |len, resume|
45
+ if resume
46
+ @available = true
47
+ end
48
+ end
49
+
50
+ @tour.res.send_headers(@tour_id)
51
+
52
+ w = StringIO.new()
53
+ w.write("<html><body><br>")
54
+
55
+ if tour.req.uri != "/"
56
+ print_link(w, "../")
57
+ end
58
+
59
+ Dir.foreach(path) do |f|
60
+ if File.directory?(f)
61
+ if f != "." && f != ".."
62
+ print_link(w, "#{f}/")
63
+ end
64
+ else
65
+ print_link(w, f)
66
+ end
67
+ end
68
+
69
+ w.write("</body></html>")
70
+ bytes = StringUtil.to_bytes(w.string())
71
+ w.close()
72
+
73
+ BayLog.trace("%s Directory: send contents: len=%d", @tour, bytes.length)
74
+ @available = tour.res.send_content(@tour_id, bytes, 0, bytes.length)
75
+
76
+ while !@available
77
+ sleep(0.1)
78
+ end
79
+
80
+ tour.res.end_content(@tour_id)
81
+
82
+ rescue IOError => e
83
+ BayLog.error_e(e)
84
+ raise HttpException.new(HttpStatus.INTERNAL_SERVER_ERROR, e)
85
+ end
86
+ end
87
+
88
+ #######################################################
89
+ # Implements ReqContentHandler
90
+ #######################################################
91
+
92
+ def on_read_content(tur, buf, start, len)
93
+ BayLog.debug("%s onReadContent(Ignore) len=%d", tur, len)
94
+ end
95
+
96
+ def on_end_content(tur)
97
+ BayLog.debug("%s endContent", tur)
98
+ @abortable = false
99
+
100
+ if !TrainRunner.post(self)
101
+ raise HttpException.new(HttpStatus.SERVICE_UNAVAILABLE, "TourRunner is busy")
102
+ end
103
+ end
104
+
105
+ def on_abort(tur)
106
+ BayLog.debug("%s onAbort aborted=%s", tur, @abortable)
107
+ return @abortable
108
+ end
109
+
110
+
111
+ def print_link(w, path)
112
+ w.write("<a href='#{path}'>")
113
+ w.write(path)
114
+ w.write("</a><br>")
115
+ end
116
+
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+
123
+
@@ -0,0 +1,43 @@
1
+ require 'baykit/bayserver/tours/req_content_handler'
2
+ require 'baykit/bayserver/tours/tour'
3
+
4
+ module Baykit
5
+ module BayServer
6
+ module Docker
7
+ module SendFile
8
+ class FileContentHandler
9
+ include Baykit::BayServer::Tours::ReqContentHandler # implements
10
+ include Baykit::BayServer::Tours
11
+
12
+ attr :path
13
+ attr :abortable
14
+
15
+ def initialize(path)
16
+ @path = path
17
+ @abortable = true
18
+ end
19
+
20
+ ######################################################
21
+ # Implements ReqContentHandler
22
+ ######################################################
23
+
24
+ def on_read_content(tur, buf, start, len)
25
+ BayLog.debug("%s onReadReqContent(Ignore) len=%d", tur, len)
26
+ end
27
+
28
+ def on_end_content(tur)
29
+ BayLog.debug("%s endReqContent", tur)
30
+ tur.res.send_file(Tour::TOUR_ID_NOCHECK, path, tur.res.charset, true)
31
+ @abortable = false
32
+ end
33
+
34
+ def on_abort(tur)
35
+ BayLog.debug("%s onAbortReq aborted=%s", tur, abortable)
36
+ return abortable
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,71 @@
1
+ require 'baykit/bayserver/bcf/package'
2
+ require 'baykit/bayserver/tours/package'
3
+ require 'baykit/bayserver/docker/base/club_base'
4
+ require 'baykit/bayserver/docker/send_file/file_content_handler'
5
+ require 'baykit/bayserver/docker/send_file/directory_train'
6
+
7
+ require 'baykit/bayserver/util/string_util'
8
+
9
+ module Baykit
10
+ module BayServer
11
+ module Docker
12
+ module SendFile
13
+ class SendFileDocker < Baykit::BayServer::Docker::Base::ClubBase
14
+ include Baykit::BayServer::Bcf
15
+ include Baykit::BayServer::Util
16
+ include Baykit::BayServer::Agent
17
+ include Baykit::BayServer::Tours
18
+
19
+ attr :list_files
20
+
21
+ ######################################################
22
+ # Implements DockerBase
23
+ ######################################################
24
+
25
+ def init(elm, parent)
26
+ super
27
+ end
28
+
29
+ def init_key_val(kv)
30
+ case kv.key.downcase
31
+ when "listfiles"
32
+ @list_files = StringUtil.parse_bool(kv.value)
33
+ else
34
+ return super
35
+ end
36
+ return true
37
+ end
38
+
39
+ def arrive(tur)
40
+ rel_path = tur.req.rewritten_uri != nil ? tur.req.rewritten_uri : tur.req.uri
41
+ if StringUtil.set?(tur.town.name)
42
+ rel_path = rel_path[tur.town.name.length .. -1]
43
+ pos = rel_path.index('?')
44
+ if pos != nil
45
+ rel_path = rel_path[0, pos]
46
+ end
47
+
48
+ begin
49
+ rel_path = URLDecoder.decode(rel_path, tur.req.charset)
50
+ rescue Encoding::UndefinedConversionError => e
51
+ BayLog.warn("%s Cannot decode request path: %s (encoding=%s)", tur, rel_path, tur.req.charset)
52
+ end
53
+
54
+ real = "#{tur.town.location}/#{rel_path}"
55
+
56
+ if File.directory?(real) && @list_files
57
+ train = DirectoryTrain.new(tur, real)
58
+ train.start_tour()
59
+ else
60
+ handler = FileContentHandler.new(real)
61
+ tur.req.set_content_handler(handler)
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,30 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Town
7
+ include Docker # implements
8
+ MATCH_TYPE_MATCHED = 1
9
+ MATCH_TYPE_NOT_MATCHED = 2
10
+ MATCH_TYPE_CLOSE = 3
11
+
12
+ #
13
+ # interface
14
+ #
15
+ # String name();
16
+ # City city();
17
+ # String location();
18
+ # String welcomeFile();
19
+ # ArrayList<Club> clubs();
20
+ # String reroute(String uri);
21
+ # MatchType matches(String uri);
22
+ # void checkAdmitted(Tour tour) throws HttpException;
23
+ # String reroute(String uri);
24
+ # MatchType matches(String uri);
25
+ # void checkAdmitted(Tour tour) throws HttpException;
26
+ #
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,17 @@
1
+ require 'baykit/bayserver/docker/docker'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Trouble
7
+ include Docker # implements
8
+
9
+ #
10
+ # interface
11
+ #
12
+ # find(status)
13
+ #
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ require 'baykit/bayserver/docker/warp/warp_docker'
2
+ require 'baykit/bayserver/docker/warp/warp_handler'
3
+ require 'baykit/bayserver/docker/warp/warp_ship'
4
+ require 'baykit/bayserver/docker/warp/warp_data'
@@ -0,0 +1,84 @@
1
+ require 'baykit/bayserver/tours/req_content_handler'
2
+
3
+ module Baykit
4
+ module BayServer
5
+ module Docker
6
+ module Warp
7
+ class WarpData
8
+ include Baykit::BayServer::Tours::ReqContentHandler # implements
9
+ include Baykit::BayServer::Util
10
+
11
+ attr :warp_ship
12
+ attr :warp_ship_id
13
+ attr :warp_id
14
+ attr :req_headers
15
+ attr :res_headers
16
+ attr :started
17
+ attr :ended
18
+
19
+ def initialize(warp_ship, warp_id)
20
+ @warp_ship = warp_ship
21
+ @warp_ship_id = warp_ship.id()
22
+ @warp_id = warp_id
23
+ @req_headers = Headers.new
24
+ @res_headers = Headers.new
25
+ @started = false
26
+ @ended = false
27
+ end
28
+
29
+ def on_read_content(tur, buf, start, len)
30
+ BayLog.debug("%s Read req content tur=%s len=%d", @warp_ship, tur, len);
31
+ @warp_ship.check_ship_id(@warp_ship_id)
32
+ max_len = @warp_ship.protocol_handler.max_req_packet_data_size()
33
+ pos = 0
34
+ while pos < len
35
+ post_len = len - pos
36
+ if post_len > max_len
37
+ post_len = max_len
38
+ end
39
+
40
+ tur_id = tur.id()
41
+ @warp_ship.warp_handler.post_warp_contents(
42
+ tur,
43
+ buf,
44
+ start + pos,
45
+ post_len) do
46
+ tur.req.consumed(tur_id, len)
47
+ end
48
+ pos += max_len
49
+ end
50
+ end
51
+
52
+ def on_end_content(tur)
53
+ BayLog.debug("%s End req content tur=%s", @warp_ship, tur)
54
+ @warp_ship.warp_handler.post_warp_end(tur)
55
+ end
56
+
57
+ def on_abort(tur)
58
+ BayLog.debug("%s on req abort tur=%s", @warp_ship, tur)
59
+ @warp_ship.check_ship_id(@warp_ship_id)
60
+ @warp_ship.abort(@warp_ship_id)
61
+ return false # not aborted immediately
62
+ end
63
+
64
+
65
+ def start
66
+ if !@started
67
+ @warp_ship.protocol_handler.command_packer.flush(@warp_ship)
68
+ BayLog.debug("%s Start Warp tour", self)
69
+ @started = true
70
+ end
71
+ end
72
+
73
+ def to_s
74
+ return "#{@warp_ship} wtur##{@warp_id}"
75
+ end
76
+
77
+ def self.get(tur)
78
+ return tur.req.content_handler
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end