Refactor INetworkDriver::PopEvent to use network event as output parameter rather than raw pointer

#1992
This commit is contained in:
Wojtek Figat
2023-11-28 11:24:17 +01:00
parent fd938e8284
commit 35ebdb0ffe
11 changed files with 51 additions and 55 deletions

View File

@@ -162,7 +162,7 @@ void ENetDriver::Disconnect(const NetworkConnection& connection)
}
}
bool ENetDriver::PopEvent(NetworkEvent* eventPtr)
bool ENetDriver::PopEvent(NetworkEvent& eventPtr)
{
ASSERT(_host);
ENetEvent event;
@@ -173,30 +173,30 @@ bool ENetDriver::PopEvent(NetworkEvent* eventPtr)
{
// Copy sender data
const uint32 connectionId = enet_peer_get_id(event.peer);
eventPtr->Sender.ConnectionId = connectionId;
eventPtr.Sender.ConnectionId = connectionId;
switch (event.type)
{
case ENET_EVENT_TYPE_CONNECT:
eventPtr->EventType = NetworkEventType::Connected;
eventPtr.EventType = NetworkEventType::Connected;
if (IsServer())
_peerMap.Add(connectionId, event.peer);
break;
case ENET_EVENT_TYPE_DISCONNECT:
eventPtr->EventType = NetworkEventType::Disconnected;
eventPtr.EventType = NetworkEventType::Disconnected;
if (IsServer())
_peerMap.Remove(connectionId);
break;
case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT:
eventPtr->EventType = NetworkEventType::Timeout;
eventPtr.EventType = NetworkEventType::Timeout;
if (IsServer())
_peerMap.Remove(connectionId);
break;
case ENET_EVENT_TYPE_RECEIVE:
eventPtr->EventType = NetworkEventType::Message;
eventPtr->Message = _networkHost->CreateMessage();
eventPtr->Message.Length = event.packet->dataLength;
Platform::MemoryCopy(eventPtr->Message.Buffer, event.packet->data, event.packet->dataLength);
eventPtr.EventType = NetworkEventType::Message;
eventPtr.Message = _networkHost->CreateMessage();
eventPtr.Message.Length = event.packet->dataLength;
Platform::MemoryCopy(eventPtr.Message.Buffer, event.packet->data, event.packet->dataLength);
break;
default:
break;

View File

@@ -29,7 +29,7 @@ public:
bool Connect() override;
void Disconnect() override;
void Disconnect(const NetworkConnection& connection) override;
bool PopEvent(NetworkEvent* eventPtr) override;
bool PopEvent(NetworkEvent& eventPtr) override;
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message) override;
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, NetworkConnection target) override;
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, const Array<NetworkConnection, HeapAllocation>& targets) override;

View File

@@ -92,7 +92,7 @@ void NetworkLagDriver::Disconnect(const NetworkConnection& connection)
_driver->Disconnect(connection);
}
bool NetworkLagDriver::PopEvent(NetworkEvent* eventPtr)
bool NetworkLagDriver::PopEvent(NetworkEvent& eventPtr)
{
if (!_driver)
return false;
@@ -104,7 +104,7 @@ bool NetworkLagDriver::PopEvent(NetworkEvent* eventPtr)
if (e.Lag > 0.0)
continue;
*eventPtr = e.Event;
eventPtr = e.Event;
_events.RemoveAtKeepOrder(i);
return true;
}
@@ -117,7 +117,7 @@ bool NetworkLagDriver::PopEvent(NetworkEvent* eventPtr)
auto& e = _events.AddOne();
e.Lag = (double)Lag;
e.Event = *eventPtr;
e.Event = eventPtr;
}
return false;
}

View File

@@ -68,7 +68,7 @@ public:
bool Connect() override;
void Disconnect() override;
void Disconnect(const NetworkConnection& connection) override;
bool PopEvent(NetworkEvent* eventPtr) override;
bool PopEvent(NetworkEvent& eventPtr) override;
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message) override;
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, NetworkConnection target) override;
void SendMessage(NetworkChannelType channelType, const NetworkMessage& message, const Array<NetworkConnection, HeapAllocation>& targets) override;