Replaced Protocol::sendMessage (which was either a send or a broadcast

depending on if the caller is a client or server) with explicitly named
functions.
This commit is contained in:
hiker 2016-02-28 16:18:08 +11:00
parent c9d3577a13
commit 4b9d9cfc92
9 changed files with 47 additions and 19 deletions

View File

@ -139,7 +139,17 @@ void Protocol::sendMessageToPeersChangingToken(NetworkString *message)
} // sendMessageToPeersChangingToken
// ----------------------------------------------------------------------------
void Protocol::sendMessage(NetworkString *message, bool reliable)
/** Broadcasts a message from the server to all clients.
*/
void Protocol::broadcastToClients(NetworkString *message, bool reliable)
{
STKHost::get()->sendMessage(message, reliable);
STKHost::get()->broadcastPacket(message, reliable);
} // broadcastToClients
// ----------------------------------------------------------------------------
/** Sends a message from a client to the server.
*/
void Protocol::sendToServer(NetworkString *message, bool reliable)
{
STKHost::get()->sendToServer(message, reliable);
} // sendMessage

View File

@ -125,8 +125,9 @@ public:
bool checkDataSizeAndToken(Event* event, unsigned int minimum_size);
bool isByteCorrect(Event* event, int byte_nb, int value);
void sendMessageToPeersChangingToken(NetworkString *message);
void sendMessage(NetworkString *message,
bool reliable = true);
void broadcastToClients(NetworkString *message, bool reliable=true);
void sendToServer(NetworkString *message,
bool reliable = true);
void requestStart();
void requestPause();
void requestUnpause();

View File

@ -68,7 +68,7 @@ void ClientLobbyRoomProtocol::requestKartSelection(const std::string &kart_name)
NetworkString *r = getNetworkString(7+kart_name.size());
r->setToken(m_server->getClientServerToken());
r->addUInt8(LE_KART_SELECTION).addUInt8(4).encodeString(kart_name);
sendMessage(r, true);
sendToServer(r, true);
delete r;
} // requestKartSelection
@ -81,7 +81,7 @@ void ClientLobbyRoomProtocol::voteMajor(uint32_t major)
// size_token (4), token, size major(1),major
request->addUInt8(LE_VOTE_MAJOR).addUInt8(4)
.addUInt8(4).addUInt32(major);
sendMessage(request, true);
sendToServer(request, true);
delete request;
} // voteMajor
@ -94,7 +94,7 @@ void ClientLobbyRoomProtocol::voteRaceCount(uint8_t count)
// size_token (4), token, size race count(1), count
request->addUInt8(LE_VOTE_RACE_COUNT).addUInt8(4)
.addUInt8(1).addUInt8(count);
sendMessage(request, true);
sendToServer(request, true);
delete request;
} // voteRaceCount
@ -107,7 +107,7 @@ void ClientLobbyRoomProtocol::voteMinor(uint32_t minor)
// size_token (4), token, size minor(1),minor
request->addUInt8(LE_VOTE_MINOR).addUInt8(4)
.addUInt8(4).addUInt32(minor);
sendMessage(request, true);
sendToServer(request, true);
delete request;
} // voteMinor
@ -121,7 +121,7 @@ void ClientLobbyRoomProtocol::voteTrack(const std::string &track,
// size_token (4), token, size track, track, size #track, #track
request->addUInt8(LE_VOTE_TRACK).addUInt8(4)
.encodeString(track).addUInt8(1).addUInt8(track_nb);
sendMessage(request, true);
sendToServer(request, true);
delete request;
} // voteTrack
@ -134,7 +134,7 @@ void ClientLobbyRoomProtocol::voteReversed(bool reversed, uint8_t track_nb)
// size_token (4), token, size reversed(1),reversed, size #track, #track
request->addUInt8(LE_VOTE_REVERSE).addUInt8(4)
.addUInt8(1).addUInt8(reversed).addUInt8(1).addUInt8(track_nb);
sendMessage(request, true);
sendToServer(request, true);
delete request;
} // voteReversed
@ -147,7 +147,7 @@ void ClientLobbyRoomProtocol::voteLaps(uint8_t laps, uint8_t track_nb)
// size_token (4), token, size laps(1),laps, size #track, #track
request->addUInt8(LE_VOTE_LAPS)
.addUInt8(1).addUInt8(laps).addUInt8(1).addUInt8(track_nb);
sendMessage(request, true);
sendToServer(request, true);
} // voteLaps
//-----------------------------------------------------------------------------
@ -265,7 +265,7 @@ void ClientLobbyRoomProtocol::update()
// 4 (size of id), global id
ns->addUInt8(LE_CONNECTION_REQUESTED).encodeString(name)
.encodeString(NetworkConfig::get()->getPassword());
sendMessage(ns);
sendToServer(ns);
delete ns;
m_state = REQUESTING_CONNECTION;
}

