acpc_table_manager 3.0.11 → 3.0.12
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/acpc_table_manager/match.rb +5 -1
- data/lib/acpc_table_manager/table_queue.rb +33 -31
- data/lib/acpc_table_manager/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0e45bdd8fff4488222915a4e977067542d335c4
|
4
|
+
data.tar.gz: '0992f61ada4f67006c53c1653ef371f1d11f6950'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 654139f50b17ec5541c14b977049d47e67aae1caccc55c70297938cae5828eb344efd9d3c54e255242da02953b0047e74575c71b33bc03f5efc0dd6ae5fafd19
|
7
|
+
data.tar.gz: 3a2ad7ac571d4a9beba6bd6e020023e289f5dda4840e5e305a8bc4e795a1b55637c06c2022786c5856d22c4816db4c4839a7b6b83d3b3cb10888a88ba38fdf1c
|
@@ -113,7 +113,11 @@ class Match
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def ports_in_use(matches=all)
|
116
|
-
|
116
|
+
ports = []
|
117
|
+
matches.possibly_running.each do |match|
|
118
|
+
ports += m.port_numbers if match.running?
|
119
|
+
end
|
120
|
+
ports
|
117
121
|
end
|
118
122
|
|
119
123
|
def kill_all_orphan_processes!(matches=all)
|
@@ -91,27 +91,30 @@ module AcpcTableManager
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def check!
|
94
|
+
my_matches_to_start = matches_to_start.to_a
|
95
|
+
num_running_matches = Match.running(my_matches).length
|
94
96
|
log(
|
95
97
|
__method__,
|
96
98
|
{
|
97
|
-
num_running_matches:
|
98
|
-
num_matches_to_start:
|
99
|
+
num_running_matches: num_running_matches,
|
100
|
+
num_matches_to_start: my_matches_to_start.length
|
99
101
|
}
|
100
102
|
)
|
101
103
|
|
102
104
|
matches_started = []
|
103
105
|
while (
|
104
|
-
!
|
105
|
-
|
106
|
+
!my_matches_to_start.empty? &&
|
107
|
+
num_running_matches < AcpcTableManager.exhibition_config.games[@game_definition_key]['max_num_matches']
|
106
108
|
)
|
107
|
-
matches_started << dequeue
|
109
|
+
matches_started << dequeue(my_matches_to_start.pop)
|
110
|
+
num_running_matches += 1
|
108
111
|
end
|
109
112
|
|
110
113
|
log(
|
111
114
|
__method__,
|
112
115
|
{
|
113
116
|
matches_started: matches_started,
|
114
|
-
num_running_matches:
|
117
|
+
num_running_matches: num_running_matches,
|
115
118
|
num_matches_to_start: matches_to_start.length
|
116
119
|
}
|
117
120
|
)
|
@@ -121,13 +124,13 @@ module AcpcTableManager
|
|
121
124
|
|
122
125
|
protected
|
123
126
|
|
124
|
-
def port(
|
125
|
-
port_ =
|
127
|
+
def port(available_ports)
|
128
|
+
port_ = available_ports.pop
|
126
129
|
while !AcpcDealer::port_available?(port_)
|
127
|
-
if
|
130
|
+
if available_ports.empty?
|
128
131
|
raise NoPortForDealerAvailable.new("None of the special ports (#{available_special_ports}) are open")
|
129
132
|
end
|
130
|
-
port_ =
|
133
|
+
port_ = available_ports.pop
|
131
134
|
end
|
132
135
|
unless port_
|
133
136
|
raise NoPortForDealerAvailable.new("None of the special ports (#{available_special_ports}) are open")
|
@@ -135,18 +138,22 @@ module AcpcTableManager
|
|
135
138
|
port_
|
136
139
|
end
|
137
140
|
|
141
|
+
def ports_to_use(special_port_requirements, available_ports = nil)
|
142
|
+
ports = special_port_requirements.map do |r|
|
143
|
+
if r
|
144
|
+
# Slow. Only check available special ports if necessary
|
145
|
+
available_ports ||= available_special_ports
|
146
|
+
port(available_ports)
|
147
|
+
else
|
148
|
+
0
|
149
|
+
end
|
150
|
+
end
|
151
|
+
return ports, available_ports
|
152
|
+
end
|
153
|
+
|
138
154
|
# @return [Object] The match that has been started or +nil+ if none could
|
139
155
|
# be started.
|
140
|
-
def dequeue
|
141
|
-
my_matches_to_start = matches_to_start
|
142
|
-
log(
|
143
|
-
__method__,
|
144
|
-
num_matches_to_start: my_matches_to_start.length
|
145
|
-
)
|
146
|
-
return nil if my_matches_to_start.empty?
|
147
|
-
|
148
|
-
match = my_matches_to_start.last
|
149
|
-
|
156
|
+
def dequeue(match)
|
150
157
|
log(
|
151
158
|
__method__,
|
152
159
|
msg: "Starting dealer for match \"#{match.name}\" (#{match.id})",
|
@@ -158,10 +165,7 @@ module AcpcTableManager
|
|
158
165
|
# Add user's port
|
159
166
|
special_port_requirements.insert(match.seat - 1, false)
|
160
167
|
|
161
|
-
|
162
|
-
ports_to_be_used = special_port_requirements.map do |r|
|
163
|
-
if r then port(available_ports_) else 0 end
|
164
|
-
end
|
168
|
+
ports_to_be_used, available_ports = ports_to_use(special_port_requirements)
|
165
169
|
|
166
170
|
num_repetitions = 0
|
167
171
|
dealer_info = nil
|
@@ -170,7 +174,7 @@ module AcpcTableManager
|
|
170
174
|
log(
|
171
175
|
__method__,
|
172
176
|
msg: "Added #{match.id} list of running matches",
|
173
|
-
available_special_ports:
|
177
|
+
available_special_ports: available_ports,
|
174
178
|
special_port_requirements: special_port_requirements,
|
175
179
|
:'ports_to_be_used_(zero_for_random)' => ports_to_be_used
|
176
180
|
)
|
@@ -183,14 +187,12 @@ module AcpcTableManager
|
|
183
187
|
Logger::Severity::WARN
|
184
188
|
)
|
185
189
|
begin
|
186
|
-
ports_to_be_used = special_port_requirements
|
187
|
-
if r then port(available_ports_) else 0 end
|
188
|
-
end
|
190
|
+
ports_to_be_used, available_ports = ports_to_use(special_port_requirements, available_ports)
|
189
191
|
rescue NoPortForDealerAvailable => e
|
190
|
-
|
192
|
+
available_ports = available_special_ports
|
191
193
|
log(
|
192
194
|
__method__,
|
193
|
-
{warning: "#{ports_to_be_used} ports unavailable, retrying with all special ports, #{
|
195
|
+
{warning: "#{ports_to_be_used} ports unavailable, retrying with all special ports, #{available_ports}."},
|
194
196
|
Logger::Severity::WARN
|
195
197
|
)
|
196
198
|
end
|
@@ -198,7 +200,7 @@ module AcpcTableManager
|
|
198
200
|
sleep 1
|
199
201
|
log(
|
200
202
|
__method__,
|
201
|
-
{warning: "Retrying with all special ports, #{
|
203
|
+
{warning: "Retrying with all special ports, #{available_ports}."},
|
202
204
|
Logger::Severity::WARN
|
203
205
|
)
|
204
206
|
num_repetitions += 1
|