acpc_dealer 3.0.2 → 3.1.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 +4 -4
- data/acpc_dealer.gemspec +0 -1
- data/bin/acpc_dealer +9 -4
- data/lib/acpc_dealer/dealer_runner.rb +50 -36
- data/lib/acpc_dealer/version.rb +1 -1
- metadata +2 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e1c356e89c512e17dfd0fd11da86d8822cd8dca9
|
|
4
|
+
data.tar.gz: be541dba86e52f4cf1237b06be6717f2913d0d19
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 154d40a655e3879b202f46dc0e9b24ac3fca5d17086daba25fcd149bea54fda39e61d9300bee13301851021a1229be5b0001b7155625846c5c8b9d03ae4ad2de
|
|
7
|
+
data.tar.gz: 9a276040319a850c460b588cc7a1099716b5586bfeb04b36b8122aec0df2e2a25563cc422e6a31fc5d720fd6fad1d371d6a3c585b64e3cd2c5c25323ee365f69
|
data/acpc_dealer.gemspec
CHANGED
|
@@ -13,7 +13,6 @@ Gem::Specification.new do |gem|
|
|
|
13
13
|
gem.platform = Gem::Platform::RUBY
|
|
14
14
|
|
|
15
15
|
gem.add_dependency 'clive', '~> 1.2'
|
|
16
|
-
gem.add_dependency 'process_runner', '~> 0.0'
|
|
17
16
|
gem.add_dependency 'rake-compiler', '~> 0.8'
|
|
18
17
|
gem.add_dependency 'brick_and_mortar', '~> 0.1'
|
|
19
18
|
|
data/bin/acpc_dealer
CHANGED
|
@@ -155,10 +155,15 @@ class AcpcDealerCli < Clive
|
|
|
155
155
|
|
|
156
156
|
host_name = if get(:host_name) then get(:host_name) else 'localhost' end
|
|
157
157
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
158
|
+
Process.detach(
|
|
159
|
+
Process.spawn(
|
|
160
|
+
player,
|
|
161
|
+
host_name, get(:port),
|
|
162
|
+
chdir: File.dirname(
|
|
163
|
+
AcpcDealer::EXAMPLE_PLAYERS[number_of_players][betting_type]
|
|
164
|
+
)
|
|
165
|
+
)
|
|
166
|
+
)
|
|
162
167
|
|
|
163
168
|
puts "Example player for #{number_of_players} player #{betting_type}, connected to dealer on #{host_name}:#{get(:port)}"
|
|
164
169
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
require 'socket'
|
|
2
|
-
require 'process_runner'
|
|
3
2
|
|
|
4
3
|
module AcpcDealer
|
|
5
4
|
class DealerRunner
|
|
@@ -29,10 +28,14 @@ module AcpcDealer
|
|
|
29
28
|
# => Defaults to the ACPC Dealer's default.
|
|
30
29
|
# @return [Array] The components of the ACPC Dealer command that would be run (the executable, followed by arguments)
|
|
31
30
|
def self.command_components(dealer_arguments, port_numbers=nil)
|
|
32
|
-
dealer_start_command = DEALER_COMMAND_FORMAT.inject(
|
|
31
|
+
dealer_start_command = DEALER_COMMAND_FORMAT.inject(
|
|
32
|
+
[AcpcDealer::DEALER_PATH]
|
|
33
|
+
) do |command_, parameter|
|
|
33
34
|
command_ += dealer_arguments[parameter].to_s.split
|
|
34
35
|
end
|
|
35
|
-
|
|
36
|
+
if port_numbers
|
|
37
|
+
dealer_start_command << "-p" << "#{port_numbers.join(',')}"
|
|
38
|
+
end
|
|
36
39
|
dealer_start_command
|
|
37
40
|
end
|
|
38
41
|
|
|
@@ -49,49 +52,60 @@ module AcpcDealer
|
|
|
49
52
|
# => Defaults to +<dealer_arguments[:match_name]>.logs+.
|
|
50
53
|
# @param [Array] port_numbers The port numbers to which each player will connect.
|
|
51
54
|
# => Defaults to the ACPC's default.
|
|
52
|
-
# @
|
|
53
|
-
#
|
|
54
|
-
# @raise (see
|
|
55
|
+
# @param [Boolean] save_action_log
|
|
56
|
+
# @param [Hash] options (see Process::spawn)
|
|
57
|
+
# @raise (see Process::detach)
|
|
58
|
+
# @raise (see Process::spawn)
|
|
55
59
|
# @raise (see FileUtils::mkdir_p)
|
|
56
|
-
def self.start(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
def self.start(
|
|
61
|
+
dealer_arguments,
|
|
62
|
+
log_directory=nil,
|
|
63
|
+
port_numbers=nil,
|
|
64
|
+
save_action_log=true,
|
|
65
|
+
options={}
|
|
66
|
+
)
|
|
67
|
+
log_directory ||= File.expand_path(
|
|
68
|
+
"../#{dealer_arguments[:match_name]}.logs",
|
|
69
|
+
__FILE__
|
|
70
|
+
)
|
|
61
71
|
FileUtils.mkdir_p log_directory unless Dir.exist?(log_directory)
|
|
62
72
|
|
|
73
|
+
options[:chdir] ||= log_directory
|
|
74
|
+
|
|
63
75
|
IO.pipe do |read_io, write_io|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
)
|
|
74
|
-
else
|
|
75
|
-
ProcessRunner.go(
|
|
76
|
-
command_components(dealer_arguments, port_numbers),
|
|
77
|
-
out: write_io,
|
|
78
|
-
chdir: log_directory
|
|
79
|
-
)
|
|
76
|
+
options[:out] ||= write_io
|
|
77
|
+
if save_action_log
|
|
78
|
+
options[:err] = [
|
|
79
|
+
File.join(
|
|
80
|
+
log_directory,
|
|
81
|
+
"#{dealer_arguments[:match_name]}.actions.log"
|
|
82
|
+
),
|
|
83
|
+
File::CREAT|File::WRONLY
|
|
84
|
+
]
|
|
80
85
|
end
|
|
86
|
+
pid = Process.detach(
|
|
87
|
+
Process.spawn(
|
|
88
|
+
*command_components(dealer_arguments, port_numbers),
|
|
89
|
+
options
|
|
90
|
+
)
|
|
91
|
+
).pid
|
|
81
92
|
|
|
82
|
-
{
|
|
93
|
+
{
|
|
94
|
+
pid: pid,
|
|
95
|
+
port_numbers: read_io.gets.split.map(&:to_i),
|
|
96
|
+
log_directory: log_directory
|
|
97
|
+
}
|
|
83
98
|
end
|
|
84
99
|
end
|
|
85
100
|
|
|
86
|
-
# @
|
|
87
|
-
|
|
88
|
-
#
|
|
89
|
-
# =>
|
|
90
|
-
# => using them.
|
|
101
|
+
# @return [Array<Integer>] List of arbitrary open ports.
|
|
102
|
+
# => Does NOT reserve the ports,
|
|
103
|
+
# => so it's possible that the ports will come into use between calling
|
|
104
|
+
# => this method and using them.
|
|
91
105
|
def self.ports_for_players(number_of_players)
|
|
92
|
-
number_of_players.times.
|
|
93
|
-
|
|
106
|
+
number_of_players.times.map do
|
|
107
|
+
TCPServer.open('localhost', 0) { |s| s.addr[1] }
|
|
94
108
|
end
|
|
95
109
|
end
|
|
96
110
|
end
|
|
97
|
-
end
|
|
111
|
+
end
|
data/lib/acpc_dealer/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: acpc_dealer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dustin Morrill
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-01-
|
|
11
|
+
date: 2017-01-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: clive
|
|
@@ -24,20 +24,6 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '1.2'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: process_runner
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0.0'
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0.0'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: rake-compiler
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|