acpc_poker_basic_proxy 1.0.0 → 2.0.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.
@@ -0,0 +1,90 @@
1
+
2
+ require_relative 'support/spec_helper'
3
+
4
+ require 'socket'
5
+
6
+ require 'acpc_poker_basic_proxy/communication_logic/dealer_stream'
7
+
8
+ include AcpcPokerBasicProxy
9
+ include CommunicationLogic
10
+
11
+ describe DealerStream do
12
+ after do
13
+ end_test_connection!
14
+ end
15
+ describe '#new' do
16
+ it 'works properly' do
17
+ start_test_connection!
18
+ end_test_connection!
19
+ end
20
+ it "fails if the port doesn't correspond to a running server" do
21
+ fake_dealer = TCPServer.open(0)
22
+ port = fake_dealer.addr[1]
23
+ fake_dealer.close
24
+ -> { DealerStream.new(port) }.must_raise DealerStream::UnableToConnectToDealer
25
+ end
26
+ end
27
+ describe "#ready_to_read?" do
28
+ it 'lets the caller know that there is not new input from the dealer' do
29
+ connect_successfully!
30
+ @patient.ready_to_read?.must_equal false
31
+ end
32
+ it 'lets the caller know that there is new input from the dealer' do
33
+ connect_successfully!
34
+ @client_connection.puts "New input"
35
+ @patient.ready_to_read?.must_equal true
36
+ end
37
+ end
38
+ describe "#ready_to_write?" do
39
+ it 'lets the caller know if the dealer is ready to receive data' do
40
+ connect_successfully!
41
+ @patient.ready_to_write?.must_equal true
42
+ end
43
+ end
44
+ describe "#write" do
45
+ it "properly sends actions to the dealer" do
46
+ connect_successfully!
47
+ action = @match_state + ':c'
48
+ @patient.write action
49
+
50
+ @client_connection.gets.chomp.must_equal(action)
51
+ end
52
+ end
53
+ describe "#gets" do
54
+ it "properly receives matchstate strings from the dealer" do
55
+ connect_successfully!
56
+ @client_connection.puts @match_state
57
+ @patient.gets.must_equal(@match_state)
58
+ end
59
+ it 'disconnects if the timeout is reached' do
60
+ [0, 100].each do |t|
61
+ start_test_connection! t
62
+ -> { @patient.gets }.must_raise DealerStream::UnableToGetFromDealer
63
+ end
64
+ end
65
+ end
66
+
67
+ def end_test_connection!
68
+ @patient.close if @patient && !@patient.closed?
69
+ @client_connection.close if @client_connection && !@client_connection.closed?
70
+ end
71
+
72
+ def start_test_connection!(millisecond_response_timeout = 0, port = 0)
73
+ fake_dealer = TCPServer.open(port)
74
+ @patient = DealerStream.new(
75
+ fake_dealer.addr[1],
76
+ 'localhost',
77
+ millisecond_response_timeout
78
+ )
79
+ @client_connection = fake_dealer.accept
80
+ end
81
+
82
+ def connect_successfully!
83
+ start_test_connection!
84
+ @client_connection.gets.chomp.must_equal(
85
+ "#{DealerStream::VERSION_LABEL}:#{DealerStream::VERSION_NUMBERS[:major]}.#{DealerStream::VERSION_NUMBERS[:minor]}.#{DealerStream::VERSION_NUMBERS[:revision]}"
86
+ )
87
+
88
+ @match_state = 'MATCHSTATE:0:0::5d5c'
89
+ end
90
+ end
@@ -5,7 +5,7 @@ require 'acpc_dealer'
5
5
  require 'acpc_poker_types'
6
6
 
7
7
  require 'acpc_poker_basic_proxy/communication_logic/match_state_receiver'
8
- require 'acpc_poker_basic_proxy/communication_logic/acpc_dealer_communicator'
8
+ require 'acpc_poker_basic_proxy/communication_logic/dealer_stream'
9
9
 
10
10
  describe AcpcPokerBasicProxy::CommunicationLogic::MatchStateReceiver do
11
11
  before(:each) do
@@ -2,12 +2,12 @@ require 'simplecov'
2
2
  SimpleCov.start
3
3
 
4
4
  require 'minitest/spec'
5
- require 'minitest/pride'
6
5
  require 'minitest/mock'
6
+
7
7
  require 'mocha/setup'
8
8
 
9
9
  begin
