// // IPacketResponder.cs // // Copyright (c) František Boháček. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Threading; using System.Threading.Tasks; using NosSmooth.Packets; using Remora.Results; namespace NosSmooth.Core.Packets; /// /// Represents interface for classes that respond to packets. /// public interface IPacketResponder { } /// /// Represents interface for classes that respond to packets. /// Responds to . /// /// The packet type this responder responds to. public interface IPacketResponder : IPacketResponder where TPacket : IPacket { /// /// Respond to the given packet. /// /// The packet to respond to. /// The cancellation token for cancelling the operation. /// A result that may or may not have succeeded. public Task Respond(PacketEventArgs packetArgs, CancellationToken ct = default); } /// /// Represents interface for classes that respond to every type of packets. /// public interface IEveryPacketResponder : IPacketResponder { /// /// Respond to the given packet. /// /// The packet to respond to. /// The cancellation token for cancelling the operation. /// The type of the packet. /// A result that may or may not have succeeded. public Task Respond(PacketEventArgs packetArgs, CancellationToken ct = default) where TPacket : IPacket; }