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

◆ WaitForConnectionCoreAsync()

unsafe ValueTask System.IO.Pipes.NamedPipeServerStream.WaitForConnectionCoreAsync ( CancellationToken cancellationToken)
inlineprivate

Definition at line 384 of file NamedPipeServerStream.cs.

385 {
387 ConnectionValueTaskSource connectionValueTaskSource = Interlocked.Exchange(ref _reusableConnectionValueTaskSource, null) ?? new ConnectionValueTaskSource(this);
388 try
389 {
390 connectionValueTaskSource.PrepareForOperation();
391 if (!global::Interop.Kernel32.ConnectNamedPipe(base.InternalHandle, connectionValueTaskSource._overlapped))
392 {
393 int lastPInvokeError = Marshal.GetLastPInvokeError();
394 switch (lastPInvokeError)
395 {
396 case 997:
397 connectionValueTaskSource.RegisterForCancellation(cancellationToken);
398 break;
399 case 535:
400 connectionValueTaskSource.Dispose();
401 if (base.State == PipeState.Connected)
402 {
404 }
405 base.State = PipeState.Connected;
407 default:
408 connectionValueTaskSource.Dispose();
410 }
411 }
412 }
413 catch
414 {
415 connectionValueTaskSource.Dispose();
416 throw;
417 }
418 connectionValueTaskSource.FinishedScheduling();
419 return new ValueTask(connectionValueTaskSource, connectionValueTaskSource.Version);
420 }
ConnectionValueTaskSource _reusableConnectionValueTaskSource
static Exception GetExceptionForWin32Error(int errorCode, string path="")
static string InvalidOperation_PipeAlreadyConnected
Definition SR.cs:52
Definition SR.cs:7
static int Exchange(ref int location1, int value)
static ValueTask CompletedTask
Definition ValueTask.cs:71
static ValueTask FromException(Exception exception)
Definition ValueTask.cs:190

References System.IO.Pipes.PipeStream.PipeValueTaskSource._overlapped, System.IO.Pipes.NamedPipeServerStream._reusableConnectionValueTaskSource, System.cancellationToken, System.IO.Pipes.NamedPipeServerStream.CheckConnectOperationsServerWithHandle(), System.Threading.Tasks.ValueTask< TResult >.CompletedTask, System.IO.Pipes.PipeStream.PipeValueTaskSource.Dispose(), System.Threading.Interlocked.Exchange(), System.IO.Pipes.PipeStream.PipeValueTaskSource.FinishedScheduling(), System.Threading.Tasks.ValueTask< TResult >.FromException(), System.IO.Win32Marshal.GetExceptionForWin32Error(), System.Runtime.InteropServices.Marshal.GetLastPInvokeError(), System.SR.InvalidOperation_PipeAlreadyConnected, System.IO.Pipes.PipeStream.PipeValueTaskSource.PrepareForOperation(), System.IO.Pipes.PipeStream.PipeValueTaskSource.RegisterForCancellation(), System.Runtime.ExceptionServices.ExceptionDispatchInfo.SetCurrentStackTrace(), and System.IO.Pipes.PipeStream.PipeValueTaskSource.Version.

Referenced by System.IO.Pipes.NamedPipeServerStream.WaitForConnection(), and System.IO.Pipes.NamedPipeServerStream.WaitForConnectionAsync().