Network/ENetHost: Expose AllocatePacket

This commit is contained in:
SirLynix 2022-09-01 20:21:27 +02:00
parent 25f44a624a
commit 359c176b03
3 changed files with 25 additions and 25 deletions

View File

@ -44,6 +44,9 @@ namespace Nz
ENetHost(ENetHost&&) = default;
inline ~ENetHost();
ENetPacketRef AllocatePacket(ENetPacketFlags flags);
inline ENetPacketRef AllocatePacket(ENetPacketFlags flags, NetPacket&& data);
inline void AllowsIncomingConnections(bool allow = true);
void Broadcast(UInt8 channelId, ENetPacketFlags flags, NetPacket&& packet);
@ -79,9 +82,6 @@ namespace Nz
ENetHost& operator=(ENetHost&&) = default;
private:
ENetPacketRef AllocatePacket(ENetPacketFlags flags);
inline ENetPacketRef AllocatePacket(ENetPacketFlags flags, NetPacket&& data);
bool InitSocket(const IpAddress& address);
void AddToDispatchQueue(ENetPeer* peer);

View File

@ -20,6 +20,14 @@ namespace Nz
Destroy();
}
inline ENetPacketRef ENetHost::AllocatePacket(ENetPacketFlags flags, NetPacket&& data)
{
ENetPacketRef ref = AllocatePacket(flags);
ref->data = std::move(data);
return ref;
}
inline void ENetHost::AllowsIncomingConnections(bool allow)
{
NazaraAssert(m_address.IsValid() && !m_address.IsLoopback(), "Only server hosts can allow incoming connections");
@ -101,14 +109,6 @@ namespace Nz
m_compressor = std::move(compressor);
}
inline ENetPacketRef ENetHost::AllocatePacket(ENetPacketFlags flags, NetPacket&& data)
{
ENetPacketRef ref = AllocatePacket(flags);
ref->data = std::move(data);
return ref;
}
inline void ENetHost::UpdateServiceTime()
{
// Compute service time as microseconds for extra precision

View File

@ -43,6 +43,20 @@ namespace Nz
}
ENetPacketRef ENetHost::AllocatePacket(ENetPacketFlags flags)
{
std::size_t poolIndex;
ENetPacket* packet = m_packetPool.Allocate(poolIndex);
ENetPacketRef enetPacket(&m_packetPool, packet);
enetPacket->flags = flags;
enetPacket->poolIndex = poolIndex;
enetPacket.m_pool = &m_packetPool;
return enetPacket;
}
void ENetHost::Broadcast(UInt8 channelId, ENetPacketFlags flags, NetPacket&& packet)
{
ENetPacketRef enetPacket = AllocatePacket(flags, std::move(packet));
@ -310,20 +324,6 @@ namespace Nz
}
}
ENetPacketRef ENetHost::AllocatePacket(ENetPacketFlags flags)
{
std::size_t poolIndex;
ENetPacket* packet = m_packetPool.Allocate(poolIndex);
ENetPacketRef enetPacket(&m_packetPool, packet);
enetPacket->flags = flags;
enetPacket->poolIndex = poolIndex;
enetPacket.m_pool = &m_packetPool;
return enetPacket;
}
bool ENetHost::InitSocket(const IpAddress& address)
{
if (!m_socket.Create((m_isUsingDualStack) ? NetProtocol::Any : address.GetProtocol()))