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

◆ CloseOutputAsyncCore()

async Task System.Net.WebSockets.WebSocketBase.CloseOutputAsyncCore ( WebSocketCloseStatus closeStatus,
string statusDescription,
CancellationToken cancellationToken )
inlineprivate

Definition at line 964 of file WebSocketBase.cs.

965 {
967 if (WebSocket.IsStateTerminal(State))
968 {
969 return;
970 }
972 bool thisLockTaken = false;
973 bool sessionHandleLockTaken = false;
974 bool needToCompleteSendOperation = false;
978 try
979 {
983 if (WebSocket.IsStateTerminal(State))
984 {
985 return;
986 }
987 WebSocket.ThrowOnInvalidState(State, WebSocketState.Open, WebSocketState.CloseReceived);
990 {
992 if (closeOutputTask != null)
993 {
995 await closeOutputTask.SuppressContextFlow();
997 }
998 return;
999 }
1001 while (true)
1002 {
1003 bool flag;
1005 if (flag)
1006 {
1007 break;
1008 }
1009 if (_keepAliveTask != null)
1010 {
1013 await keepAliveTask.SuppressContextFlow();
1017 continue;
1018 }
1020 }
1022 _closeOutputOperation.CloseStatus = closeStatus;
1023 _closeOutputOperation.CloseReason = statusDescription;
1026 await _closeOutputTask.SuppressContextFlow();
1029 {
1030 bool flag2;
1031 try
1032 {
1034 }
1035 catch (Exception)
1036 {
1038 throw;
1039 }
1040 if (flag2)
1041 {
1044 }
1045 }
1046 }
1047 catch (Exception exception)
1048 {
1049 bool isCancellationRequested = linkedCancellationToken.IsCancellationRequested;
1050 Abort();
1052 throw;
1053 }
1054 finally
1055 {
1058 {
1060 }
1061 _closeOutputTask = null;
1063 }
1064 }
bool TryStartOperation(CancellationToken userCancellationToken, out CancellationToken linkedCancellationToken)
void CompleteOperation(bool ownsCancellationTokenSource)
void ResetFlagsAndTakeLocks(ref bool thisLockTaken, ref bool sessionHandleLockTaken)
readonly OutstandingOperationHelper _sendOutstandingOperationHelper
readonly OutstandingOperationHelper _closeOutputOutstandingOperationHelper
void TakeLocks(ref bool thisLockTaken, ref bool sessionHandleLockTaken)
void ThrowIfConvertibleException(string methodName, Exception exception, CancellationToken cancellationToken, bool aborted)
void ReleaseLocks(ref bool thisLockTaken, ref bool sessionHandleLockTaken)
volatile WebSocketOperation.CloseOutputOperation _closeOutputOperation
async Task< bool > StartOnCloseCompleted(bool thisLockTakenSnapshot, bool sessionHandleLockTakenSnapshot, CancellationToken cancellationToken)
static string net_Websockets_AlreadyOneOutstandingOperation
Definition SR.cs:158
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7

References System.Net.WebSockets.WebSocketBase._closeOutputOperation, System.Net.WebSockets.WebSocketBase._closeOutputOutstandingOperationHelper, System.Net.WebSockets.WebSocketBase._closeOutputTask, System.Net.WebSockets.WebSocketBase._keepAliveTask, System.Net.WebSockets.WebSocketBase._sendOutstandingOperationHelper, System.Net.WebSockets.WebSocketBase.Abort(), System.cancellationToken, System.Net.WebSockets.WebSocketBase.OutstandingOperationHelper.CompleteOperation(), System.Net.WebSockets.WebSocketBase.EnsureCloseOutputOperation(), System.exception, System.Net.WebSockets.WebSocketBase.FinishOnCloseCompleted(), System.SR.Format(), System.Net.WebSockets.WebSocket.IsStateTerminal(), System.SR.net_Websockets_AlreadyOneOutstandingOperation, System.Threading.CancellationToken.None, System.Net.WebSockets.WebSocketBase.OnCloseOutputCompleted(), System.Net.WebSockets.WebSocketBase.ReleaseLocks(), System.Net.WebSockets.WebSocketBase.ResetFlagsAndTakeLocks(), System.Net.WebSockets.WebSocketBase.StartOnCloseCompleted(), System.Net.WebSockets.WebSocketBase.TakeLocks(), System.Net.WebSockets.WebSocketBase.ThrowIfConvertibleException(), System.Net.WebSockets.WebSocketBase.ThrowIfDisposed(), System.Net.WebSockets.WebSocketBase.ThrowIfPendingException(), System.Net.WebSockets.WebSocket.ThrowOnInvalidState(), and System.Net.WebSockets.WebSocketBase.OutstandingOperationHelper.TryStartOperation().

Referenced by System.Net.WebSockets.WebSocketBase.CloseOutputAsync().