10
- require 'turn'
10
+ require 'turn/autorun'
11
11
 
12
12
  Turn.config do |c|
13
13
  # use one of output formats:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acpc_poker_basic_proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.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: 2013-05-06 00:00:00.000000000 Z
11
+ date: 2013-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: acpc_poker_types
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '3.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
26
+ version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dmorrill10-utils
28
+ name: contextual_exceptions
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
33
+ version: '0.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '1.0'
40
+ version: '0.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: turn
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.13'
83
- - !ruby/object:Gem::Dependency
84
- name: acpc_dealer
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: '0.0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ~>
95
- - !ruby/object:Gem::Version
96
- version: '0.0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: awesome_print
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +128,14 @@ dependencies:
142
128
  requirements:
143
129
  - - ~>
144
130
  - !ruby/object:Gem::Version
145
- version: '0.0'
131
+ version: '1.0'
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - ~>
151
137
  - !ruby/object:Gem::Version
152
- version: '0.0'
138
+ version: '1.0'
153
139
  description: Basic proxy to connect to the ACPC Dealer.
154
140
  email:
155
141
  - morrill@ualberta.ca
@@ -157,73 +143,70 @@ executables: []
157
143
  extensions: []
158
144
  extra_rdoc_files: []
159
145
  files:
160
- - lib/acpc_poker_basic_proxy/communication_logic/action_sender.rb
161
- - lib/acpc_poker_basic_proxy/communication_logic/acpc_dealer_information.rb
162
- - lib/acpc_poker_basic_proxy/communication_logic/match_state_receiver.rb
163
- - lib/acpc_poker_basic_proxy/communication_logic/acpc_dealer_communicator.rb
164
- - lib/acpc_poker_basic_proxy/mixins/socket_with_ready_methods.rb
146
+ - lib/acpc_poker_basic_proxy.rb
165
147
  - lib/acpc_poker_basic_proxy/basic_proxy.rb
166
148
  - lib/acpc_poker_basic_proxy/communication_logic.rb
149
+ - lib/acpc_poker_basic_proxy/communication_logic/action_sender.rb
150
+ - lib/acpc_poker_basic_proxy/communication_logic/match_state_receiver.rb
151
+ - lib/acpc_poker_basic_proxy/communication_logic/dealer_stream.rb
167
152
  - lib/acpc_poker_basic_proxy/version.rb
168
- - lib/acpc_poker_basic_proxy.rb
169
153
  - Rakefile
170
154
  - acpc_poker_basic_proxy.gemspec
171
155
  - README.md
172
- - spec/action_sender_spec.rb
173
- - spec/acpc_dealer_communicator_spec.rb
174
- - spec/support/spec_helper.rb
175
- - spec/support/dealer_logs/2p.nolimit.h1000.r0.actions.log
176
- - spec/support/dealer_logs/2p.limit.h1000.r0.actions.log
177
- - spec/support/dealer_logs/2p.nolimit.h1000.r0.log
178
- - spec/support/dealer_logs/3p.nolimit.h1000.r0.log
156
+ - spec/match_state_receiver_spec.rb
179
157
  - spec/support/dealer_logs/3p.limit.h1000.r0.actions.log
180
- - spec/support/dealer_logs/3p.nolimit.h1000.r0.actions.log
181
158
  - spec/support/dealer_logs/3p.limit.h1000.r0.log
159
+ - spec/support/dealer_logs/3p.nolimit.h1000.r0.actions.log
160
+ - spec/support/dealer_logs/2p.limit.h1000.r0.actions.log
161
+ - spec/support/dealer_logs/3p.nolimit.h1000.r0.log
162
+ - spec/support/dealer_logs/2p.nolimit.h1000.r0.log
163
+ - spec/support/dealer_logs/2p.nolimit.h1000.r0.actions.log
182
164
  - spec/support/dealer_logs/2p.limit.h1000.r0.log
183
- - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png
184
- - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png
165
+ - spec/support/spec_helper.rb
166
+ - spec/basic_proxy_spec.rb
167
+ - spec/coverage/index.html
168
+ - spec/coverage/assets/0.7.1/application.js
169
+ - spec/coverage/assets/0.7.1/magnify.png
170
+ - spec/coverage/assets/0.7.1/favicon_yellow.png
171
+ - spec/coverage/assets/0.7.1/application.css
172
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
173
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png
174
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png
175
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png
176
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
177
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png
178
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png
179
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
180
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
181
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png
182
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
183
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
184
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
185
+ - spec/coverage/assets/0.7.1/fancybox/fancy_title_right.png
186
+ - spec/coverage/assets/0.7.1/fancybox/fancybox-x.png
185
187
  - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png
