mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-14 22:04:36 +01:00
Init enter game
This commit is contained in:
42
KcpSharp/Base/KcpSocketTransportForMultiplexConnection.cs
Normal file
42
KcpSharp/Base/KcpSocketTransportForMultiplexConnection.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System.Net.Sockets;
|
||||
|
||||
namespace KianaBH.KcpSharp.Base;
|
||||
|
||||
internal sealed class KcpSocketTransportForMultiplexConnection<T> : KcpSocketTransport<KcpMultiplexConnection<T>>,
|
||||
IKcpTransport<IKcpMultiplexConnection<T>>
|
||||
{
|
||||
private readonly Action<T?>? _disposeAction;
|
||||
private Func<Exception, IKcpTransport<IKcpMultiplexConnection<T>>, object?, bool>? _exceptionHandler;
|
||||
private object? _exceptionHandlerState;
|
||||
|
||||
internal KcpSocketTransportForMultiplexConnection(UdpClient listener, int mtu)
|
||||
: base(listener, mtu)
|
||||
{
|
||||
}
|
||||
|
||||
internal KcpSocketTransportForMultiplexConnection(UdpClient listener, int mtu, Action<T?>? disposeAction)
|
||||
: base(listener, mtu)
|
||||
{
|
||||
_disposeAction = disposeAction;
|
||||
}
|
||||
|
||||
IKcpMultiplexConnection<T> IKcpTransport<IKcpMultiplexConnection<T>>.Connection => Connection;
|
||||
|
||||
public void SetExceptionHandler(Func<Exception, IKcpTransport<IKcpMultiplexConnection<T>>, object?, bool> handler,
|
||||
object? state)
|
||||
{
|
||||
_exceptionHandler = handler;
|
||||
_exceptionHandlerState = state;
|
||||
}
|
||||
|
||||
protected override KcpMultiplexConnection<T> Activate()
|
||||
{
|
||||
return new KcpMultiplexConnection<T>(this, _disposeAction);
|
||||
}
|
||||
|
||||
protected override bool HandleException(Exception ex)
|
||||
{
|
||||
if (_exceptionHandler is not null) return _exceptionHandler.Invoke(ex, this, _exceptionHandlerState);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user