software_challenge_client 1.1.0 → 1.2.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 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