Skip to content

Commit

Permalink
feat: adding option to use UniTaskVoid for message handlers
Browse files Browse the repository at this point in the history
  • Loading branch information
James-Frowen committed Apr 30, 2023
1 parent 5a2f0e0 commit 64b9cc7
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Assets/Mirage/Runtime/INetworkPlayer.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using Mirage.SocketLayer;

namespace Mirage
Expand All @@ -17,6 +18,9 @@ public interface IMessageSender
// delegates to give names to variables in handles
public delegate void MessageDelegate<in T>(T message);
public delegate void MessageDelegateWithPlayer<in T>(INetworkPlayer player, T message);
public delegate UniTaskVoid MessageDelegateAsync<in T>(T message);
public delegate UniTaskVoid MessageDelegateWithPlayerAsync<in T>(INetworkPlayer player, T message);


/// <summary>
/// An object that can receive messages
Expand Down
10 changes: 10 additions & 0 deletions Assets/Mirage/Runtime/MessageHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,16 @@ public void RegisterHandler<T>(MessageDelegate<T> handler)
RegisterHandler<T>((_, value) => handler.Invoke(value));
}

public void RegisterHandler<T>(MessageDelegateAsync<T> handler)
{
RegisterHandler<T>((_, value) => handler.Invoke(value).Forget());
}

public void RegisterHandler<T>(MessageDelegateWithPlayerAsync<T> handler)
{
RegisterHandler<T>((player, value) => handler.Invoke(player, value).Forget());
}

/// <summary>
/// Unregister a handler for a particular message type.
/// <para>Note: Messages dont need to be unregister when server or client stops as MessageHandler will be re-created next time server or client starts</para>
Expand Down

0 comments on commit 64b9cc7

Please sign in to comment.