MCPcopy Create free account
hub / github.com/battlecode/battlecode-2018 / send_message

Method send_message

battlecode-manager/server.py:425–484  ·  view source on GitHub ↗

Sends newline delimited message to socket The object desired to be sent will be converted to a json and then encoded and sent. Args: Obj: The object that wants to be serialized and sent over Returns: None

(self, obj: object)

Source from the content-addressed store, hash-verified

423 #return unpacked_data
424
425 def send_message(self, obj: object) -> None:
426 '''
427 Sends newline delimited message to socket
428 The object desired to be sent will be converted to a json and then encoded
429 and sent.
430
431 Args:
432 Obj: The object that wants to be serialized and sent over
433
434 Returns:
435 None
436 '''
437
438
439 send_socket = self.request
440 if isinstance(obj, bytes):
441 obj = obj.decode()
442
443 message = obj + "\n"
444 encoded_message = message.encode()
445 logging.debug("Client %s: Sending message %s", self.client_id,
446 encoded_message)
447
448 try:
449 self.request.sendall(encoded_message)
450 except IOError:
451 send_socket.close()
452 print("{} has not accepted message for {} seconds, assuming they're dead".format(
453 [p for p in self.game.players if p['id'] == self.client_id][0]['player'],
454 TIMEOUT
455 ))
456 if bc.Team.Red == self.game.get_player(self.client_id)['player'].team:
457 self.game.winner = 'player2'
458 elif bc.Team.Blue ==self.game.get_player(self.client_id)['player'].team:
459 self.game.winner = 'player1'
460 else:
461 if self.game.connected_players[0] == self.game.connected_players[1]:
462 print("Determining match by coin toss.")
463 self.game.winner = 'player1' if random.random() > 0.5 else 'player2'
464 else:
465 self.game.winner = 'player1' if self.game.connected_players[0] > self.game.connected_players[1] else 'player2'
466 self.game.disconnected = True
467 self.game.game_over = True
468 raise TimeoutError()
469 except KeyboardInterrupt:
470 send_socket.close()
471 if bc.Team.Red == self.game.get_player(self.client_id)['player'].team:
472 self.game.winner = 'player2'
473 elif bc.Team.Blue ==self.game.get_player(self.client_id)['player'].team:
474 self.game.winner = 'player1'
475 else:
476 if self.game.connected_players[0] == self.game.connected_players[1]:
477 print("Determining match by coin toss.")
478 self.game.winner = 'player1' if random.random() > 0.5 else 'player2'
479 else:
480 self.game.winner = 'player1' if self.game.connected_players[0] > self.game.connected_players[1] else 'player2'
481 self.game.disconnected = True
482 self.game.game_over = True

Callers 2

player_handlerMethod · 0.95
viewer_handlerMethod · 0.95

Calls 5

TimeoutErrorClass · 0.85
debugMethod · 0.80
formatMethod · 0.80
get_playerMethod · 0.80
randomMethod · 0.80

Tested by

no test coverage detected