Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetAddrInfoAsync()

static unsafe Task System.Net.NameResolutionPal.GetAddrInfoAsync ( string hostName,
bool justAddresses,
AddressFamily family,
CancellationToken cancellationToken )
inlinestatic

Definition at line 268 of file NameResolutionPal.cs.

269 {
270 global::Interop.Winsock.EnsureInitialized();
271 GetAddrInfoExContext* ptr = GetAddrInfoExContext.AllocateContext();
272 GetAddrInfoExState getAddrInfoExState;
273 try
274 {
275 getAddrInfoExState = new GetAddrInfoExState(ptr, hostName, justAddresses);
276 ptr->QueryStateHandle = getAddrInfoExState.CreateHandle();
277 }
278 catch
279 {
280 GetAddrInfoExContext.FreeContext(ptr);
281 throw;
282 }
283 global::Interop.Winsock.AddressInfoEx addressInfoEx = default(global::Interop.Winsock.AddressInfoEx);
284 addressInfoEx.ai_family = family;
285 global::Interop.Winsock.AddressInfoEx addressInfoEx2 = addressInfoEx;
286 if (!justAddresses)
287 {
288 addressInfoEx2.ai_flags = AddressInfoHints.AI_CANONNAME;
289 }
290 SocketError addrInfoExW = (SocketError)global::Interop.Winsock.GetAddrInfoExW(hostName, null, 0, IntPtr.Zero, &addressInfoEx2, &ptr->Result, IntPtr.Zero, &ptr->Overlapped, (delegate* unmanaged<int, int, NativeOverlapped*, void>)(delegate*<int, int, NativeOverlapped*, void>)(&GetAddressInfoExCallback), &ptr->CancelHandle);
291 switch (addrInfoExW)
292 {
293 case SocketError.IOPending:
294 getAddrInfoExState.RegisterForCancellation(cancellationToken);
295 break;
296 case (SocketError)10111:
297 case SocketError.TryAgain:
298 GetAddrInfoExContext.FreeContext(ptr);
299 return null;
300 default:
301 ProcessResult(addrInfoExW, ptr);
302 break;
303 }
304 return getAddrInfoExState.Task;
305 }
static unsafe void GetAddressInfoExCallback(int error, int bytes, NativeOverlapped *overlapped)
static unsafe void ProcessResult(SocketError errorCode, GetAddrInfoExContext *context)

References System.Net.NameResolutionPal.GetAddrInfoExContext.AllocateContext(), System.Net.NameResolutionPal.GetAddrInfoExContext.CancelHandle, System.cancellationToken, System.Net.NameResolutionPal.GetAddrInfoExState.CreateHandle(), System.Net.NameResolutionPal.GetAddrInfoExContext.FreeContext(), System.Net.NameResolutionPal.GetAddressInfoExCallback(), System.Net.NameResolutionPal.GetAddrInfoExContext.Overlapped, System.Net.NameResolutionPal.ProcessResult(), System.Net.NameResolutionPal.GetAddrInfoExContext.QueryStateHandle, System.Net.NameResolutionPal.GetAddrInfoExState.RegisterForCancellation(), System.Net.NameResolutionPal.GetAddrInfoExContext.Result, System.Net.NameResolutionPal.GetAddrInfoExState.Task, and System.IntPtr.Zero.

Referenced by System.Net.Dns.GetAddrInfoWithTelemetryAsync< T >(), and System.Net.Dns.GetHostEntryOrAddressesCoreAsync().