Network: Fix ENetPacket

This commit is contained in:
SirLynix 2022-07-07 08:50:18 +02:00
parent 2229dfd6e5
commit 3507ec570f
2 changed files with 14 additions and 25 deletions

View File

@ -10,6 +10,7 @@
#include <Nazara/Prerequisites.hpp>
#include <Nazara/Network/NetPacket.hpp>
#include <Nazara/Utils/MemoryPool.hpp>
#include <Nazara/Utils/MovablePtr.hpp>
namespace Nz
{
@ -42,7 +43,8 @@ namespace Nz
{
ENetPacketRef() = default;
ENetPacketRef(ENetPacket* packet)
ENetPacketRef(MemoryPool<ENetPacket>* pool, ENetPacket* packet) :
m_pool(pool)
{
Reset(packet);
}
@ -51,13 +53,10 @@ namespace Nz
ENetPacketRef()
{
Reset(packet);
m_pool = packet.m_pool;
}
ENetPacketRef(ENetPacketRef&& packet) noexcept :
m_packet(packet.m_packet)
{
packet.m_packet = nullptr;
}
ENetPacketRef(ENetPacketRef&&) noexcept = default;
~ENetPacketRef()
{
@ -76,30 +75,17 @@ namespace Nz
return m_packet;
}
ENetPacketRef& operator=(ENetPacket* packet)
{
Reset(packet);
return *this;
}
ENetPacketRef& operator=(const ENetPacketRef& packet)
{
Reset(packet);
m_pool = packet.m_pool;
return *this;
}
ENetPacketRef& operator=(ENetPacketRef&& packet) noexcept
{
m_packet = packet.m_packet;
packet.m_packet = nullptr;
ENetPacketRef& operator=(ENetPacketRef&&) noexcept = default;
return *this;
}
MemoryPool<ENetPacket>* m_pool = nullptr;
ENetPacket* m_packet = nullptr;
MovablePtr<MemoryPool<ENetPacket>> m_pool;
MovablePtr<ENetPacket> m_packet;
};
}

View File

@ -210,7 +210,7 @@ namespace Nz
{
event->type = ENetEventType::None;
event->peer = nullptr;
event->packet = nullptr;
event->packet.Reset();
if (DispatchIncomingCommands(event))
return 1;
@ -313,7 +313,10 @@ namespace Nz
ENetPacketRef ENetHost::AllocatePacket(ENetPacketFlags flags)
{
std::size_t poolIndex;
ENetPacketRef enetPacket = m_packetPool.Allocate(poolIndex);
ENetPacket* packet = m_packetPool.Allocate(poolIndex);
ENetPacketRef enetPacket(&m_packetPool, packet);
enetPacket->flags = flags;
enetPacket->poolIndex = poolIndex;
enetPacket.m_pool = &m_packetPool;