Added sequnceNumber and totalNumberOfPackets to packet for packet splitting.
This commit is contained in:
@@ -16,7 +16,8 @@ public:
|
|||||||
Packet(char* data, const size_t sizeOfPacket);
|
Packet(char* data, const size_t sizeOfPacket);
|
||||||
Packet(MessageType type);
|
Packet(MessageType type);
|
||||||
~Packet();
|
~Packet();
|
||||||
void Init(MessageType type, unsigned int& packetID);
|
void Init(MessageType type, unsigned int& packetID,
|
||||||
|
int sequenceNumber, int totalAmountOfPackets);
|
||||||
|
|
||||||
// Add primitive types like int, float, char...
|
// Add primitive types like int, float, char...
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|||||||
@@ -102,8 +102,12 @@ void Client::Update()
|
|||||||
|
|
||||||
void Client::parseMessageType(Packet& packet)
|
void Client::parseMessageType(Packet& packet)
|
||||||
{
|
{
|
||||||
// Pop packetSize
|
// Pop packetSize, sequenceNumber and packetsInSequence.
|
||||||
|
// create a packet of the correct size
|
||||||
packet.ReadPrimitive<int>();
|
packet.ReadPrimitive<int>();
|
||||||
|
packet.ReadPrimitive<int>();
|
||||||
|
packet.ReadPrimitive<int>();
|
||||||
|
|
||||||
int messageType = packet.ReadPrimitive<int>();
|
int messageType = packet.ReadPrimitive<int>();
|
||||||
if (messageType == -1)
|
if (messageType == -1)
|
||||||
return;
|
return;
|
||||||
@@ -164,8 +168,11 @@ void Client::parseUDPConnect(Packet& packet)
|
|||||||
void Client::parseTCPConnect(Packet& packet)
|
void Client::parseTCPConnect(Packet& packet)
|
||||||
{
|
{
|
||||||
LOG_INFO("Received TCP connect from server");
|
LOG_INFO("Received TCP connect from server");
|
||||||
// Pop size of message int
|
// Pop packetSize, sequenceNumber and packetsInSequence.
|
||||||
packet.ReadPrimitive<int>();
|
packet.ReadPrimitive<int>();
|
||||||
|
packet.ReadPrimitive<int>();
|
||||||
|
packet.ReadPrimitive<int>();
|
||||||
|
|
||||||
int messageType = packet.ReadPrimitive<int>();
|
int messageType = packet.ReadPrimitive<int>();
|
||||||
// Read packet ID
|
// Read packet ID
|
||||||
m_PreviousPacketID = m_PacketID; // Set previous packet id
|
m_PreviousPacketID = m_PacketID; // Set previous packet id
|
||||||
@@ -177,8 +184,8 @@ void Client::parseTCPConnect(Packet& packet)
|
|||||||
Packet UnreliablePacket(MessageType::Connect, m_SendPacketID);
|
Packet UnreliablePacket(MessageType::Connect, m_SendPacketID);
|
||||||
// Add player id and other stuff
|
// Add player id and other stuff
|
||||||
packet.WritePrimitive(m_PlayerID);
|
packet.WritePrimitive(m_PlayerID);
|
||||||
// m_Unreliable.Send(packet);
|
// m_Unreliable.Send(packet);
|
||||||
// LOG_INFO("Sent UDP Connect Server");
|
// LOG_INFO("Sent UDP Connect Server");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::parsePlayerConnected(Packet & packet)
|
void Client::parsePlayerConnected(Packet & packet)
|
||||||
@@ -476,7 +483,7 @@ bool Client::OnInputCommand(const Events::InputCommand & e)
|
|||||||
if (e.Command == "ConnectToServer") { // Connect for now
|
if (e.Command == "ConnectToServer") { // Connect for now
|
||||||
if (e.Value > 0) {
|
if (e.Value > 0) {
|
||||||
m_Reliable.Connect(m_PlayerName, m_Address, m_Port);
|
m_Reliable.Connect(m_PlayerName, m_Address, m_Port);
|
||||||
// m_Unreliable.Connect(m_PlayerName, m_Address, m_Port);
|
// m_Unreliable.Connect(m_PlayerName, m_Address, m_Port);
|
||||||
}
|
}
|
||||||
//LOG_DEBUG("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID);
|
//LOG_DEBUG("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Packet::Packet(MessageType type, unsigned int& packetID)
|
Packet::Packet(MessageType type, unsigned int& packetID)
|
||||||
{
|
{
|
||||||
m_Data = new char[m_MaxPacketSize];
|
m_Data = new char[m_MaxPacketSize];
|
||||||
Init(type, packetID);
|
Init(type, packetID, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create message
|
// Create message
|
||||||
@@ -21,7 +21,7 @@ Packet::Packet(MessageType type)
|
|||||||
{
|
{
|
||||||
m_Data = new char[m_MaxPacketSize];
|
m_Data = new char[m_MaxPacketSize];
|
||||||
unsigned int dummy = 0;
|
unsigned int dummy = 0;
|
||||||
Init(type, dummy);
|
Init(type, dummy, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Packet::~Packet()
|
Packet::~Packet()
|
||||||
@@ -29,13 +29,17 @@ Packet::~Packet()
|
|||||||
delete[] m_Data;
|
delete[] m_Data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Packet::Init(MessageType type, unsigned int & packetID)
|
void Packet::Init(MessageType type, unsigned int & packetID,
|
||||||
|
int sequenceNumber, int totalAmountOfPackets)
|
||||||
{
|
{
|
||||||
m_ReturnDataOffset = 0;
|
m_ReturnDataOffset = 0;
|
||||||
m_Offset = 0;
|
m_Offset = 0;
|
||||||
// Create message header
|
// Create message header
|
||||||
// allocate memory for size of packet(only used in tcp)
|
// allocate memory for size of packet, sequenceNumber and totalPacketesInSequence
|
||||||
WritePrimitive<int>(0);
|
WritePrimitive<int>(0);
|
||||||
|
WritePrimitive(sequenceNumber);
|
||||||
|
WritePrimitive(totalAmountOfPackets);
|
||||||
|
// If you add things before here be sure to change in GetMessageType()
|
||||||
// Add message type
|
// Add message type
|
||||||
int messageType = static_cast<int>(type);
|
int messageType = static_cast<int>(type);
|
||||||
WritePrimitive<int>(messageType);
|
WritePrimitive<int>(messageType);
|
||||||
@@ -129,7 +133,7 @@ void Packet::ChangePacketID(unsigned int & packetID)
|
|||||||
MessageType Packet::GetMessageType()
|
MessageType Packet::GetMessageType()
|
||||||
{
|
{
|
||||||
MessageType messagType;
|
MessageType messagType;
|
||||||
memcpy(&messagType, m_Data + sizeof(int), sizeof(int));
|
memcpy(&messagType, m_Data + 3 * sizeof(int), sizeof(int));
|
||||||
return messagType;
|
return messagType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -107,9 +107,11 @@ void Server::Update()
|
|||||||
|
|
||||||
void Server::parseMessageType(Packet& packet)
|
void Server::parseMessageType(Packet& packet)
|
||||||
{
|
{
|
||||||
// Pop packetSize which is used by TCP Client to
|
// Pop packetSize, sequenceNumber and packetsInSequence.
|
||||||
// create a packet of the correct size
|
// create a packet of the correct size
|
||||||
packet.ReadPrimitive<int>();
|
packet.ReadPrimitive<int>();
|
||||||
|
packet.ReadPrimitive<int>();
|
||||||
|
packet.ReadPrimitive<int>();
|
||||||
|
|
||||||
int messageType = packet.ReadPrimitive<int>(); // Read what type off message was sent from server
|
int messageType = packet.ReadPrimitive<int>(); // Read what type off message was sent from server
|
||||||
// Read packet ID
|
// Read packet ID
|
||||||
@@ -322,8 +324,10 @@ void Server::checkForTimeOuts()
|
|||||||
|
|
||||||
//void Server::parseUDPConnect(Packet & packet)
|
//void Server::parseUDPConnect(Packet & packet)
|
||||||
//{
|
//{
|
||||||
// // Pop size of message int
|
// Pop packetSize, sequenceNumber and packetsInSequence.
|
||||||
// packet.ReadPrimitive<int>();
|
//packet.ReadPrimitive<int>();
|
||||||
|
//packet.ReadPrimitive<int>();
|
||||||
|
//packet.ReadPrimitive<int>();
|
||||||
// int messageType = packet.ReadPrimitive<int>();
|
// int messageType = packet.ReadPrimitive<int>();
|
||||||
// // Read packet ID
|
// // Read packet ID
|
||||||
// m_PreviousPacketID = m_PacketID; // Set previous packet id
|
// m_PreviousPacketID = m_PacketID; // Set previous packet id
|
||||||
@@ -345,8 +349,11 @@ void Server::checkForTimeOuts()
|
|||||||
|
|
||||||
void Server::parseTCPConnect(Packet & packet)
|
void Server::parseTCPConnect(Packet & packet)
|
||||||
{
|
{
|
||||||
// Pop size of message int
|
// Pop packetSize, sequenceNumber and packetsInSequence.
|
||||||
packet.ReadPrimitive<int>();
|
packet.ReadPrimitive<int>();
|
||||||
|
packet.ReadPrimitive<int>();
|
||||||
|
packet.ReadPrimitive<int>();
|
||||||
|
|
||||||
int messageType = packet.ReadPrimitive<int>();
|
int messageType = packet.ReadPrimitive<int>();
|
||||||
// Read packet ID
|
// Read packet ID
|
||||||
m_PreviousPacketID = m_PacketID; // Set previous packet id
|
m_PreviousPacketID = m_PacketID; // Set previous packet id
|
||||||
|
|||||||
Reference in New Issue
Block a user