Skip to content

Commit

Permalink
refactor: remove channel from handler (#824)
Browse files Browse the repository at this point in the history
BREAKING CHANGE: NetworkDiagnostics no longer tracks channel
  • Loading branch information
Lymdun committed May 27, 2021
1 parent 2d10305 commit f11ef9a
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 28 deletions.
15 changes: 5 additions & 10 deletions Assets/Mirage/Runtime/NetworkDiagnostics.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@ public static class NetworkDiagnostics
/// </summary>
public readonly object message;
/// <summary>
/// channel through which the message was sent
/// </summary>
public readonly int channel;
/// <summary>
/// how big was the message (does not include transport headers)
/// </summary>
public readonly int bytes;
Expand All @@ -32,10 +28,9 @@ public static class NetworkDiagnostics
/// </summary>
public readonly int count;

internal MessageInfo(object message, int channel, int bytes, int count)
internal MessageInfo(object message, int bytes, int count)
{
this.message = message;
this.channel = channel;
this.bytes = bytes;
this.count = count;
}
Expand All @@ -48,11 +43,11 @@ internal MessageInfo(object message, int channel, int bytes, int count)
/// </summary>
public static event Action<MessageInfo> OutMessageEvent;

internal static void OnSend<T>(T message, int channel, int bytes, int count)
internal static void OnSend<T>(T message, int bytes, int count)
{
if (count > 0 && OutMessageEvent != null)
{
var outMessage = new MessageInfo(message, channel, bytes, count);
var outMessage = new MessageInfo(message, bytes, count);
OutMessageEvent.Invoke(outMessage);
}
}
Expand All @@ -66,11 +61,11 @@ internal static void OnSend<T>(T message, int channel, int bytes, int count)
/// </summary>
public static event Action<MessageInfo> InMessageEvent;

internal static void OnReceive<T>(T message, int channel, int bytes)
internal static void OnReceive<T>(T message, int bytes)
{
if (InMessageEvent != null)
{
var inMessage = new MessageInfo(message, channel, bytes, 1);
var inMessage = new MessageInfo(message, bytes, 1);
InMessageEvent.Invoke(inMessage);
}
}
Expand Down
17 changes: 7 additions & 10 deletions Assets/Mirage/Runtime/NetworkPlayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public sealed class NetworkPlayer : INetworkPlayer
static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkPlayer));

// Handles network messages on client and server
internal delegate void NetworkMessageDelegate(INetworkPlayer player, NetworkReader reader, int channelId);
internal delegate void NetworkMessageDelegate(INetworkPlayer player, NetworkReader reader);

// internal so it can be tested
private readonly HashSet<NetworkIdentity> visList = new HashSet<NetworkIdentity>();
Expand Down Expand Up @@ -120,7 +120,7 @@ public NetworkPlayer(SocketLayer.IConnection connection)

private static NetworkMessageDelegate MessageHandler<T>(Action<INetworkPlayer, T> handler)
{
void AdapterFunction(INetworkPlayer player, NetworkReader reader, int channelId)
void AdapterFunction(INetworkPlayer player, NetworkReader reader)
{
// protect against DOS attacks if attackers try to send invalid
// data packets to crash the server/client. there are a thousand
Expand All @@ -145,7 +145,7 @@ void AdapterFunction(INetworkPlayer player, NetworkReader reader, int channelId)
finally
{
int endPos = reader.Position;
NetworkDiagnostics.OnReceive(message, channelId, endPos - startPos);
NetworkDiagnostics.OnReceive(message, endPos - startPos);
}

handler(player, message);
Expand Down Expand Up @@ -213,7 +213,7 @@ public void Send<T>(T message, int channelId = Channel.Reliable)
{
// pack message and send allocation free
MessagePacker.Pack(message, writer);
NetworkDiagnostics.OnSend(message, channelId, writer.Length, 1);
NetworkDiagnostics.OnSend(message, writer.Length, 1);
Send(writer.ToArraySegment(), channelId);
}
}
Expand Down Expand Up @@ -261,11 +261,11 @@ public void RemoveObservers()
visList.Clear();
}