186
188
  - spec/coverage/assets/0.7.1/fancybox/fancybox.png
187
- - spec/coverage/assets/0.7.1/fancybox/fancybox-x.png
188
- - spec/coverage/assets/0.7.1/fancybox/fancy_nav_right.png
189
- - spec/coverage/assets/0.7.1/fancybox/fancybox-y.png
190
- - spec/coverage/assets/0.7.1/fancybox/fancy_title_right.png
189
+ - spec/coverage/assets/0.7.1/fancybox/fancy_title_over.png
191
190
  - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png
191
+ - spec/coverage/assets/0.7.1/fancybox/fancy_loading.png
192
+ - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png
193
+ - spec/coverage/assets/0.7.1/fancybox/fancy_nav_right.png
192
194
  - spec/coverage/assets/0.7.1/fancybox/fancy_nav_left.png
193
- - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png
195
+ - spec/coverage/assets/0.7.1/fancybox/fancybox-y.png
194
196
  - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png
195
- - spec/coverage/assets/0.7.1/fancybox/fancy_loading.png
196
- - spec/coverage/assets/0.7.1/fancybox/fancy_title_main.png
197
- - spec/coverage/assets/0.7.1/fancybox/fancy_close.png
198
- - spec/coverage/assets/0.7.1/fancybox/fancy_title_left.png
199
197
  - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png
200
- - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png
198
+ - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png
199
+ - spec/coverage/assets/0.7.1/fancybox/fancy_close.png
200
+ - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png
201
201
  - spec/coverage/assets/0.7.1/fancybox/blank.gif
202
- - spec/coverage/assets/0.7.1/fancybox/fancy_title_over.png
203
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
204
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
205
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png
206
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
207
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png
208
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
209
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png
210
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png
211
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
212
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
213
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png
214
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png
215
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
216
- - spec/coverage/assets/0.7.1/loading.gif
217
- - spec/coverage/assets/0.7.1/magnify.png
218
- - spec/coverage/assets/0.7.1/application.js
219
- - spec/coverage/assets/0.7.1/application.css
202
+ - spec/coverage/assets/0.7.1/fancybox/fancy_title_left.png
203
+ - spec/coverage/assets/0.7.1/fancybox/fancy_title_main.png
204
+ - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png
220
205
  - spec/coverage/assets/0.7.1/favicon_green.png
221
- - spec/coverage/assets/0.7.1/favicon_yellow.png
222
206
  - spec/coverage/assets/0.7.1/favicon_red.png
223
- - spec/coverage/index.html
224
- - spec/match_state_receiver_spec.rb
225
- - spec/acpc_dealer_information_spec.rb
226
- - spec/basic_proxy_spec.rb
207
+ - spec/coverage/assets/0.7.1/loading.gif
208
+ - spec/dealer_stream_spec.rb
209
+ - spec/action_sender_spec.rb
227
210
  homepage: https://github.com/dmorrill10/acpc_poker_basic_proxy
228
211
  licenses: []
229
212
  metadata: {}
@@ -243,63 +226,62 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
226
  version: '0'
244
227
  requirements: []
245
228
  rubyforge_project: acpc_poker_basic_proxy
246
- rubygems_version: 2.0.3
229
+ rubygems_version: 2.0.0.rc.2
247
230
  signing_key:
248
231
  specification_version: 4
249
232
  summary: ACPC Poker Basic Proxy
250
233
  test_files:
251
- - spec/action_sender_spec.rb
252
- - spec/acpc_dealer_communicator_spec.rb
253
- - spec/support/spec_helper.rb
254
- - spec/support/dealer_logs/2p.nolimit.h1000.r0.actions.log
255
- - spec/support/dealer_logs/2p.limit.h1000.r0.actions.log
256
- - spec/support/dealer_logs/2p.nolimit.h1000.r0.log
257
- - spec/support/dealer_logs/3p.nolimit.h1000.r0.log
234
+ - spec/match_state_receiver_spec.rb
258
235
  - spec/support/dealer_logs/3p.limit.h1000.r0.actions.log
259
- - spec/support/dealer_logs/3p.nolimit.h1000.r0.actions.log
260
236
  - spec/support/dealer_logs/3p.limit.h1000.r0.log
