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

View File

@ -20,6 +20,14 @@ namespace Nz
Destroy(); 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) inline void ENetHost::AllowsIncomingConnections(bool allow)
{ {
NazaraAssert(m_address.IsValid() && !m_address.IsLoopback(), "Only server hosts can allow incoming connections"); 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); 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() inline void ENetHost::UpdateServiceTime()
{ {
// Compute service time as microseconds for extra precision // 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) void ENetHost::Broadcast(UInt8 channelId, ENetPacketFlags flags, NetPacket&& packet)
{ {
ENetPacketRef enetPacket = AllocatePacket(flags, std::move(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) bool ENetHost::InitSocket(const IpAddress& address)
{ {
if (!m_socket.Create((m_isUsingDualStack) ? NetProtocol::Any : address.GetProtocol())) if (!m_socket.Create((m_isUsingDualStack) ? NetProtocol::Any : address.GetProtocol()))