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.
- checksums.yaml +7 -0
- data/lib/baykit/bayserver/agent/accept_handler.rb +97 -0
- data/lib/baykit/bayserver/agent/channel_listener.rb +35 -0
- data/lib/baykit/bayserver/agent/command_receiver.rb +75 -0
- data/lib/baykit/bayserver/agent/grand_agent.rb +319 -0
- data/lib/baykit/bayserver/agent/grand_agent_monitor.rb +217 -0
- data/lib/baykit/bayserver/agent/next_socket_action.rb +14 -0
- data/lib/baykit/bayserver/agent/non_blocking_handler.rb +433 -0
- data/lib/baykit/bayserver/agent/package.rb +3 -0
- data/lib/baykit/bayserver/agent/signal/signal_agent.rb +165 -0
- data/lib/baykit/bayserver/agent/signal/signal_proxy.rb +18 -0
- data/lib/baykit/bayserver/agent/signal/signal_sender.rb +99 -0
- data/lib/baykit/bayserver/agent/spin_handler.rb +140 -0
- data/lib/baykit/bayserver/agent/transporter/data_listener.rb +38 -0
- data/lib/baykit/bayserver/agent/transporter/package.rb +3 -0
- data/lib/baykit/bayserver/agent/transporter/plain_transporter.rb +55 -0
- data/lib/baykit/bayserver/agent/transporter/secure_transporter.rb +81 -0
- data/lib/baykit/bayserver/agent/transporter/spin_read_transporter.rb +111 -0
- data/lib/baykit/bayserver/agent/transporter/spin_write_transporter.rb +125 -0
- data/lib/baykit/bayserver/agent/transporter/transporter.rb +466 -0
- data/lib/baykit/bayserver/agent/upgrade_exception.rb +11 -0
- data/lib/baykit/bayserver/bay_dockers.rb +60 -0
- data/lib/baykit/bayserver/bay_exception.rb +12 -0
- data/lib/baykit/bayserver/bay_log.rb +148 -0
- data/lib/baykit/bayserver/bay_message.rb +20 -0
- data/lib/baykit/bayserver/bayserver.rb +529 -0
- data/lib/baykit/bayserver/bcf/bcf_document.rb +44 -0
- data/lib/baykit/bayserver/bcf/bcf_element.rb +30 -0
- data/lib/baykit/bayserver/bcf/bcf_key_val.rb +19 -0
- data/lib/baykit/bayserver/bcf/bcf_object.rb +15 -0
- data/lib/baykit/bayserver/bcf/bcf_parser.rb +180 -0
- data/lib/baykit/bayserver/bcf/package.rb +6 -0
- data/lib/baykit/bayserver/bcf/parse_exception.rb +15 -0
- data/lib/baykit/bayserver/config_exception.rb +25 -0
- data/lib/baykit/bayserver/constants.rb +8 -0
- data/lib/baykit/bayserver/docker/base/club_base.rb +117 -0
- data/lib/baykit/bayserver/docker/base/docker_base.rb +66 -0
- data/lib/baykit/bayserver/docker/base/inbound_data_listener.rb +89 -0
- data/lib/baykit/bayserver/docker/base/inbound_handler.rb +42 -0
- data/lib/baykit/bayserver/docker/base/inbound_ship.rb +341 -0
- data/lib/baykit/bayserver/docker/base/inbound_ship_store.rb +65 -0
- data/lib/baykit/bayserver/docker/base/port_base.rb +228 -0
- data/lib/baykit/bayserver/docker/base/reroute_base.rb +28 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_city_docker.rb +303 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_harbor_docker.rb +226 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_log_docker.rb +302 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_permission_docker.rb +242 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_secure_docker.rb +157 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_town_docker.rb +117 -0
- data/lib/baykit/bayserver/docker/built_in/built_in_trouble_docker.rb +57 -0
- data/lib/baykit/bayserver/docker/built_in/log_boat.rb +71 -0
- data/lib/baykit/bayserver/docker/built_in/log_item.rb +18 -0
- data/lib/baykit/bayserver/docker/built_in/log_item_factory.rb +18 -0
- data/lib/baykit/bayserver/docker/built_in/log_items.rb +287 -0
- data/lib/baykit/bayserver/docker/built_in/write_file_taxi.rb +101 -0
- data/lib/baykit/bayserver/docker/city.rb +22 -0
- data/lib/baykit/bayserver/docker/club.rb +45 -0
- data/lib/baykit/bayserver/docker/docker.rb +8 -0
- data/lib/baykit/bayserver/docker/harbor.rb +34 -0
- data/lib/baykit/bayserver/docker/log.rb +17 -0
- data/lib/baykit/bayserver/docker/package.rb +12 -0
- data/lib/baykit/bayserver/docker/permission.rb +18 -0
- data/lib/baykit/bayserver/docker/port.rb +39 -0
- data/lib/baykit/bayserver/docker/reroute.rb +17 -0
- data/lib/baykit/bayserver/docker/secure.rb +22 -0
- data/lib/baykit/bayserver/docker/send_file/directory_train.rb +123 -0
- data/lib/baykit/bayserver/docker/send_file/file_content_handler.rb +43 -0
- data/lib/baykit/bayserver/docker/send_file/send_file_docker.rb +71 -0
- data/lib/baykit/bayserver/docker/town.rb +30 -0
- data/lib/baykit/bayserver/docker/trouble.rb +17 -0
- data/lib/baykit/bayserver/docker/warp/package.rb +4 -0
- data/lib/baykit/bayserver/docker/warp/warp_data.rb +84 -0
- data/lib/baykit/bayserver/docker/warp/warp_data_listener.rb +112 -0
- data/lib/baykit/bayserver/docker/warp/warp_docker.rb +273 -0
- data/lib/baykit/bayserver/docker/warp/warp_handler.rb +38 -0
- data/lib/baykit/bayserver/docker/warp/warp_ship.rb +166 -0
- data/lib/baykit/bayserver/docker/warp/warp_ship_store.rb +111 -0
- data/lib/baykit/bayserver/http_exception.rb +33 -0
- data/lib/baykit/bayserver/mem_usage.rb +104 -0
- data/lib/baykit/bayserver/protocol/command.rb +21 -0
- data/lib/baykit/bayserver/protocol/command_handler.rb +9 -0
- data/lib/baykit/bayserver/protocol/command_packer.rb +49 -0
- data/lib/baykit/bayserver/protocol/command_unpacker.rb +13 -0
- data/lib/baykit/bayserver/protocol/package.rb +15 -0
- data/lib/baykit/bayserver/protocol/packet.rb +63 -0
- data/lib/baykit/bayserver/protocol/packet_factory.rb +13 -0
- data/lib/baykit/bayserver/protocol/packet_packer.rb +30 -0
- data/lib/baykit/bayserver/protocol/packet_part_accessor.rb +122 -0
- data/lib/baykit/bayserver/protocol/packet_store.rb +139 -0
- data/lib/baykit/bayserver/protocol/packet_unpacker.rb +17 -0
- data/lib/baykit/bayserver/protocol/protocol_exception.rb +17 -0
- data/lib/baykit/bayserver/protocol/protocol_handler.rb +64 -0
- data/lib/baykit/bayserver/protocol/protocol_handler_factory.rb +14 -0
- data/lib/baykit/bayserver/protocol/protocol_handler_store.rb +109 -0
- data/lib/baykit/bayserver/sink.rb +22 -0
- data/lib/baykit/bayserver/taxi/taxi.rb +38 -0
- data/lib/baykit/bayserver/taxi/taxi_runner.rb +31 -0
- data/lib/baykit/bayserver/tours/content_consume_listener.rb +20 -0
- data/lib/baykit/bayserver/tours/package.rb +4 -0
- data/lib/baykit/bayserver/tours/read_file_taxi.rb +102 -0
- data/lib/baykit/bayserver/tours/req_content_handler.rb +37 -0
- data/lib/baykit/bayserver/tours/send_file_train.rb +65 -0
- data/lib/baykit/bayserver/tours/send_file_yacht.rb +93 -0
- data/lib/baykit/bayserver/tours/tour.rb +195 -0
- data/lib/baykit/bayserver/tours/tour_req.rb +251 -0
- data/lib/baykit/bayserver/tours/tour_res.rb +400 -0
- data/lib/baykit/bayserver/tours/tour_store.rb +121 -0
- data/lib/baykit/bayserver/train/train.rb +54 -0
- data/lib/baykit/bayserver/train/train_runner.rb +32 -0
- data/lib/baykit/bayserver/util/byte_array.rb +54 -0
- data/lib/baykit/bayserver/util/byte_buffer.rb +13 -0
- data/lib/baykit/bayserver/util/cgi_util.rb +165 -0
- data/lib/baykit/bayserver/util/char_util.rb +22 -0
- data/lib/baykit/bayserver/util/cities.rb +45 -0
- data/lib/baykit/bayserver/util/class_util.rb +17 -0
- data/lib/baykit/bayserver/util/counter.rb +23 -0
- data/lib/baykit/bayserver/util/data_consume_listener.rb +13 -0
- data/lib/baykit/bayserver/util/executor_service.rb +81 -0
- data/lib/baykit/bayserver/util/groups.rb +110 -0
- data/lib/baykit/bayserver/util/gzip_compressor.rb +55 -0
- data/lib/baykit/bayserver/util/headers.rb +194 -0
- data/lib/baykit/bayserver/util/host_matcher.rb +48 -0
- data/lib/baykit/bayserver/util/http_status.rb +60 -0
- data/lib/baykit/bayserver/util/http_util.rb +157 -0
- data/lib/baykit/bayserver/util/io_util.rb +32 -0
- data/lib/baykit/bayserver/util/ip_matcher.rb +67 -0
- data/lib/baykit/bayserver/util/key_val.rb +15 -0
- data/lib/baykit/bayserver/util/key_val_list_parser.rb +53 -0
- data/lib/baykit/bayserver/util/locale.rb +30 -0
- data/lib/baykit/bayserver/util/md5_password.rb +24 -0
- data/lib/baykit/bayserver/util/message.rb +56 -0
- data/lib/baykit/bayserver/util/mimes.rb +27 -0
- data/lib/baykit/bayserver/util/object_factory.rb +13 -0
- data/lib/baykit/bayserver/util/object_store.rb +74 -0
- data/lib/baykit/bayserver/util/postman.rb +35 -0
- data/lib/baykit/bayserver/util/reusable.rb +13 -0
- data/lib/baykit/bayserver/util/selector.rb +141 -0
- data/lib/baykit/bayserver/util/simple_buffer.rb +53 -0
- data/lib/baykit/bayserver/util/simple_inspect.rb +12 -0
- data/lib/baykit/bayserver/util/string_util.rb +73 -0
- data/lib/baykit/bayserver/util/sys_util.rb +138 -0
- data/lib/baykit/bayserver/util/url_decoder.rb +42 -0
- data/lib/baykit/bayserver/util/url_encoder.rb +19 -0
- data/lib/baykit/bayserver/util/valve.rb +15 -0
- data/lib/baykit/bayserver/version.rb +7 -0
- data/lib/baykit/bayserver/watercraft/boat.rb +43 -0
- data/lib/baykit/bayserver/watercraft/ship.rb +104 -0
- data/lib/baykit/bayserver/watercraft/yacht.rb +42 -0
- metadata +189 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
require 'baykit/bayserver/bcf/package'
|
|
2
|
+
require 'baykit/bayserver/bay_message'
|
|
3
|
+
|
|
4
|
+
module Baykit
|
|
5
|
+
module BayServer
|
|
6
|
+
module Bcf
|
|
7
|
+
|
|
8
|
+
class BcfParser
|
|
9
|
+
|
|
10
|
+
attr :file_name
|
|
11
|
+
attr :line_no
|
|
12
|
+
attr :input
|
|
13
|
+
attr :prev_line_info
|
|
14
|
+
attr :indent_map
|
|
15
|
+
|
|
16
|
+
class LineInfo
|
|
17
|
+
attr :line_obj
|
|
18
|
+
attr :indent
|
|
19
|
+
|
|
20
|
+
def initialize(line_obj, indent)
|
|
21
|
+
if indent == nil
|
|
22
|
+
raise RuntimeError.new("indent is nil")
|
|
23
|
+
end
|
|
24
|
+
@line_obj = line_obj
|
|
25
|
+
@indent = indent
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def initialize
|
|
30
|
+
@indent_map = []
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def parse(file)
|
|
34
|
+
doc = BcfDocument.new
|
|
35
|
+
|
|
36
|
+
@file_name = file
|
|
37
|
+
@line_no = 0
|
|
38
|
+
@input = File.open(file)
|
|
39
|
+
parse_same_level(doc.content_list, 0)
|
|
40
|
+
@input.close
|
|
41
|
+
return doc
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
protected
|
|
45
|
+
|
|
46
|
+
def push_indent(sp_count)
|
|
47
|
+
@indent_map << sp_count
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def pop_indent
|
|
51
|
+
@indent_map.delete_at(@indent_map.length - 1)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def get_indent(sp_count)
|
|
55
|
+
if @indent_map.empty?
|
|
56
|
+
push_indent sp_count
|
|
57
|
+
elsif sp_count > @indent_map[indent_map.length - 1]
|
|
58
|
+
push_indent sp_count
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
indent = @indent_map.index(sp_count)
|
|
62
|
+
|
|
63
|
+
if indent == nil
|
|
64
|
+
raise ParseException.new(@file_name, @line_no, BayMessage.get(:PAS_INVALID_INDENT))
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
return indent
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def parse_same_level(cur_list, indent)
|
|
72
|
+
object_exists_in_same_level = false
|
|
73
|
+
while true
|
|
74
|
+
if @prev_line_info != nil
|
|
75
|
+
line_info = @prev_line_info
|
|
76
|
+
@prev_line_info = nil
|
|
77
|
+
else
|
|
78
|
+
line = @input.gets
|
|
79
|
+
@line_no += 1
|
|
80
|
+
|
|
81
|
+
if line == nil
|
|
82
|
+
break
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
if line.strip.start_with?("#") || line.strip == ""
|
|
86
|
+
next
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
line_info = parse_line(@line_no, line)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
if line_info == nil
|
|
93
|
+
# Comment or empty
|
|
94
|
+
next
|
|
95
|
+
|
|
96
|
+
elsif line_info.indent > indent
|
|
97
|
+
# lower level
|
|
98
|
+
raise ParseException.new(@file_name, @line_no, BayMessage.get(:PAS_INVALID_INDENT))
|
|
99
|
+
|
|
100
|
+
elsif line_info.indent < indent
|
|
101
|
+
# upper level
|
|
102
|
+
@prev_line_info = line_info
|
|
103
|
+
if object_exists_in_same_level
|
|
104
|
+
pop_indent
|
|
105
|
+
end
|
|
106
|
+
return line_info
|
|
107
|
+
|
|
108
|
+
else
|
|
109
|
+
object_exists_in_same_level = true
|
|
110
|
+
|
|
111
|
+
# samel level
|
|
112
|
+
if line_info.line_obj.instance_of? BcfElement
|
|
113
|
+
# BcfElement
|
|
114
|
+
cur_list << line_info.line_obj
|
|
115
|
+
|
|
116
|
+
last_line_info = parse_same_level(line_info.line_obj.content_list, line_info.indent + 1)
|
|
117
|
+
if last_line_info == nil
|
|
118
|
+
# EOF
|
|
119
|
+
pop_indent
|
|
120
|
+
return nil
|
|
121
|
+
else
|
|
122
|
+
# Same level
|
|
123
|
+
next
|
|
124
|
+
end
|
|
125
|
+
else
|
|
126
|
+
# IniKeyVal
|
|
127
|
+
cur_list << line_info.line_obj
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
pop_indent
|
|
132
|
+
return nil
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def parse_line (line_no, line)
|
|
136
|
+
|
|
137
|
+
sp_count = 0
|
|
138
|
+
for sp_count in line.length.times
|
|
139
|
+
c = line[sp_count]
|
|
140
|
+
if c.strip != ''
|
|
141
|
+
# c is not awhitespace
|
|
142
|
+
break
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
if c != ' '
|
|
146
|
+
raise ParseException.new(@file_name, @line_no, BayMessage.get(:PAS_INVALID_WHITESPACE))
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
indent = get_indent(sp_count)
|
|
151
|
+
line = line.slice(sp_count .. -1)
|
|
152
|
+
line.strip!
|
|
153
|
+
|
|
154
|
+
if line.start_with?("[")
|
|
155
|
+
close_pos = line.index("]");
|
|
156
|
+
if close_pos == -1
|
|
157
|
+
raise ParseException.new(@file_name, @line_no, :PAS_BRACE_NOT_CLOSED)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
if !line.end_with?("]")
|
|
161
|
+
raise ParseException.new(@file_name, @line_no, :PAS_INVALID_LINE)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
key_val = parse_key_val(line.slice(1, close_pos - 1), line_no);
|
|
165
|
+
return LineInfo.new(BcfElement.new(key_val.key, key_val.value, @file_name, line_no), indent)
|
|
166
|
+
else
|
|
167
|
+
return LineInfo.new(parse_key_val(line, line_no), indent)
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def parse_key_val(line, line_no)
|
|
172
|
+
sp_pos = line.index(' ')
|
|
173
|
+
key = sp_pos == nil ? line : line[0, sp_pos]
|
|
174
|
+
val = sp_pos == nil ? "" : line[sp_pos .. -1].strip
|
|
175
|
+
return BcfKeyVal.new(key, val, @file_name, line_no);
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
require 'baykit/bayserver/bcf/bcf_object'
|
|
2
|
+
require 'baykit/bayserver/bcf/bcf_key_val'
|
|
3
|
+
require 'baykit/bayserver/bcf/bcf_element'
|
|
4
|
+
require 'baykit/bayserver/bcf/bcf_document'
|
|
5
|
+
require 'baykit/bayserver/bcf/bcf_parser'
|
|
6
|
+
require 'baykit/bayserver/bcf/parse_exception'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'baykit/bayserver/config_exception'
|
|
2
|
+
require 'baykit/bayserver/bcf/package'
|
|
3
|
+
|
|
4
|
+
module Baykit
|
|
5
|
+
module BayServer
|
|
6
|
+
module Bcf
|
|
7
|
+
class ParseException < ConfigException
|
|
8
|
+
|
|
9
|
+
def initialize(file_name, line_no, msg)
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'baykit/bayserver/bay_exception'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
|
|
6
|
+
class ConfigException < BayException
|
|
7
|
+
attr_reader :file_name
|
|
8
|
+
attr_reader :line_no
|
|
9
|
+
|
|
10
|
+
def initialize(file_name, line_no, fmt, *args)
|
|
11
|
+
super(fmt, *args)
|
|
12
|
+
@file_name = file_name
|
|
13
|
+
@line_no = line_no
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def message()
|
|
17
|
+
return ConfigException::create_message(super, @file_name, @line_no)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self::create_message(msg, fname, line)
|
|
21
|
+
return "#{msg == nil ? "" : msg} #{fname}:#{line}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
require 'baykit/bayserver/docker/club'
|
|
2
|
+
require 'baykit/bayserver/docker/base/docker_base'
|
|
3
|
+
require 'baykit/bayserver/bcf/package'
|
|
4
|
+
require 'baykit/bayserver/util/class_util'
|
|
5
|
+
|
|
6
|
+
module Baykit
|
|
7
|
+
module BayServer
|
|
8
|
+
module Docker
|
|
9
|
+
module Base
|
|
10
|
+
class ClubBase < Baykit::BayServer::Docker::Base::DockerBase
|
|
11
|
+
include Baykit::BayServer::Docker::Club # implements
|
|
12
|
+
|
|
13
|
+
include Baykit::BayServer::Bcf
|
|
14
|
+
include Baykit::BayServer::Util
|
|
15
|
+
|
|
16
|
+
attr :file_name
|
|
17
|
+
attr :extension
|
|
18
|
+
attr :charset
|
|
19
|
+
attr :locale
|
|
20
|
+
attr :decode_path_info
|
|
21
|
+
|
|
22
|
+
def initialize
|
|
23
|
+
@file_name = nil
|
|
24
|
+
@extension = nil
|
|
25
|
+
@charset = nil
|
|
26
|
+
@locale = nil
|
|
27
|
+
@decode_path_info = true
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def to_s()
|
|
31
|
+
return ClassUtil.get_local_name(self.class)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
######################################################
|
|
35
|
+
# Implements Docker
|
|
36
|
+
######################################################
|
|
37
|
+
|
|
38
|
+
def init(elm, parent)
|
|
39
|
+
super
|
|
40
|
+
p = elm.arg.rindex('.');
|
|
41
|
+
if(p == nil)
|
|
42
|
+
@file_name = elm.arg
|
|
43
|
+
@extension = nil
|
|
44
|
+
else
|
|
45
|
+
@file_name = elm.arg[0, p]
|
|
46
|
+
@extension = elm.arg[p+1 .. -1]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
######################################################
|
|
52
|
+
# Implements DockerBase
|
|
53
|
+
######################################################
|
|
54
|
+
|
|
55
|
+
def init_key_val(kv)
|
|
56
|
+
case kv.key.downcase
|
|
57
|
+
when "decodepathinfo"
|
|
58
|
+
@decode_path_info = StringUtil.parse_bool(kv.value)
|
|
59
|
+
when "charset"
|
|
60
|
+
@charset = kv.value
|
|
61
|
+
else
|
|
62
|
+
return super
|
|
63
|
+
end
|
|
64
|
+
return true
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
######################################################
|
|
68
|
+
# Implements Club
|
|
69
|
+
######################################################
|
|
70
|
+
|
|
71
|
+
def matches(fname)
|
|
72
|
+
# check club
|
|
73
|
+
pos = fname.index(".")
|
|
74
|
+
if(pos == nil)
|
|
75
|
+
# fname has no extension
|
|
76
|
+
if(@extension != nil)
|
|
77
|
+
return false
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
if(@file_name == "*")
|
|
81
|
+
return true
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
return fname == @file_name
|
|
85
|
+
else
|
|
86
|
+
# fname has extension
|
|
87
|
+
if(@extension == nil)
|
|
88
|
+
return false
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
nm = fname[0, pos]
|
|
92
|
+
ext = fname[pos + 1 .. -1]
|
|
93
|
+
|
|
94
|
+
if(@extension != "*" && ext != @extension)
|
|
95
|
+
return false
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
if(@file_name == "*")
|
|
99
|
+
return true
|
|
100
|
+
else
|
|
101
|
+
return nm == @file_name
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def to_s
|
|
107
|
+
self.class.name
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def inspect
|
|
111
|
+
self.class.name
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'baykit/bayserver/util/class_util'
|
|
2
|
+
|
|
3
|
+
module Baykit
|
|
4
|
+
module BayServer
|
|
5
|
+
module Docker
|
|
6
|
+
module Base
|
|
7
|
+
class DockerBase
|
|
8
|
+
include Baykit::BayServer::Docker::Docker # implements
|
|
9
|
+
include Baykit::BayServer::Bcf
|
|
10
|
+
|
|
11
|
+
include Baykit::BayServer::Util
|
|
12
|
+
|
|
13
|
+
attr :type
|
|
14
|
+
|
|
15
|
+
def to_s()
|
|
16
|
+
return ClassUtil.get_local_name(self.class)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def init(elm, parent)
|
|
20
|
+
@type = elm.name
|
|
21
|
+
elm.content_list.each do |o|
|
|
22
|
+
if o.kind_of? BcfKeyVal
|
|
23
|
+
begin
|
|
24
|
+
if !init_key_val(o)
|
|
25
|
+
raise ConfigException.new o.file_name, o.line_no, BayMessage.get(:CFG_INVALID_PARAMETER, o.key)
|
|
26
|
+
end
|
|
27
|
+
rescue ConfigException => e
|
|
28
|
+
raise e
|
|
29
|
+
rescue => e
|
|
30
|
+
BayLog.error_e(e)
|
|
31
|
+
raise ConfigException.new o.file_name, o.line_no, BayMessage.get(:CFG_INVALID_PARAMETER_VALUE, o.key)
|
|
32
|
+
end
|
|
33
|
+
else
|
|
34
|
+
begin
|
|
35
|
+
dkr = BayServer.dockers.create_docker(o, self)
|
|
36
|
+
rescue ConfigException => e
|
|
37
|
+
raise e
|
|
38
|
+
rescue => e
|
|
39
|
+
BayLog.error_e e
|
|
40
|
+
raise ConfigException.new(o.file_name, o.line_no, BayMessage.get(:CFG_INVALID_DOCKER, o.name))
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
if(!init_docker(dkr))
|
|
44
|
+
raise ConfigException.new(o.file_name, o.line_no, BayMessage.get(:CFG_INVALID_DOCKER, o.name))
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def init_docker(dkr)
|
|
51
|
+
return false;
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def init_key_val(kv)
|
|
55
|
+
case kv.key.downcase
|
|
56
|
+
when "docker"
|
|
57
|
+
return true
|
|
58
|
+
else
|
|
59
|
+
return false
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'baykit/bayserver/agent/next_socket_action'
|
|
2
|
+
require 'baykit/bayserver/agent/transporter/data_listener'
|
|
3
|
+
require 'baykit/bayserver/watercraft/ship'
|
|
4
|
+
require 'baykit/bayserver/tours/package'
|
|
5
|
+
|
|
6
|
+
module Baykit
|
|
7
|
+
module BayServer
|
|
8
|
+
module Docker
|
|
9
|
+
module Base
|
|
10
|
+
class InboundDataListener
|
|
11
|
+
|
|
12
|
+
include Baykit::BayServer::Agent::Transporter::DataListener # implements
|
|
13
|
+
include Baykit::BayServer::Agent
|
|
14
|
+
|
|
15
|
+
attr :ship
|
|
16
|
+
|
|
17
|
+
def initialize(sip)
|
|
18
|
+
@ship = sip
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def to_s
|
|
22
|
+
return @ship.to_s
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
######################################################
|
|
26
|
+
# Implements DataListener
|
|
27
|
+
######################################################
|
|
28
|
+
|
|
29
|
+
def notify_connect()
|
|
30
|
+
raise Sink.new()
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def notify_handshake_done(protocol)
|
|
34
|
+
BayLog.trace("%s notify_handshake_done: proto=%s", self, protocol)
|
|
35
|
+
return NextSocketAction::CONTINUE
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def notify_read(buf, adr)
|
|
39
|
+
BayLog.trace("%s notify_read", self)
|
|
40
|
+
return @ship.protocol_handler.bytes_received(buf)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def notify_eof()
|
|
44
|
+
BayLog.trace("%s notify_eof", self)
|
|
45
|
+
return NextSocketAction::CLOSE
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def notify_protocol_error(err)
|
|
49
|
+
BayLog.trace("%s notify_protocol_error", self)
|
|
50
|
+
if BayLog.debug_mode?
|
|
51
|
+
BayLog.error_e(err)
|
|
52
|
+
end
|
|
53
|
+
return @ship.protocol_handler.send_req_protocol_error(err)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def notify_close
|
|
57
|
+
BayLog.debug("%s notify_close", self)
|
|
58
|
+
|
|
59
|
+
@ship.abort_tours()
|
|
60
|
+
|
|
61
|
+
if !@ship.active_tours.empty?
|
|
62
|
+
# cannot close because there are some running tours
|
|
63
|
+
BayLog.debug("%s cannot end ship because there are some running tours (ignore)", self)
|
|
64
|
+
@ship.need_end = true
|
|
65
|
+
else
|
|
66
|
+
@ship.end_ship()
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def check_timeout(duration_sec)
|
|
72
|
+
if @ship.socket_timeout_sec <= 0
|
|
73
|
+
timeout = false;
|
|
74
|
+
elsif @ship.keeping
|
|
75
|
+
timeout = duration_sec >= BayServer.harbor.keep_timeout_sec
|
|
76
|
+
else
|
|
77
|
+
timeout = duration_sec >= @ship.socket_timeout_sec
|
|
78
|
+
end
|
|
79
|
+
BayLog.debug("%s Check timeout: dur=%d timeout=%s, keeping=%s, limit=%d",
|
|
80
|
+
self, duration_sec, timeout, @ship.keeping, @ship.socket_timeout_sec)
|
|
81
|
+
return timeout
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Baykit
|
|
2
|
+
module BayServer
|
|
3
|
+
module Docker
|
|
4
|
+
module Base
|
|
5
|
+
module InboundHandler # interface
|
|
6
|
+
|
|
7
|
+
#
|
|
8
|
+
# Send protocol error
|
|
9
|
+
# return true if connection must be closed
|
|
10
|
+
#
|
|
11
|
+
def send_req_protocol_error(protocol_ex)
|
|
12
|
+
raise NotImplementedError()
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
#
|
|
16
|
+
# Send HTTP headers to client
|
|
17
|
+
#
|
|
18
|
+
def send_res_headers(tur)
|
|
19
|
+
raise NotImplementedError()
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
#
|
|
23
|
+
# Send Contents to client
|
|
24
|
+
#
|
|
25
|
+
def send_res_content(tur, bytes, ofs, len, &callback)
|
|
26
|
+
raise NotImplementedError()
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
#
|
|
30
|
+
# Send end of contents to client.
|
|
31
|
+
# sendEnd cannot refer Tour instance because it is discarded before call.
|
|
32
|
+
#
|
|
33
|
+
def send_end_tour(tur, keep_alive, &callback)
|
|
34
|
+
raise NotImplementedError()
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|