237
+ - spec/support/dealer_logs/3p.nolimit.h1000.r0.actions.log
238
+ - spec/support/dealer_logs/2p.limit.h1000.r0.actions.log
239
+ - spec/support/dealer_logs/3p.nolimit.h1000.r0.log
240
+ - spec/support/dealer_logs/2p.nolimit.h1000.r0.log
241
+ - spec/support/dealer_logs/2p.nolimit.h1000.r0.actions.log
261
242
  - spec/support/dealer_logs/2p.limit.h1000.r0.log
262
- - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png
263
- - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png
243
+ - spec/support/spec_helper.rb
244
+ - spec/basic_proxy_spec.rb
245
+ - spec/coverage/index.html
246
+ - spec/coverage/assets/0.7.1/application.js
247
+ - spec/coverage/assets/0.7.1/magnify.png
248
+ - spec/coverage/assets/0.7.1/favicon_yellow.png
249
+ - spec/coverage/assets/0.7.1/application.css
250
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
251
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png
252
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png
253
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png
254
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
255
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png
256
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png
257
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
258
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
259
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png
260
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
261
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
262
+ - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
263
+ - spec/coverage/assets/0.7.1/fancybox/fancy_title_right.png
264
+ - spec/coverage/assets/0.7.1/fancybox/fancybox-x.png
264
265
  - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png
265
266
  - spec/coverage/assets/0.7.1/fancybox/fancybox.png
266
- - spec/coverage/assets/0.7.1/fancybox/fancybox-x.png
267
- - spec/coverage/assets/0.7.1/fancybox/fancy_nav_right.png
268
- - spec/coverage/assets/0.7.1/fancybox/fancybox-y.png
269
- - spec/coverage/assets/0.7.1/fancybox/fancy_title_right.png
267
+ - spec/coverage/assets/0.7.1/fancybox/fancy_title_over.png
270
268
  - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png
269
+ - spec/coverage/assets/0.7.1/fancybox/fancy_loading.png
270
+ - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png
271
+ - spec/coverage/assets/0.7.1/fancybox/fancy_nav_right.png
271
272
  - spec/coverage/assets/0.7.1/fancybox/fancy_nav_left.png
272
- - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png
273
+ - spec/coverage/assets/0.7.1/fancybox/fancybox-y.png
273
274
  - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png
274
- - spec/coverage/assets/0.7.1/fancybox/fancy_loading.png
275
- - spec/coverage/assets/0.7.1/fancybox/fancy_title_main.png
276
- - spec/coverage/assets/0.7.1/fancybox/fancy_close.png
277
- - spec/coverage/assets/0.7.1/fancybox/fancy_title_left.png
278
275
  - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png
279
- - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png
276
+ - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png
277
+ - spec/coverage/assets/0.7.1/fancybox/fancy_close.png
278
+ - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png
280
279
  - spec/coverage/assets/0.7.1/fancybox/blank.gif
281
- - spec/coverage/assets/0.7.1/fancybox/fancy_title_over.png
282
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
283
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
284
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png
285
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
286
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png
287
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
288
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png
289
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png
290
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
291
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
292
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png
293
- - spec/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png
294
- - spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
295
- - spec/coverage/assets/0.7.1/loading.gif
296
- - spec/coverage/assets/0.7.1/magnify.png
297
- - spec/coverage/assets/0.7.1/application.js
298
- - spec/coverage/assets/0.7.1/application.css
280
+ - spec/coverage/assets/0.7.1/fancybox/fancy_title_left.png
281
+ - spec/coverage/assets/0.7.1/fancybox/fancy_title_main.png
282
+ - spec/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png
299
283
  - spec/coverage/assets/0.7.1/favicon_green.png
300
- - spec/coverage/assets/0.7.1/favicon_yellow.png
301
284
  - spec/coverage/assets/0.7.1/favicon_red.png
