Use sendMessageToPeershangingToken instead of creating new messages

in a loop.
This commit is contained in:
hiker
2016-02-28 16:41:54 +11:00
parent ceb831d852
commit 6c022cec6b
3 changed files with 17 additions and 22 deletions

View File

@@ -129,12 +129,13 @@ void Protocol::requestTerminate()
* followed by the token of this client and then actual message).
* \param message The actual message content.
*/
void Protocol::sendMessageToPeersChangingToken(NetworkString *message)
void Protocol::sendMessageToPeersChangingToken(NetworkString *message,
bool reliable)
{
const std::vector<STKPeer*> &peers = STKHost::get()->getPeers();
for (unsigned int i = 0; i < peers.size(); i++)
{
peers[i]->sendPacket(message);
peers[i]->sendPacket(message, reliable);
}
} // sendMessageToPeersChangingToken

View File

@@ -124,7 +124,8 @@ public:
NetworkString* getNetworkString(int capacity=16);
bool checkDataSizeAndToken(Event* event, unsigned int minimum_size);
bool isByteCorrect(Event* event, int byte_nb, int value);
void sendMessageToPeersChangingToken(NetworkString *message);
void sendMessageToPeersChangingToken(NetworkString *message,
bool reliable = true);
void broadcastToClients(NetworkString *message, bool reliable=true);
void sendToServer(NetworkString *message,
bool reliable = true);

View File

@@ -224,14 +224,10 @@ void ServerLobbyRoomProtocol::registerServer()
void ServerLobbyRoomProtocol::startGame()
{
const std::vector<STKPeer*> &peers = STKHost::get()->getPeers();
for (unsigned int i = 0; i < peers.size(); i++)
{
NetworkString *ns = getNetworkString(6);
ns->setToken(peers[i]->getClientServerToken());
ns->addUInt8(LE_START_RACE).addUInt8(4);
peers[i]->sendPacket(ns, /*reliable*/true);
delete ns;
}
NetworkString *ns = getNetworkString(6);
ns->addUInt8(LE_START_RACE);
sendMessageToPeersChangingToken(ns, /*reliable*/true);
delete ns;
Protocol *p = new StartGameProtocol(m_setup);
p->requestStart();
m_in_race = true;
@@ -349,16 +345,12 @@ void ServerLobbyRoomProtocol::checkRaceFinished()
Log::info("ServerLobbyRoomProtocol", "Kart %d finished #%d",
karts_results[i], i + 1);
}
for (unsigned int i = 0; i < peers.size(); i++)
{
NetworkString *total = getNetworkString();
total->setSynchronous(true);
total->setToken(peers[i]->getClientServerToken());
total->addUInt8(LE_RACE_FINISHED).addUInt8(4);
*total += *queue;
peers[i]->sendPacket(total, /*reliable*/true);
delete total;
}
NetworkString *total = getNetworkString();
total->setSynchronous(true);
total->addUInt8(LE_RACE_FINISHED).addUInt8(4);
*total += *queue;
sendMessageToPeersChangingToken(total, /*reliable*/ true);
delete total;
Log::info("ServerLobbyRoomProtocol", "End of game message sent");
m_in_race = false;
@@ -490,6 +482,8 @@ void ServerLobbyRoomProtocol::connectionRequested(Event* event)
(token_generator.get(RAND_MAX) & 0xff) << 8 |
(token_generator.get(RAND_MAX) & 0xff));
peer->setClientServerToken(token);
const std::vector<NetworkPlayerProfile*> &players = m_setup->getPlayers();
// send a message to the one that asked to connect
// Size is overestimated, probably one player's data will not be sent
@@ -513,7 +507,6 @@ void ServerLobbyRoomProtocol::connectionRequested(Event* event)
profile->setHostId(new_host_id);
m_setup->addPlayer(profile);
peer->setPlayerProfile(profile);
peer->setClientServerToken(token);
peer->setAuthorised(is_authorised);
peer->setHostId(new_host_id);