Fixed NetworkLagDriver having wrong ChannelType and Length
This commit is contained in:
@@ -132,9 +132,10 @@ void NetworkLagDriver::SendMessage(const NetworkChannelType channelType, const N
|
|||||||
|
|
||||||
auto& msg = _messages.AddOne();
|
auto& msg = _messages.AddOne();
|
||||||
msg.Lag = (double)Lag;
|
msg.Lag = (double)Lag;
|
||||||
|
msg.ChannelType = channelType;
|
||||||
msg.Type = 0;
|
msg.Type = 0;
|
||||||
msg.Message = message;
|
|
||||||
msg.MessageData.Set(message.Buffer, message.Length);
|
msg.MessageData.Set(message.Buffer, message.Length);
|
||||||
|
msg.MessageLength = message.Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkLagDriver::SendMessage(NetworkChannelType channelType, const NetworkMessage& message, NetworkConnection target)
|
void NetworkLagDriver::SendMessage(NetworkChannelType channelType, const NetworkMessage& message, NetworkConnection target)
|
||||||
@@ -147,10 +148,11 @@ void NetworkLagDriver::SendMessage(NetworkChannelType channelType, const Network
|
|||||||
|
|
||||||
auto& msg = _messages.AddOne();
|
auto& msg = _messages.AddOne();
|
||||||
msg.Lag = (double)Lag;
|
msg.Lag = (double)Lag;
|
||||||
|
msg.ChannelType = channelType;
|
||||||
msg.Type = 1;
|
msg.Type = 1;
|
||||||
msg.Message = message;
|
|
||||||
msg.Target = target;
|
msg.Target = target;
|
||||||
msg.MessageData.Set(message.Buffer, message.Length);
|
msg.MessageData.Set(message.Buffer, message.Length);
|
||||||
|
msg.MessageLength = message.Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkLagDriver::SendMessage(const NetworkChannelType channelType, const NetworkMessage& message, const Array<NetworkConnection, HeapAllocation>& targets)
|
void NetworkLagDriver::SendMessage(const NetworkChannelType channelType, const NetworkMessage& message, const Array<NetworkConnection, HeapAllocation>& targets)
|
||||||
@@ -163,10 +165,11 @@ void NetworkLagDriver::SendMessage(const NetworkChannelType channelType, const N
|
|||||||
|
|
||||||
auto& msg = _messages.AddOne();
|
auto& msg = _messages.AddOne();
|
||||||
msg.Lag = (double)Lag;
|
msg.Lag = (double)Lag;
|
||||||
|
msg.ChannelType = channelType;
|
||||||
msg.Type = 2;
|
msg.Type = 2;
|
||||||
msg.Message = message;
|
|
||||||
msg.Targets = targets;
|
msg.Targets = targets;
|
||||||
msg.MessageData.Set(message.Buffer, message.Length);
|
msg.MessageData.Set(message.Buffer, message.Length);
|
||||||
|
msg.MessageLength = message.Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkDriverStats NetworkLagDriver::GetStats()
|
NetworkDriverStats NetworkLagDriver::GetStats()
|
||||||
@@ -197,19 +200,21 @@ void NetworkLagDriver::OnUpdate()
|
|||||||
if (msg.Lag > 0.0)
|
if (msg.Lag > 0.0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Fix message to point to the current buffer
|
// Use this helper message as a container to send the stored data and length to the ENet driver
|
||||||
msg.Message.Buffer = msg.MessageData.Get();
|
NetworkMessage message;
|
||||||
|
message.Buffer = msg.MessageData.Get();
|
||||||
|
message.Length = msg.MessageLength;
|
||||||
|
|
||||||
switch (msg.Type)
|
switch (msg.Type)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
_driver->SendMessage(msg.ChannelType, msg.Message);
|
_driver->SendMessage(msg.ChannelType, message);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
_driver->SendMessage(msg.ChannelType, msg.Message, msg.Target);
|
_driver->SendMessage(msg.ChannelType, message, msg.Target);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
_driver->SendMessage(msg.ChannelType, msg.Message, msg.Targets);
|
_driver->SendMessage(msg.ChannelType, message, msg.Targets);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_messages.RemoveAt(i);
|
_messages.RemoveAt(i);
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ private:
|
|||||||
double Lag;
|
double Lag;
|
||||||
int32 Type;
|
int32 Type;
|
||||||
NetworkChannelType ChannelType;
|
NetworkChannelType ChannelType;
|
||||||
NetworkMessage Message;
|
|
||||||
NetworkConnection Target;
|
NetworkConnection Target;
|
||||||
Array<NetworkConnection> Targets;
|
Array<NetworkConnection> Targets;
|
||||||
Array<byte> MessageData; // TODO: use message buffers cache (of size config.MessageSize) to reduce dynamic memory allocations
|
Array<byte> MessageData; // TODO: use message buffers cache (of size config.MessageSize) to reduce dynamic memory allocations
|
||||||
|
uint32 MessageLength;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LagEvent
|
struct LagEvent
|
||||||
|
|||||||
Reference in New Issue
Block a user