FurinaImpact/FurinaImpact.Kcp/IKcpTransportOfT.cs
2023-12-09 06:45:08 +03:00

22 lines
1.1 KiB
C#

namespace FurinaImpact.Kcp
{
/// <summary>
/// A transport instance for upper-level connections.
/// </summary>
/// <typeparam name="T">The type of the upper-level connection.</typeparam>
public interface IKcpTransport<out T> : IKcpTransport, IKcpExceptionProducer<IKcpTransport<T>>, IDisposable
{
/// <summary>
/// Get the upper-level connection instace. If Start is not called or the transport is closed, <see cref="InvalidOperationException"/> will be thrown.
/// </summary>
/// <exception cref="InvalidOperationException">Start is not called or the transport is closed.</exception>
T Connection { get; }
/// <summary>
/// Create the upper-level connection and start pumping packets from the socket to the upper-level connection.
/// </summary>
/// <exception cref="ObjectDisposedException">The current instance is disposed.</exception>
/// <exception cref="InvalidOperationException"><see cref="Start"/> has been called before.</exception>
void Start();
}
}