software_challenge_client 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1f894ec8a43e2caa45c9773bfe4f8ef966b95583
4
- data.tar.gz: 681466cbca4293e50641de66564dbf13379a3e3c
3
+ metadata.gz: 7809a3d6d16c4423f55d59c5841e091167492d5c
4
+ data.tar.gz: cf93fa514e3d59944f5a25b5c4267c86f02a0842
5
5
  SHA512:
6
- metadata.gz: d2b6c4cb186b805758336139e4527994de33e10bcda8389c27a83da9c79abc39aedb82df96b759b26ebcad76c5ba6965d8487e982fdaa187af47bb42794074fb
7
- data.tar.gz: 742a795eb16528f7809620c2101af4b636dfaad6b5fb81065c9b60847ad92dc9963b2ae981e2d3ab5b678c0798478a1015c3279be3a4e803ff05025efd55636f
6
+ metadata.gz: 44aea3599dc16e2b4bc9daba649d1c3079b88b903de986bf4a5db04bdf625b6e6356038725c3e25e0823e1a769819c2e7a3ce1e08bd71327805f4d220f0d71fd
7
+ data.tar.gz: 278be07a4517f858ced0abdd062e7b22665fffce97bdebdadffe4fcf400deece2dd026946b55644084734e2421c1ae9010200ad3b51ca4e312025748e80ebf0a
data/README.md CHANGED
@@ -67,14 +67,14 @@ to get a live preview of them at [http://localhost:8808](http://localhost:8808).
67
67
  ## Development
68
68
 
69
69
  After checking out the repo, run `bin/setup` to install
70
- dependencies. Then, run `rake false` to run the tests. You can also
70
+ dependencies. Then, run `rspec` to run the tests. You can also
71
71
  run `bin/console` for an interactive prompt that will allow you to
72
72
  experiment.
73
73
 
74
74
  To install this gem onto your local machine, run `bundle exec rake
75
75
  install`.
76
76
 
77
- To develop inside a docker container, use the included `Dockerfile` and
77
+ To develop inside a docker container, make sure you have Docker installed and execute
78
78
  `develop.sh`.
79
79
 
80
80
  ### Specs
data/RELEASES.md CHANGED
@@ -1,3 +1,8 @@
1
+ = 1.2.0
2
+
3
+ - fixed connection code
4
+ - fixed bug which lead to a exception when testing for playability of fallback card
5
+
1
6
  = 1.1.0
2
7
 
3
8
  Added missing perform! methods for actions.
@@ -40,6 +40,7 @@ class Board
40
40
  # exisitert (weil der Index ausserhalb von 0..64 liegt), wird ein neues
41
41
  # Feld vom Typ INVALID zurückgegeben.
42
42
  def field(index)
43
+ return Field.new(FieldType::INVALID, index) if index.negative?
43
44
  fields.fetch(index, Field.new(FieldType::INVALID, index))
44
45
  end
45
46
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: UTF-8
2
+
2
3
  require 'socket'
3
4
  require 'rexml/document'
4
5
  require 'rexml/element'
@@ -9,31 +10,23 @@ require_relative 'client_interface'
9
10
 
10
11
  # This class handles the socket connection to the server
11
12
  class Network
12
-
13
13
  include Logging
14
14
 
15
- @socket
16
- @host
17
- @port
18
-
19
- @board
20
- @client
21
- @protocol
22
-
23
- @receiveBuffer
24
- @reservationID
25
-
26
15
  # @!attribute [r] connected
27
16
  # @return [Boolean] true, if the client is connected to a server
28
17
  attr_reader :connected
29
18
 
30
19
  def initialize(host, port, board, client, reservation = nil)
31
- @host, @port, @connected, @board, @client =
32
- host, port, false, board, client
20
+ logger.debug("New version")
21
+ @host = host
22
+ @port = port
23
+ @board = board
24
+ @client = client
33
25
 
26
+ @connected = false
34
27
  @protocol = Protocol.new(self, @client)
35
- @reservationID = reservation || ''
36
- @receiveBuffer = ''
28
+ @reservation_id = reservation || ''
29
+ @receive_buffer = ''
37
30
  end
38
31
 
39
32
  # connects the client with a given server
@@ -44,28 +37,24 @@ class Network
44
37
  logger.info 'Connection to server established.'
45
38
  @connected = true
46
39
 
47
- self.sendString('<protocol>')
48
- if @reservationID != ''
49
- document = REXML::Document.new
40
+ sendString('<protocol>')
41
+ document = REXML::Document.new
42
+ if @reservation_id != ''
50
43
  element = REXML::Element.new('joinPrepared')
51
- element.add_attribute('reservationCode', @reservationID)
52
- document.add(element)
53
- self.sendXML(document)
44
+ element.add_attribute('reservationCode', @reservation_id)
54
45
  else
55
- document = REXML::Document.new
56
46
  element = REXML::Element.new('join')
57
- element.add_attribute('gameType', 'swc_2017_mississippi_queen')
58
- document.add(element)
59
- self.sendXML(document)
47
+ element.add_attribute('gameType', 'swc_2018_hase_und_igel')
60
48
  end
61
- return @connected
49
+ document.add(element)
50
+ sendXML(document)
51
+ @connected
62
52
  end
63
53
 
64
54
  # disconnects the client from a server
65
55
  def disconnect
66
-
67
56
  if @connected
68
- sendString("</protocol>")
57
+ sendString('</protocol>')
69
58
  @connected = false
70
59
  @socket.close
71
60
  end
@@ -74,72 +63,65 @@ class Network
74
63
 
75
64
  # reads from the socket until "</room>" is read
76
65
  def readString
77
- logger.debug 'reading'
78
- sockMsg = ''
79
- if(!@connected)
80
- return
81
- end
82
-
83
- line =''
84
- char = ''
85
- while (line != "</room>" && line != "</protocol>") && !(char = @socket.getc).nil?
86
- line+=char
87
- if char=='\n' || char==' '
66
+ return false unless @connected
67
+ sock_msg = ''
88
68
 
89
- line = ''
90
- end
91
- sockMsg += char
69
+ line = ''
70
+ logger.debug 'reading'
71
+ @socket.each_char do |char|
72
+ line += char
73
+ sock_msg += char
74
+ line = '' if ['\n', ' '].include? char
75
+ break if ['</room>', '</protocol>'].include? line
92
76
  end
93
77
  logger.debug 'ended reading'
94
- if sockMsg != ''
95
-
96
- @receiveBuffer.concat(sockMsg)
78
+ if sock_msg != ''
79
+ @receive_buffer.concat(sock_msg)
97
80
 
98
81
  # Remove <protocol> tag
99
- @receiveBuffer = @receiveBuffer.gsub('<protocol>', '')
100
- @receiveBuffer = @receiveBuffer.gsub('</protocol>', '')
82
+ @receive_buffer = @receive_buffer.gsub('<protocol>', '')
83
+ @receive_buffer = @receive_buffer.gsub('</protocol>', '')
101
84
 
102
- logger.debug "Received XML from server: #{@receiveBuffer}"
85
+ logger.debug "Received XML from server: #{@receive_buffer}"
103
86
 
104
87
  # Process text
105
- @protocol.process_string(@receiveBuffer);
106
- self.emptyReceiveBuffer
88
+ @protocol.process_string(@receive_buffer)
89
+ emptyReceiveBuffer
107
90
  end
108
- return true
91
+ true
109
92
  end
110
93
 
111
- # empties the receive buffer
112
- def emptyReceiveBuffer
113
- @receiveBuffer = ''
94
+ # sends a xml Document to the buffer
95
+ #
96
+ # @param xml [REXML::Document] the Document, that will be sent
97
+ def sendXML(xml)
98
+ text = ''
99
+ xml.write(text)
100
+ sendString(text)
114
101
  end
115
102
 
116
103
  # processes an incomming message
117
104
  #
118
105
  # @return [Boolean] true, if the processing of a incomming message was successfull
119
106
  def processMessages
120
- if !@connected
121
- return false
122
- end
123
- return self.readString
107
+ return false unless @connected
108
+ readString
124
109
  end
125
110
 
126
111
  # sends a string to the socket
127
112
  #
128
113
  # @param s [String] the message, to be sent
129
114
  def sendString(s)
130
- if(@connected)
131
- @socket.print(s);
132
- logger.debug "Sending: #{s}"
133
- end
115
+ return unless @connected
116
+ logger.debug "Sending: #{s}"
117
+ @socket.print(s)
134
118
  end
135
119
 
136
- # sends a xml Document to the buffer
137
- #
138
- # @param xml [REXML::Document] the Document, that will be sent
139
- def sendXML(xml)
140
- text = ''
141
- xml.write(text)
142
- self.sendString(text);
120
+ private
121
+
122
+ # empties the receive buffer
123
+ def emptyReceiveBuffer
124
+ @receive_buffer = ''
143
125
  end
144
126
 
145
127
  end
@@ -6,31 +6,29 @@ require_relative 'network'
6
6
  class Runner
7
7
  include Logging
8
8
 
9
- attr_reader :network
10
-
11
9
  def initialize(host, port, client, reservation = nil)
12
- logger.info 'Software Challenge 2017'
10
+ logger.info 'Software Challenge 2018'
13
11
  logger.info 'Ruby Client'
14
12
  logger.info "Host: #{host}"
15
13
  logger.info "Port: #{port}"
16
14
 
17
- board = Board.new()
15
+ board = Board.new
18
16
  @network = Network.new(host, port, board, client, reservation)
19
17
  end
20
18
 
21
19
  def start
22
- self.network.connect
23
- if self.network.connected == false
20
+ @network.connect
21
+ unless @network.connected
24
22
  logger.error 'Not connected'
25
23
  return
26
24
  end
27
25
 
28
- while self.network.connected
29
- self.network.processMessages
26
+ while @network.connected
27
+ @network.processMessages
30
28
  sleep(0.01)
31
29
  end
32
30
 
33
31
  logger.info 'Program end...'
34
- self.network.disconnect
32
+ @network.disconnect
35
33
  end
36
34
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module SoftwareChallengeClient
3
- VERSION = "1.1.0"
3
+ VERSION = "1.2.0"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: software_challenge_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - 'kwollw '
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2017-08-30 00:00:00.000000000 Z
13
+ date: 2017-09-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: typesafe_enum