1
0
mirror of https://github.com/chylex/Minecraft-Phantom-Panel.git synced 2025-09-30 23:02:48 +02:00
Files

31 lines
940 B
C#

using Phantom.Utils.Actor;
namespace Phantom.Utils.Rpc.Message;
public interface IMessageReceiver<TMessageBase> {
void OnSessionRestarted();
Task OnSessionTerminated();
void OnPing();
void OnMessage(TMessageBase message);
Task<TReply> OnMessage<TMessage, TReply>(TMessage message, CancellationToken cancellationToken = default) where TMessage : TMessageBase, ICanReply<TReply>;
class Actor(ActorRef<TMessageBase> actor) : IMessageReceiver<TMessageBase> {
public virtual void OnSessionRestarted() {}
public virtual Task OnSessionTerminated() {
return actor.Stop();
}
public virtual void OnPing() {}
public void OnMessage(TMessageBase message) {
actor.Tell(message);
}
public Task<TReply> OnMessage<TMessage, TReply>(TMessage message, CancellationToken cancellationToken = default) where TMessage : TMessageBase, ICanReply<TReply> {
return actor.Request(message, cancellationToken);
}
}
}