28 return base.IsInvalid;
39 : base(ownsHandle: true)
78 CloseHandle(abortive:
true, canceledOperations:
false);
156 if (threadPoolBoundHandle ==
null)
168 bool isClosed = base.IsClosed;
187 return threadPoolBoundHandle;
202 return global::Interop.Kernel32.CancelIoEx(
handle,
null);
214 socketError = global::Interop.Winsock.closesocket(
handle);
228 socketError = global::Interop.Winsock.ioctlsocket(
handle, -2147195266, ref argp);
239 socketError = global::Interop.Winsock.closesocket(
handle);
254 Unsafe.SkipInit(out global::Interop.Winsock.Linger linger);
266 if (socketError != 0 && socketError !=
SocketError.InvalidArgument && socketError !=
SocketError.ProtocolOption)
270 socketError = global::Interop.Winsock.closesocket(
handle);
273 System.
Net.
NetEventSource.
Info(
this, $
"handle:{handle}, closesocket#3():{((socketError == SocketError.SocketError) ? ((SocketError)Marshal.GetLastWin32Error()) : socketError)}",
"DoCloseHandle");
static bool IsFatal(Exception exception)
static readonly System.Net.NetEventSource Log
static void Info(object thisOrContextObject, FormattableString formattableString=null, [CallerMemberName] string memberName=null)
static bool SkipCompletionPortOnSuccess(SafeHandle handle)
unsafe bool TryUnblockSocket(bool abortive)
SafeSocketHandle(IntPtr preexistingHandle, bool ownsHandle)
ThreadPoolBoundHandle? IOCPBoundHandle
ThreadPoolBoundHandle GetThreadPoolBoundHandle()
SocketError DoCloseHandle(bool abortive)
ThreadPoolBoundHandle GetOrAllocateThreadPoolBoundHandle(bool trySkipCompletionPortOnSuccess)
ThreadPoolBoundHandle _iocpBoundHandle
bool SkipCompletionPortOnSuccess
void TrackShutdown(SocketShutdown how)
bool CloseHandle(bool abortive, bool canceledOperations)
static void ThrowSocketDisposedException(Exception innerException=null)
override bool ReleaseHandle()
void SetHandleAndValid(IntPtr handle)
void CloseAsIs(bool abortive)
bool _skipCompletionPortOnSuccess
static int GetLastWin32Error()
void SetHandle(IntPtr handle)
void SetHandleAsInvalid()
static string net_sockets_asyncoperations_notallowed
static int CompareExchange(ref int location1, int value, int comparand)
static ThreadPoolBoundHandle BindHandle(SafeHandle handle)
static void Write(ref bool location, bool value)