Refactor NetworkMessage and NetworkStream to handle errors gracefully, including in Release builds

This commit is contained in:
2026-09-04 11:41:11 +02:00
parent df229983fd
commit ba231ed56d
12 changed files with 239 additions and 170 deletions
@@ -42,7 +42,7 @@ void SendPacketToPeer(ENetPeer* peer, const NetworkChannelType channelType, cons
// Tho, we cannot use it, because we're releasing the message right after the send - and the packet might not
// be sent, yet. To avoid data corruption, we're just using the copy method. We might fix that later, but I'll take
// the smaller risk.
ENetPacket* packet = enet_packet_create(message.Buffer, message.Length, flag);
ENetPacket* packet = enet_packet_create(message.Buffer, message.Position, flag);
// And send it!
enet_peer_send(peer, 0, packet);
@@ -195,7 +195,7 @@ bool ENetDriver::PopEvent(NetworkEvent& eventPtr)
case ENET_EVENT_TYPE_RECEIVE:
eventPtr.EventType = NetworkEventType::Message;
eventPtr.Message = _networkHost->CreateMessage();
eventPtr.Message.Length = event.packet->dataLength;
eventPtr.Message.BufferSize = event.packet->dataLength;
Platform::MemoryCopy(eventPtr.Message.Buffer, event.packet->data, event.packet->dataLength);
break;
default:
@@ -134,8 +134,8 @@ void NetworkLagDriver::SendMessage(const NetworkChannelType channelType, const N
msg.Lag = (double)Lag;
msg.ChannelType = channelType;
msg.Type = 0;
msg.MessageData.Set(message.Buffer, message.Length);
msg.MessageLength = message.Length;
msg.MessageData.Set(message.Buffer, message.Position);
msg.MessageLength = message.Position;
}
void NetworkLagDriver::SendMessage(NetworkChannelType channelType, const NetworkMessage& message, NetworkConnection target)
@@ -151,8 +151,8 @@ void NetworkLagDriver::SendMessage(NetworkChannelType channelType, const Network
msg.ChannelType = channelType;
msg.Type = 1;
msg.Target = target;
msg.MessageData.Set(message.Buffer, message.Length);
msg.MessageLength = message.Length;
msg.MessageData.Set(message.Buffer, message.Position);
msg.MessageLength = message.Position;
}
void NetworkLagDriver::SendMessage(const NetworkChannelType channelType, const NetworkMessage& message, const Array<NetworkConnection, HeapAllocation>& targets)
@@ -168,8 +168,8 @@ void NetworkLagDriver::SendMessage(const NetworkChannelType channelType, const N
msg.ChannelType = channelType;
msg.Type = 2;
msg.Targets = targets;
msg.MessageData.Set(message.Buffer, message.Length);
msg.MessageLength = message.Length;
msg.MessageData.Set(message.Buffer, message.Position);
msg.MessageLength = message.Position;
}
NetworkDriverStats NetworkLagDriver::GetStats()
@@ -203,7 +203,7 @@ void NetworkLagDriver::OnUpdate()
// Use this helper message as a container to send the stored data and length to the ENet driver
NetworkMessage message;
message.Buffer = msg.MessageData.Get();
message.Length = msg.MessageLength;
message.BufferSize = msg.MessageLength;
switch (msg.Type)
{