Returns the json loaded object of the next string that is sent over the socket Returns: An object, for our purposes this will be a dictionary, of the json loaded string
(self)
| 367 | raise IOError("reached socket EOF before finding newline") |
| 368 | |
| 369 | def get_next_message(self) -> object: |
| 370 | ''' |
| 371 | Returns the json loaded object of the next string that is sent over the |
| 372 | socket |
| 373 | |
| 374 | Returns: |
| 375 | An object, for our purposes this will be a dictionary, of the json |
| 376 | loaded string |
| 377 | ''' |
| 378 | |
| 379 | recv_socket = self.request |
| 380 | game = self.game |
| 381 | |
| 382 | logging.debug("Client %s: Waiting for next message", self.client_id) |
| 383 | try: |
| 384 | data = self.read_line() |
| 385 | except (StopIteration, IOError): |
| 386 | print("{} has not sent message for {} seconds, assuming they're dead".format( |
| 387 | self.game.get_player(self.client_id)['player'], |
| 388 | TIMEOUT |
| 389 | )) |
| 390 | recv_socket.close() |
| 391 | if bc.Team.Red == self.game.get_player(self.client_id)['player'].team: |
| 392 | self.game.winner = 'player2' |
| 393 | elif bc.Team.Blue == self.game.get_player(self.client_id)['player'].team: |
| 394 | self.game.winner = 'player1' |
| 395 | else: |
| 396 | if self.game.connected_players[0] == self.game.connected_players[1]: |
| 397 | print("Determining match by coin toss.") |
| 398 | self.game.winner = 'player1' if random.random() > 0.5 else 'player2' |
| 399 | else: |
| 400 | self.game.winner = 'player1' if self.game.connected_players[0] > self.game.connected_players[1] else 'player2' |
| 401 | self.game.disconnected = True |
| 402 | self.game.game_over = True |
| 403 | raise TimeoutError() |
| 404 | except KeyboardInterrupt: |
| 405 | recv_socket.close() |
| 406 | if bc.Team.Red == self.game.get_player(self.client_id)['player'].team: |
| 407 | self.game.winner = 'player2' |
| 408 | elif bc.Team.Blue == self.game.get_player(self.client_id)['player'].team: |
| 409 | self.game.winner = 'player1' |
| 410 | else: |
| 411 | if self.game.connected_players[0] == self.game.connected_players[1]: |
| 412 | print("Determining match by coin toss.") |
| 413 | self.game.winner = 'player1' if random.random() > 0.5 else 'player2' |
| 414 | else: |
| 415 | self.game.winner = 'player1' if self.game.connected_players[0] > self.game.connected_players[1] else 'player2' |
| 416 | self.game.disconnected = True |
| 417 | self.game.game_over = True |
| 418 | raise KeyboardInterrupt() |
| 419 | |
| 420 | data = data.decode("utf-8").strip() |
| 421 | return data |
| 422 | #unpacked_data = json.loads(data) |
| 423 | #return unpacked_data |
| 424 | |
| 425 | def send_message(self, obj: object) -> None: |
| 426 | ''' |
no test coverage detected