using System.Net.Sockets; namespace KianaBH.KcpSharp.Base; internal sealed class KcpSocketTransportForMultiplexConnection : KcpSocketTransport>, IKcpTransport> { private readonly Action? _disposeAction; private Func>, object?, bool>? _exceptionHandler; private object? _exceptionHandlerState; internal KcpSocketTransportForMultiplexConnection(UdpClient listener, int mtu) : base(listener, mtu) { } internal KcpSocketTransportForMultiplexConnection(UdpClient listener, int mtu, Action? disposeAction) : base(listener, mtu) { _disposeAction = disposeAction; } IKcpMultiplexConnection IKcpTransport>.Connection => Connection; public void SetExceptionHandler(Func>, object?, bool> handler, object? state) { _exceptionHandler = handler; _exceptionHandlerState = state; } protected override KcpMultiplexConnection Activate() { return new KcpMultiplexConnection(this, _disposeAction); } protected override bool HandleException(Exception ex) { if (_exceptionHandler is not null) return _exceptionHandler.Invoke(ex, this, _exceptionHandlerState); return false; } }