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

◆ DoOperationSendPackets()

unsafe SocketError System.Net.Sockets.SocketAsyncEventArgs.DoOperationSendPackets ( Socket socket,
SafeSocketHandle handle,
CancellationToken cancellationToken )
inlinepackageinherited

Definition at line 1405 of file SocketAsyncEventArgs.cs.

1406 {
1407 SendPacketsElement[] array = (SendPacketsElement[])_sendPacketsElements.Clone();
1408 int num = 0;
1409 int num2 = 0;
1410 int num3 = 0;
1411 SendPacketsElement[] array2 = array;
1412 foreach (SendPacketsElement sendPacketsElement in array2)
1413 {
1414 if (sendPacketsElement != null)
1415 {
1416 if (sendPacketsElement.FilePath != null)
1417 {
1418 num++;
1419 }
1420 else if (sendPacketsElement.FileStream != null)
1421 {
1422 num2++;
1423 }
1424 else if (sendPacketsElement.MemoryBuffer.HasValue && sendPacketsElement.Count > 0)
1425 {
1426 num3++;
1427 }
1428 }
1429 }
1430 if (num + num2 + num3 == 0)
1431 {
1432 FinishOperationSyncSuccess(0, SocketFlags.None);
1433 return SocketError.Success;
1434 }
1435 if (num > 0)
1436 {
1437 int num4 = 0;
1439 try
1440 {
1441 SendPacketsElement[] array3 = array;
1442 foreach (SendPacketsElement sendPacketsElement2 in array3)
1443 {
1444 if (sendPacketsElement2 != null && sendPacketsElement2.FilePath != null)
1445 {
1447 num4++;
1448 }
1449 }
1450 }
1451 catch
1452 {
1453 for (int num5 = num4 - 1; num5 >= 0; num5--)
1454 {
1456 }
1458 throw;
1459 }
1460 }
1461 global::Interop.Winsock.TransmitPacketsElement[] array4 = SetupPinHandlesSendPackets(array, num, num2, num3);
1463 try
1464 {
1468 }
1469 catch
1470 {
1473 throw;
1474 }
1475 }
static readonly EventArgs Empty
Definition EventArgs.cs:9
static SafeFileHandle OpenHandle(string path, FileMode mode=FileMode.Open, FileAccess access=FileAccess.Read, FileShare share=FileShare.Read, FileOptions options=FileOptions.None, long preallocationSize=0L)
Definition File.cs:1009
unsafe NativeOverlapped * AllocateNativeOverlapped()
volatile AsyncProcessingState _asyncProcessingState
unsafe void FreeNativeOverlapped(NativeOverlapped *overlapped)
unsafe SocketError ProcessIOCPResultWithDeferredAsyncHandling(bool success, int bytesTransferred, NativeOverlapped *overlapped, Memory< byte > bufferToPin, CancellationToken cancellationToken=default(CancellationToken))
void FinishOperationSyncSuccess(int bytesTransferred, SocketFlags flags)
unsafe global::Interop.Winsock.TransmitPacketsElement[] SetupPinHandlesSendPackets(SendPacketsElement[] sendPacketsElementsCopy, int sendPacketsElementsFileCount, int sendPacketsElementsFileStreamCount, int sendPacketsElementsBufferCount)
static unsafe IntPtr UnsafeAddrOfPinnedArrayElement(Array arr, int index)
Definition Marshal.cs:775

References System.Net.Sockets.SocketAsyncEventArgs._asyncProcessingState, System.Net.Sockets.SocketAsyncEventArgs._sendPacketsElements, System.Net.Sockets.SocketAsyncEventArgs._sendPacketsFileHandles, System.Net.Sockets.SocketAsyncEventArgs._sendPacketsFlags, System.Net.Sockets.SocketAsyncEventArgs._sendPacketsSendSize, System.Net.Sockets.SocketAsyncEventArgs.AllocateNativeOverlapped(), System.array, System.cancellationToken, System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Runtime.InteropServices.SafeHandle.Dispose(), System.Net.Sockets.SocketAsyncEventArgs.FinishOperationSyncSuccess(), System.Net.Sockets.SocketAsyncEventArgs.FreeNativeOverlapped(), System.handle, System.L, System.IO.File.OpenHandle(), System.Net.Sockets.SocketAsyncEventArgs.ProcessIOCPResultWithDeferredAsyncHandling(), System.Net.Sockets.SocketAsyncEventArgs.SetupPinHandlesSendPackets(), and System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement().

Referenced by System.Net.Sockets.Socket.SendPacketsAsync().