302
- - spec/coverage/index.html
303
- - spec/match_state_receiver_spec.rb
304
- - spec/acpc_dealer_information_spec.rb
305
- - spec/basic_proxy_spec.rb
285
+ - spec/coverage/assets/0.7.1/loading.gif
286
+ - spec/dealer_stream_spec.rb
287
+ - spec/action_sender_spec.rb
@@ -1,127 +0,0 @@
1
-
2
- require 'socket'
3
- require 'dmorrill10-utils/class'
4
-
5
- require 'acpc_poker_basic_proxy/mixins/socket_with_ready_methods'
6
-
7
- # Communication service to the ACPC Dealer.
8
- # It acts solely as an abstraction of the communication protocol and
9
- # implements the main Ruby communication interface through 'gets' and 'puts'
10
- # methods.
11
- module AcpcPokerBasicProxy
12
- module CommunicationLogic
13
- class AcpcDealerCommunicator
14
- exceptions :acpc_dealer_connection_error, :put_to_acpc_dealer_error, :get_from_acpc_dealer_error
15
-
16
- # @return [String] The ACPC dealer version label.
17
- VERSION_LABEL = 'VERSION'
18
-
19
- # @return [Hash] The ACPC dealer version numbers.
20
- VERSION_NUMBERS = {:major => 2, :minor => 0, :revision => 0}
21
-
22
- # @return [String] Dealer specified string terminator.
23
- TERMINATION_STRING = "\r\n"
24
-
25
- # @param [Integer] port The port on which to connect to the dealer.
26
- # @param [String] host_name The host on which the dealer is running.
27
- # @param [Integer] millisecond_response_timeout The dealer's response timeout, in milleseconds.
28
- # @raise AcpcDealerConnectionError, PutToAcpcDealerError
29
- def initialize(port, host_name='localhost', millisecond_response_timeout=nil)
30
- begin
31
- @dealer_socket = TCPSocket.new(host_name, port)
32
- @response_timeout_in_seconds = if millisecond_response_timeout
33
- millisecond_response_timeout/(10**3)
34
- else
35
- nil
36
- end
37
- send_version_string_to_dealer
38
- rescue PutToAcpcDealerError
39
- raise
40
- rescue
41
- handle_error AcpcDealerConnectionError, "Unable to connect to the dealer on #{host_name} through port #{port}: #{$?}"
42
- end
43
- end
44
-
45
- # Closes the connection to the dealer.
46
- def close
47
- @dealer_socket.close if @dealer_socket
48
- end
49
-
50
- # Retrieves a string from the dealer.
51
- #
52
- # @return [String] A string from the dealer.
53
- # @raise GetFromAcpcDealerError
54
- def gets
55
- begin
56
- raw_match_state = string_from_dealer
57
- rescue
58
- handle_error GetFromAcpcDealerError, "Unable to get a string from the dealer: #{$?}"
59
- end
60
- raw_match_state
61
- end
62
-
63
- # Sends a given +string+ to the dealer.
64
- #
65
- # @param [String] string The string to send.
66
- # @return (see #send_string_to_dealer)
67
- # @raise WriteToAcpcDealerError
68
- def write(string)
69
- begin
70
- bytes_written = send_string_to_dealer string
71
- rescue
72
- handle_error GetFromAcpcDealerError, "Unable to send the string, \"#{string}\", to the dealer: #{$?}."
73
- end
74
- bytes_written
75
- end
76
-
77
- # @see TCPSocket#ready_to_write?
78
- def ready_to_write?
79
- @dealer_socket.ready_to_write? @response_timeout_in_seconds
80
- end
81
-
82
- # @see TCPSocket#ready_to_read?
83
- def ready_to_read?
84
- @dealer_socket.ready_to_read? @response_timeout_in_seconds
85
- end
86
-
87
- private
88
-
89
- def handle_error(exception, message)
90
- close
91
- raise exception, message
92
- end
93
-
94
- # @return (see #send_string_to_dealer)
95
- def send_version_string_to_dealer
96
- version_string = "#{VERSION_LABEL}:#{VERSION_NUMBERS[:major]}.#{VERSION_NUMBERS[:minor]}.#{VERSION_NUMBERS[:revision]}"
97
- begin
98
- bytes_written = send_string_to_dealer version_string
99
- rescue
100
- handle_error PutToAcpcDealerError, "Unable to send version string, \"#{version_string}\", to the dealer"
101
- end
102
- bytes_written
103
- end
104
-
105
- # @return [Integer] The number of bytes written to the dealer.
106
- def send_string_to_dealer(string)
107
- raise unless ready_to_write?
108
- begin
109
- bytes_written = @dealer_socket.write(string + TERMINATION_STRING)
110
- rescue
111
- raise
112
- end
113
- bytes_written
114
- end
115
-
116
- def string_from_dealer
117
- raise unless ready_to_read?
118
- begin
119
- string = @dealer_socket.gets.chomp
120
- rescue
121
- raise
122
- end
123
- string
124
- end
125
- end
126
- end
127
- end