internal static SocketError DisconnectAsync(Socket socket, SafeCloseSocket handle, bool reuseSocket, DisconnectOverlappedAsyncResult asyncResult) { asyncResult.SetUnmanagedStructures(null); // This can throw ObjectDisposedException SocketError errorCode = SocketError.Success; if (!socket.DisconnectEx(handle, asyncResult.OverlappedHandle, (int)(reuseSocket ? TransmitFileOptions.ReuseSocket : 0), 0)) { errorCode = GetLastSocketError(); } return(errorCode); }
internal static SocketError DisconnectAsync(Socket socket, SafeCloseSocket handle, bool reuseSocket, DisconnectOverlappedAsyncResult asyncResult) { asyncResult.SetUnmanagedStructures(null); try { // This can throw ObjectDisposedException bool success = socket.DisconnectEx( handle, asyncResult.OverlappedHandle, (int)(reuseSocket ? TransmitFileOptions.ReuseSocket : 0), 0); return(asyncResult.ProcessOverlappedResult(success, 0)); } catch { asyncResult.ReleaseUnmanagedStructures(); throw; } }
public static unsafe SocketError DisconnectAsync(Socket socket, SafeCloseSocket handle, bool reuseSocket, DisconnectOverlappedAsyncResult asyncResult) { asyncResult.SetUnmanagedStructures(null); SocketError errorCode = SocketError.Success; // This can throw ObjectDisposedException (handle, and retrieving the delegate). if (!socket.DisconnectEx(handle, asyncResult.OverlappedHandle, (int)(reuseSocket ? TransmitFileOptions.ReuseSocket : 0), 0)) { errorCode = GetLastSocketError(); } return errorCode; }
internal SocketError DoOperationDisconnect(Socket socket, SafeCloseSocket handle) { PrepareIOCPOperation(); SocketError socketError = SocketError.Success; if (!socket.DisconnectEx( handle, _ptrNativeOverlapped, (int)(DisconnectReuseSocket ? TransmitFileOptions.ReuseSocket : 0), 0)) { socketError = (SocketError)Marshal.GetLastWin32Error(); } return socketError; }