internal void InvokeHandler(int msgType, NetworkReader reader, int channelId)
internal void InvokeHandler(int msgType, NetworkReader reader)
{
if (messageHandlers.TryGetValue(msgType, out NetworkMessageDelegate msgDelegate))
{
msgDelegate(this, reader, channelId);
msgDelegate(this, reader);
}
else
{
Expand All @@ -289,10 +289,7 @@ void IMessageHandler.HandleMessage(ArraySegment<byte> packet)
try
{
int msgType = MessagePacker.UnpackId(networkReader);

// todo remove channel from handler
const int channelId = 0;
InvokeHandler(msgType, networkReader, channelId);
InvokeHandler(msgType, networkReader);
}
catch (InvalidDataException ex)
{
Expand Down
2 changes: 1 addition & 1 deletion Assets/Mirage/Runtime/NetworkServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ public static void SendToMany<T>(IEnumerable<INetworkPlayer> players, T msg, int
count++;
}

NetworkDiagnostics.OnSend(msg, channelId, segment.Count, count);
NetworkDiagnostics.OnSend(msg, segment.Count, count);
}
}

Expand Down
10 changes: 5 additions & 5 deletions Assets/Tests/Runtime/NetworkDiagnosticsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ public void TestOnSendEvent()
NetworkDiagnostics.OutMessageEvent += outMessageCallback;

var message = new TestMessage();
NetworkDiagnostics.OnSend(message, Channel.Reliable, 10, 5);
var expected = new NetworkDiagnostics.MessageInfo(message, Channel.Reliable, 10, 5);
NetworkDiagnostics.OnSend(message, 10, 5);
var expected = new NetworkDiagnostics.MessageInfo(message, 10, 5);
outMessageCallback.Received(1).Invoke(Arg.Is(expected));

NetworkDiagnostics.OutMessageEvent -= outMessageCallback;
Expand All @@ -28,7 +28,7 @@ public void TestOnSendZeroCountEvent()
NetworkDiagnostics.OutMessageEvent += outMessageCallback;

var message = new TestMessage();
NetworkDiagnostics.OnSend(message, Channel.Reliable, 10, 0);
NetworkDiagnostics.OnSend(message, 10, 0);
outMessageCallback.DidNotReceive();

NetworkDiagnostics.OutMessageEvent -= outMessageCallback;
Expand All @@ -41,8 +41,8 @@ public void TestOnReceiveEvent()
NetworkDiagnostics.InMessageEvent += outMessageCallback;

var message = new TestMessage();
NetworkDiagnostics.OnReceive(message, Channel.Reliable, 10);
var expected = new NetworkDiagnostics.MessageInfo(message, Channel.Reliable, 10, 1);
NetworkDiagnostics.OnReceive(message, 10);
var expected = new NetworkDiagnostics.MessageInfo(message, 10, 1);
outMessageCallback.Received(1).Invoke(Arg.Is(expected));

NetworkDiagnostics.InMessageEvent -= outMessageCallback;
Expand Down
4 changes: 2 additions & 2 deletions Assets/Tests/Runtime/Serializers/NetworkPlayerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public void ThrowsWhenNoHandlerIsFound()
var reader = new NetworkReader(new byte[] { 1, 2, 3, 4 });
InvalidDataException exception = Assert.Throws<InvalidDataException>(() =>
{
player.InvokeHandler(messageId, reader, 0);
player.InvokeHandler(messageId, reader);
});

Assert.That(exception.Message, Does.StartWith("Unexpected message Mirage.SceneMessage received"));
Expand All @@ -107,7 +107,7 @@ public void ThrowsWhenUnknownMessage()
InvalidDataException exception = Assert.Throws<InvalidDataException>(() =>
{
// some random id with no message
player.InvokeHandler(1234, reader, 0);
player.InvokeHandler(1234, reader);
});

Assert.That(exception.Message, Does.StartWith("Unexpected message ID 1234 received"));
Expand Down

0 comments on commit f11ef9a

Please sign in to comment.