Skip to content

Commit

Permalink
refactor: removing sendasync from networkconnection (#672)
Browse files Browse the repository at this point in the history
BREAKING CHANGE: Removed SendAsync from NetworkConnection.  Use Send instead
  • Loading branch information
James-Frowen authored and paulpach committed Mar 8, 2021
1 parent afef2d4 commit e79b00e
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 34 deletions.
4 changes: 1 addition & 3 deletions Assets/Mirage/Runtime/INetworkConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ public interface IMessageSender
{
void Send<T>(T msg, int channelId = Channel.Reliable);

UniTask SendAsync<T>(T msg, int channelId = Channel.Reliable);

UniTask SendAsync(ArraySegment<byte> segment, int channelId = Channel.Reliable);
void Send(ArraySegment<byte> segment, int channelId = Channel.Reliable);
}

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions Assets/Mirage/Runtime/NetworkBehaviour.cs
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ protected internal void SendServerRpcInternal(Type invokeClass, string cmdName,
payload = writer.ToArraySegment()
};

Client.SendAsync(message, channelId).Forget();
Client.Send(message, channelId);
}

private void ValidateServerRpc(Type invokeClass, string cmdName, bool requireAuthority)
Expand Down Expand Up @@ -284,7 +284,7 @@ protected internal UniTask<T> SendServerRpcWithReturn<T>(Type invokeClass, strin
payload = writer.ToArraySegment()
};

Client.SendAsync(message, channelId).Forget();
Client.Send(message, channelId);

return task;
}
Expand Down
9 changes: 2 additions & 7 deletions Assets/Mirage/Runtime/NetworkClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -253,19 +253,14 @@ public void Disconnect()
/// <param name="message"></param>
/// <param name="channelId"></param>
/// <returns>True if message was sent.</returns>
public UniTask SendAsync<T>(T message, int channelId = Channel.Reliable)
{
return Connection.SendAsync(message, channelId);
}

public void Send<T>(T message, int channelId = Channel.Reliable)
{
Connection.Send(message, channelId);
}

public UniTask SendAsync(ArraySegment<byte> segment, int channelId = Channel.Reliable)
public void Send(ArraySegment<byte> segment, int channelId = Channel.Reliable)
{
return Connection.SendAsync(segment, channelId);
Connection.Send(segment, channelId);
}

internal void Update()
Expand Down
26 changes: 7 additions & 19 deletions Assets/Mirage/Runtime/NetworkConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -179,18 +179,6 @@ public void ClearHandlers()
messageHandlers.Clear();
}

/// <summary>
/// This sends a network message to the connection.
/// </summary>
/// <typeparam name="T">The message type</typeparam>
/// <param name="msg">The message to send</param>
/// <param name="channelId">The transport layer channel to send on.</param>
/// <returns></returns>
public virtual void Send<T>(T msg, int channelId = Channel.Reliable)
{
SendAsync(msg, channelId).Forget();
}

public static void Send<T>(IEnumerable<INetworkConnection> connections, T msg, int channelId = Channel.Reliable)
{
using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter())
Expand All @@ -203,7 +191,7 @@ public static void Send<T>(IEnumerable<INetworkConnection> connections, T msg, i
foreach (INetworkConnection conn in connections)
{
// send to all connections, but don't wait for them
conn.SendAsync(segment, channelId).Forget();
conn.Send(segment, channelId);
count++;
}

Expand All @@ -212,28 +200,28 @@ public static void Send<T>(IEnumerable<INetworkConnection> connections, T msg, i
}

/// <summary>
/// This sends a network message to the connection. You can await it to check for errors
/// This sends a network message to the connection.
/// </summary>
/// <typeparam name="T">The message type</typeparam>
/// <param name="msg">The message to send.</param>
/// <param name="channelId">The transport layer channel to send on.</param>
/// <returns></returns>
public virtual UniTask SendAsync<T>(T msg, int channelId = Channel.Reliable)
public virtual void Send<T>(T msg, int channelId = Channel.Reliable)
{
using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter())
{
// pack message and send allocation free
MessagePacker.Pack(msg, writer);
NetworkDiagnostics.OnSend(msg, channelId, writer.Length, 1);
return SendAsync(writer.ToArraySegment(), channelId);
Send(writer.ToArraySegment(), channelId);
}
}

// internal because no one except Mirage should send bytes directly to
// the client. they would be detected as a message. send messages instead.
public UniTask SendAsync(ArraySegment<byte> segment, int channelId = Channel.Reliable)
public void Send(ArraySegment<byte> segment, int channelId = Channel.Reliable)
{
return connection.SendAsync(segment, channelId);
connection.SendAsync(segment, channelId);
}


Expand Down Expand Up @@ -429,7 +417,7 @@ public void SendNotify<T>(T msg, object token, int channelId = Channel.Unreliabl
MessagePacker.Pack(notifyPacket, writer);
MessagePacker.Pack(msg, writer);
NetworkDiagnostics.OnSend(msg, channelId, writer.Length, 1);
SendAsync(writer.ToArraySegment(), channelId).Forget();
Send(writer.ToArraySegment(), channelId);
lastNotifySentTime = Time.unscaledTime;
}

Expand Down
3 changes: 0 additions & 3 deletions Assets/Mirage/Weaver/Processors/ReaderWriterProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -221,15 +221,12 @@ private static bool IsMessageMethod(MethodReference method)
method.Is(typeof(MessagePacker), nameof(MessagePacker.GetId)) ||
method.Is(typeof(MessagePacker), nameof(MessagePacker.Unpack)) ||
method.Is<IMessageSender>(nameof(IMessageSender.Send)) ||
method.Is<IMessageSender>(nameof(IMessageSender.SendAsync)) ||
method.Is<IMessageSender>(nameof(IMessageReceiver.RegisterHandler)) ||
method.Is<IMessageSender>(nameof(IMessageReceiver.UnregisterHandler)) ||
method.Is<NetworkConnection>(nameof(NetworkConnection.Send)) ||
method.Is<NetworkConnection>(nameof(NetworkConnection.SendAsync)) ||
method.Is<NetworkConnection>(nameof(NetworkConnection.RegisterHandler)) ||
method.Is<NetworkConnection>(nameof(NetworkConnection.UnregisterHandler)) ||
method.Is<NetworkClient>(nameof(NetworkClient.Send)) ||
method.Is<NetworkClient>(nameof(NetworkClient.SendAsync)) ||
method.Is<NetworkServer>(nameof(NetworkServer.SendToAll)) ||
method.Is<INetworkServer>(nameof(INetworkServer.SendToAll));
}
Expand Down

0 comments on commit e79b00e

Please sign in to comment.