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

◆ WriteAsyncCore()

unsafe ValueTask System.IO.Pipes.PipeStream.WriteAsyncCore ( ReadOnlyMemory< byte > buffer,
CancellationToken cancellationToken )
inlineprivate

Definition at line 957 of file PipeStream.cs.

958 {
959 ReadWriteValueTaskSource readWriteValueTaskSource = Interlocked.Exchange(ref _reusableWriteValueTaskSource, null) ?? new ReadWriteValueTaskSource(this, isWrite: true);
960 try
961 {
962 readWriteValueTaskSource.PrepareForOperation(buffer);
963 if (global::Interop.Kernel32.WriteFile(_handle, (byte*)readWriteValueTaskSource._memoryHandle.Pointer, buffer.Length, IntPtr.Zero, readWriteValueTaskSource._overlapped) == 0)
964 {
965 int lastPInvokeError = Marshal.GetLastPInvokeError();
966 if (lastPInvokeError != 997)
967 {
968 readWriteValueTaskSource.Dispose();
970 }
971 readWriteValueTaskSource.RegisterForCancellation(cancellationToken);
972 }
973 }
974 catch
975 {
976 readWriteValueTaskSource.Dispose();
977 throw;
978 }
979 readWriteValueTaskSource.FinishedScheduling();
980 return new ValueTask(readWriteValueTaskSource, readWriteValueTaskSource.Version);
981 }
Exception WinIOError(int errorCode)
ReadWriteValueTaskSource _reusableWriteValueTaskSource
static int Exchange(ref int location1, int value)
static ValueTask FromException(Exception exception)
Definition ValueTask.cs:190

References System.IO.Pipes.PipeStream._handle, System.IO.Pipes.PipeStream.PipeValueTaskSource._memoryHandle, System.IO.Pipes.PipeStream.PipeValueTaskSource._overlapped, System.IO.Pipes.PipeStream._reusableWriteValueTaskSource, System.buffer, System.cancellationToken, System.IO.Pipes.PipeStream.PipeValueTaskSource.Dispose(), System.Threading.Interlocked.Exchange(), System.IO.Pipes.PipeStream.PipeValueTaskSource.FinishedScheduling(), System.Threading.Tasks.ValueTask< TResult >.FromException(), System.Runtime.InteropServices.Marshal.GetLastPInvokeError(), System.Buffers.MemoryHandle.Pointer, System.IO.Pipes.PipeStream.PipeValueTaskSource.PrepareForOperation(), System.IO.Pipes.PipeStream.PipeValueTaskSource.RegisterForCancellation(), System.Runtime.ExceptionServices.ExceptionDispatchInfo.SetCurrentStackTrace(), System.IO.Pipes.PipeStream.PipeValueTaskSource.Version, System.IO.Pipes.PipeStream.WinIOError(), and System.IntPtr.Zero.

Referenced by System.IO.Pipes.PipeStream.WriteAsync(), and System.IO.Pipes.PipeStream.WriteAsync().