View File

@ -164,5 +164,5 @@ void ControllerEventsProtocol::controllerAction(Controller* controller,
ns->addUInt8((uint8_t)(action)).addUInt32(value);
Log::info("ControllerEventsProtocol", "Action %d value %d", action, value);
sendMessage(ns, false); // send message to server
sendToServer(ns, false); // send message to server
} // controllerAction

View File

@ -93,7 +93,7 @@ void KartUpdateProtocol::update()
"Sending %d's positions %f %f %f",
kart->getWorldKartId(), xyz[0], xyz[1], xyz[2]);
}
sendMessage(ns, /*reliable*/false);
broadcastToClients(ns, /*reliable*/false);
delete ns;
}
else
@ -112,7 +112,7 @@ void KartUpdateProtocol::update()
"Sending %d's positions %f %f %f",
kart->getWorldKartId(), xyz[0], xyz[1], xyz[2]);
}
sendMessage(ns, /*reliable*/false);
sendToServer(ns, /*reliable*/false);
delete ns;
} // if server
} // if (current_time > time + 0.1)

View File

@ -405,7 +405,7 @@ void ServerLobbyRoomProtocol::kartDisconnected(Event* event)
NetworkString *msg = getNetworkString(3);
msg->addUInt8(LE_PLAYER_DISCONNECTED).addUInt8(1)
.addUInt8(peer->getPlayerProfile()->getGlobalPlayerId());
sendMessage(msg);
broadcastToClients(msg);
delete msg;
Log::info("ServerLobbyRoomProtocol", "Player disconnected : id %d",
peer->getPlayerProfile()->getGlobalPlayerId());
@ -579,6 +579,7 @@ void ServerLobbyRoomProtocol::kartSelectionRequested(Event* event)
delete answer;
return;
}
// send a kart update to everyone
NetworkString *answer = getNetworkString(3+1+kart_name.size());
// This message must be handled synchronously on the client.
@ -587,7 +588,7 @@ void ServerLobbyRoomProtocol::kartSelectionRequested(Event* event)
uint8_t player_id = peer->getPlayerProfile()->getGlobalPlayerId();
answer->addUInt8(LE_KART_SELECTION_UPDATE).addUInt8(1).addUInt8(player_id)
.encodeString(kart_name);
sendMessage(answer);
broadcastToClients(answer);
delete answer;
m_setup->setPlayerKart(player_id, kart_name);
} // kartSelectionRequested

View File

@ -223,7 +223,7 @@ void StartGameProtocol::ready()
ns->setToken(STKHost::get()->getPeers()[0]->getClientServerToken());
ns->addUInt8(1);
Log::info("StartGameProtocol", "Player ready, notifying server.");
sendMessage(ns, /*reliable*/true);
sendToServer(ns, /*reliable*/true);
delete ns;
m_state = READY;
m_ready = true;

View File

@ -656,6 +656,15 @@ STKPeer* STKHost::getPeer(ENetPeer *enet_peer)
if(m_peers[i]->isSamePeer(enet_peer))
return m_peers[i];
}
// Make sure that a client only adds one other peer (=the server).
if(NetworkConfig::get()->isClient() && m_peers.size()>0)
{
Log::error("STKHost",
"Client is adding more than one server, ignored for now.");
}
//FIXME Should we check #clients here? It might be easier to only
// handle this at connect time, not in all getPeer calls.
STKPeer *peer = new STKPeer(enet_peer);

View File

@ -23,8 +23,10 @@
#define STK_HOST_HPP
#include "network/network.hpp"
#include "network/network_config.hpp"
#include "network/network_string.hpp"
#include "network/servers_manager.hpp"
#include "network/stk_peer.hpp"
#include "network/transport_address.hpp"
#include "utils/synchronised.hpp"
@ -40,7 +42,6 @@
class GameSetup;
class NetworkConsole;
class STKPeer;
class STKHost
{
@ -234,6 +235,12 @@ public:
/** Returns the host id of this host. */
uint8_t getMyHostId() const { return m_host_id; }
// --------------------------------------------------------------------
/** Sends a message from a client to the server. */
void sendToServer(NetworkString *data, bool reliable = true)
{
assert(NetworkConfig::get()->isClient());
m_peers[0]->sendPacket(data, reliable);
} // sendToServer
}; // class STKHost
#endif // STK_HOST_HPP