Disconnect on udp

This commit is contained in:
Jocke
2016-03-10 15:59:55 +01:00
parent 67dfbfff01
commit a8a4b5d2a2
3 changed files with 11 additions and 4 deletions
+2
View File
@@ -381,6 +381,7 @@ void Client::ignoreFields(Packet& packet, const ComponentInfo& componentInfo)
void Client::parseSnapshot(Packet& packet)
{
LOG_INFO("Snapshot received");
// Read input commands
std::size_t numInputCommands = packet.ReadPrimitive<std::size_t>();
for (std::size_t i = 0; i < numInputCommands; ++i) {
@@ -471,6 +472,7 @@ void Client::disconnect()
m_PacketID = 0;
Packet packet(MessageType::Disconnect, m_SendPacketID);
m_Reliable.Send(packet);
m_Unreliable.Disconnect();
m_Reliable.Disconnect();
createMainMenu();
}
+8 -4
View File
@@ -24,7 +24,13 @@ bool UDPClient::Connect(std::string playerName, std::string address, int port)
void UDPClient::Disconnect()
{
m_Socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both);
m_Socket->close();
m_Socket = nullptr;
int lastReceivedSnapshotGroup = 0;
m_PacketSegmentMap.clear();
PacketID m_SendPacketID = 0;
}
void UDPClient::Receive(Packet& packet)
@@ -100,9 +106,7 @@ void UDPClient::readPartOfPacket()
memcpy(&packetGroupIndex, m_ReadBuffer + 2 * sizeof(int), sizeof(int));
int packetGroupSize = 0;
memcpy(&packetGroupSize, m_ReadBuffer + 3 * sizeof(int), sizeof(int));
//LOG_INFO("Packet group: %i. Group index: %i. Group size: %i", packetGroup, packetGroupIndex, packetGroupSize);
//LOG_INFO("Packet size: %i.", sizeOfPacket);
LOG_INFO("Packet group: %i. Group index: %i. Group size: %i. Packet size: %i.", packetGroup, packetGroupIndex, packetGroupSize, sizeOfPacket);
if (sizeOfPacket > m_Socket->available()) {
LOG_WARNING("UDPClient::readBuffer(): We haven't got the whole packet yet.");
// return;
@@ -213,7 +217,7 @@ bool UDPClient::GetNextPacket(Packet & packet)
lastReceivedSnapshotGroup = packet.Group();
}
// No need to get next it as we are returning.
//LOG_INFO("Packet parsed");
LOG_INFO("Packet parsed");
m_PacketSegmentMap.erase(it);
return true;
} else {
+1
View File
@@ -95,6 +95,7 @@ void UDPServer::SendToConnectedPlayers(Packet& packet, std::map<PlayerID, Player
boost::asio::buffer(splitPacket.Data(), splitPacket.Size()),
kv.second.Endpoint,
0);
LOG_INFO("bytesSent: %i", bytesSent);
} catch (const boost::system::system_error& e) {
LOG_INFO(e.what());
// TODO: Clean up invalid endpoints out of m_ConnectedPlayers later