32 lines
1.0 KiB
C#
32 lines
1.0 KiB
C#
#nullable enable
|
|
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
namespace ShrinkNetwork
|
|
{
|
|
public sealed class ShrinkNetworkContext
|
|
{
|
|
public ShrinkNetworkService Service { get; }
|
|
public ShrinkNetworkSession Session { get; }
|
|
public ShrinkNetworkPacket Packet { get; }
|
|
|
|
public ShrinkNetworkContext(ShrinkNetworkService service, ShrinkNetworkSession session, ShrinkNetworkPacket packet)
|
|
{
|
|
Service = service;
|
|
Session = session;
|
|
Packet = packet;
|
|
}
|
|
|
|
public bool IsRequest => Packet.Kind == ShrinkNetworkPacketKind.Request;
|
|
public bool IsResponse => Packet.Kind == ShrinkNetworkPacketKind.Response;
|
|
public ShrinkRequestToken RequestToken => Packet.RequestToken;
|
|
public string? Route => Packet.Route;
|
|
|
|
public UniTask ReplyAsync<TResponse>(TResponse response)
|
|
where TResponse : class, IShrinkNetworkResponse
|
|
{
|
|
return Service.SendResponseAsync(Session, response, Packet.RequestToken, Packet.Route);
|
|
}
|
|
}
|
|
}
|