bayserver-core 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|