public override AwaitIo CloseAsync(bool panic = false) { var socket = _socket; if (socket == null) return AwaitIo.Done; _socket = null; return socket.CloseAsync(panic); }
public override AwaitIo AcceptAsync() { if (_socket != null) throw new InvalidOperationException(); KeepAlive = true; _socket = new SaeSocket(_awaitable, Data); return _socket.AcceptAsync(_listener.Socket, _listener.PostAcceptBuffers); }
public override AwaitIo ConnectAsync() { if (_socket != null && _socket.Status == SaeSocket.State.Connected) return AwaitIo.Done; _socket = new SaeSocket(_awaitable, Data); if (Remote == null) Remote = SaeSocket.GetRemoteEp(EndPoint.DnsSafeHost, EndPoint.Port); return _socket.ConnectAsync(Remote, Timeout); }