acpc_poker_basic_proxy 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/acpc_poker_basic_proxy.gemspec +4 -5
- data/lib/acpc_poker_basic_proxy.rb +1 -0
- data/lib/acpc_poker_basic_proxy/basic_proxy.rb +7 -4
- data/lib/acpc_poker_basic_proxy/communication_logic.rb +1 -2
- data/lib/acpc_poker_basic_proxy/communication_logic/action_sender.rb +3 -1
- data/lib/acpc_poker_basic_proxy/communication_logic/dealer_stream.rb +150 -0
- data/lib/acpc_poker_basic_proxy/version.rb +1 -1
- data/spec/action_sender_spec.rb +1 -1
- data/spec/basic_proxy_spec.rb +3 -3
- data/spec/coverage/index.html +7 -1373
- data/spec/dealer_stream_spec.rb +90 -0
- data/spec/match_state_receiver_spec.rb +1 -1
- data/spec/support/spec_helper.rb +2 -2
- metadata +98 -116
- data/lib/acpc_poker_basic_proxy/communication_logic/acpc_dealer_communicator.rb +0 -127
- data/lib/acpc_poker_basic_proxy/communication_logic/acpc_dealer_information.rb +0 -22
- data/lib/acpc_poker_basic_proxy/mixins/socket_with_ready_methods.rb +0 -32
- data/spec/acpc_dealer_communicator_spec.rb +0 -67
- data/spec/acpc_dealer_information_spec.rb +0 -10
@@ -1,22 +0,0 @@
|
|
1
|
-
|
2
|
-
# Information about a dealer instance.
|
3
|
-
module AcpcPokerBasicProxy
|
4
|
-
module CommunicationLogic
|
5
|
-
class AcpcDealerInformation
|
6
|
-
# @return [String] The host name of the dealer associated with this table.
|
7
|
-
attr_reader :host_name
|
8
|
-
|
9
|
-
# @return [Integer] The port number of the dealer associated with this table.
|
10
|
-
attr_reader :port_number
|
11
|
-
|
12
|
-
# @return [Integer] The dealer's response timeout.
|
13
|
-
attr_reader :millisecond_response_timeout
|
14
|
-
|
15
|
-
def initialize(host_name, port_number, millisecond_response_timeout=nil)
|
16
|
-
@host_name = host_name
|
17
|
-
@port_number = port_number
|
18
|
-
@millisecond_response_timeout = millisecond_response_timeout
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
|
2
|
-
# Mixin to add methods to IO so that they will also be inherited by TCPSocket.
|
3
|
-
class IO
|
4
|
-
# Checks if the socket is ready to be read from.
|
5
|
-
# @param [Integer] timeout_in_seconds Amount of time to wait for the sever to respond, in seconds. Must be positive or +nil+.
|
6
|
-
# @return [Boolean] +true+ if the socket is ready to be read from, +false+ otherwise.
|
7
|
-
def ready_to_read?(timeout_in_seconds=nil)
|
8
|
-
read_array = [self]
|
9
|
-
write_array = nil
|
10
|
-
error_array = nil
|
11
|
-
|
12
|
-
select(read_array, write_array, error_array, timeout_in_seconds)
|
13
|
-
end
|
14
|
-
|
15
|
-
# Checks if the socket is ready to be written to.
|
16
|
-
# @param [Integer] timeout_in_seconds Amount of time to wait for the sever to respond, in seconds. Must be positive or +nil+.
|
17
|
-
# @return [Boolean] +true+ if the socket is ready to be written to, +false+ otherwise.
|
18
|
-
def ready_to_write?(timeout_in_seconds=nil)
|
19
|
-
read_array = nil
|
20
|
-
write_array = [self]
|
21
|
-
error_array = nil
|
22
|
-
|
23
|
-
select(read_array, write_array, error_array, timeout_in_seconds)
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
# @see IO#select
|
29
|
-
def select(read_array, write_array=[], error_array=[], timeout_in_seconds=nil)
|
30
|
-
IO.select(read_array, write_array, error_array, timeout_in_seconds) != nil
|
31
|
-
end
|
32
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
|
2
|
-
require_relative 'support/spec_helper'
|
3
|
-
|
4
|
-
require 'socket'
|
5
|
-
|
6
|
-
require 'acpc_poker_basic_proxy/communication_logic/acpc_dealer_communicator'
|
7
|
-
|
8
|
-
describe AcpcPokerBasicProxy::CommunicationLogic::AcpcDealerCommunicator do
|
9
|
-
|
10
|
-
before do
|
11
|
-
start_test_connection 0
|
12
|
-
@client_connection.gets.chomp.must_equal(
|
13
|
-
"#{AcpcPokerBasicProxy::CommunicationLogic::AcpcDealerCommunicator::VERSION_LABEL}:#{AcpcPokerBasicProxy::CommunicationLogic::AcpcDealerCommunicator::VERSION_NUMBERS[:major]}.#{AcpcPokerBasicProxy::CommunicationLogic::AcpcDealerCommunicator::VERSION_NUMBERS[:minor]}.#{AcpcPokerBasicProxy::CommunicationLogic::AcpcDealerCommunicator::VERSION_NUMBERS[:revision]}"
|
14
|
-
)
|
15
|
-
|
16
|
-
@match_state = 'MATCHSTATE:0:0::5d5c'
|
17
|
-
end
|
18
|
-
|
19
|
-
after do
|
20
|
-
@patient.close
|
21
|
-
@client_connection.close
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "#ready_to_read?" do
|
25
|
-
it 'lets the caller know that there is not new input from the dealer' do
|
26
|
-
@patient.ready_to_read?.must_equal false
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'lets the caller know that there is new input from the dealer' do
|
30
|
-
@client_connection.puts "New input"
|
31
|
-
@patient.ready_to_read?.must_equal true
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe "#ready_to_write?" do
|
36
|
-
it 'lets the caller know if the dealer is ready to receive data' do
|
37
|
-
@patient.ready_to_write?.must_equal true
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe "#write" do
|
42
|
-
it "properly sends actions to the dealer" do
|
43
|
-
action = @match_state + ':c'
|
44
|
-
@patient.write action
|
45
|
-
|
46
|
-
@client_connection.gets.chomp.must_equal(action)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe "#gets" do
|
51
|
-
it "properly receives matchstate strings from the dealer" do
|
52
|
-
@client_connection.puts @match_state
|
53
|
-
@patient.gets.must_equal(@match_state)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def start_test_connection(port)
|
58
|
-
fake_dealer = TCPServer.open(port)
|
59
|
-
@patient = AcpcPokerBasicProxy::CommunicationLogic::AcpcDealerCommunicator.new(
|
60
|
-
fake_dealer.addr[1],
|
61
|
-
'localhost',
|
62
|
-
0
|
63
|
-
)
|
64
|
-
|
65
|
-
@client_connection = fake_dealer.accept
|
66
|
-
end
|
67
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
|
2
|
-
require_relative 'support/spec_helper'
|
3
|
-
|
4
|
-
require 'acpc_poker_basic_proxy/communication_logic/acpc_dealer_information'
|
5
|
-
|
6
|
-
describe AcpcPokerBasicProxy::CommunicationLogic::AcpcDealerInformation do
|
7
|
-
it '' do
|
8
|
-
skip "Since this class only holds data right now, there's no need for tests"
|
9
|
-
end
|
10
|
-
end
|