Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DynamicWinsockMethods.cs
Go to the documentation of this file.
5
6namespace System.Net.Sockets;
7
8internal sealed class DynamicWinsockMethods
9{
11
12 private readonly AddressFamily _addressFamily;
13
14 private readonly SocketType _socketType;
15
16 private readonly ProtocolType _protocolType;
17
18 private AcceptExDelegate _acceptEx;
19
20 private GetAcceptExSockaddrsDelegate _getAcceptExSockaddrs;
21
22 private ConnectExDelegate _connectEx;
23
24 private TransmitPacketsDelegate _transmitPackets;
25
26 private DisconnectExDelegate _disconnectEx;
27
28 private WSARecvMsgDelegate _recvMsg;
29
48
55
56 private unsafe static T CreateDelegate<T>([NotNull] ref T cache, SafeSocketHandle socketHandle, string guidString) where T : Delegate
57 {
58 Guid guid = new Guid(guidString);
60 if (global::Interop.Winsock.WSAIoctl(socketHandle, -939524090, ref guid, sizeof(Guid), out funcPtr, sizeof(IntPtr), out var _, IntPtr.Zero, IntPtr.Zero) != 0)
61 {
62 throw new SocketException();
63 }
65 return cache;
66 }
67
69 {
70 return _acceptEx ?? CreateDelegate(ref _acceptEx, socketHandle, "b5367df1cbac11cf95ca00805f48a192");
71 }
72
73 internal GetAcceptExSockaddrsDelegate GetGetAcceptExSockaddrsDelegate(SafeSocketHandle socketHandle)
74 {
75 return _getAcceptExSockaddrs ?? CreateDelegate(ref _getAcceptExSockaddrs, socketHandle, "b5367df2cbac11cf95ca00805f48a192");
76 }
77
79 {
80 return _connectEx ?? CreateDelegate(ref _connectEx, socketHandle, "25a207b9ddf346608ee976e58c74063e");
81 }
82
84 {
85 return _disconnectEx ?? CreateDelegate(ref _disconnectEx, socketHandle, "7fda2e118630436fa031f536a6eec157");
86 }
87
89 {
90 return _recvMsg ?? CreateDelegate(ref _recvMsg, socketHandle, "f689d7c86f1f436b8a53e54fe351c322");
91 }
92
94 {
95 return _transmitPackets ?? CreateDelegate(ref _transmitPackets, socketHandle, "d9689da01f9011d3997100c04f68c876");
96 }
97}
DisconnectExDelegate GetDisconnectExDelegate(SafeSocketHandle socketHandle)
TransmitPacketsDelegate GetTransmitPacketsDelegate(SafeSocketHandle socketHandle)
static readonly List< DynamicWinsockMethods > s_methodTable
GetAcceptExSockaddrsDelegate _getAcceptExSockaddrs
AcceptExDelegate GetAcceptExDelegate(SafeSocketHandle socketHandle)
GetAcceptExSockaddrsDelegate GetGetAcceptExSockaddrsDelegate(SafeSocketHandle socketHandle)
static unsafe T CreateDelegate< T >([NotNull] ref T cache, SafeSocketHandle socketHandle, string guidString)
DynamicWinsockMethods(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
ConnectExDelegate GetConnectExDelegate(SafeSocketHandle socketHandle)
WSARecvMsgDelegate GetWSARecvMsgDelegate(SafeSocketHandle socketHandle)
static DynamicWinsockMethods GetMethods(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
static Delegate GetDelegateForFunctionPointer(IntPtr ptr, Type t)
Definition Marshal.cs:1414
static int CompareExchange(ref int location1, int value, int comparand)
static readonly IntPtr Zero
Definition IntPtr.cs:18