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

◆ StartOnCloseCompleted()

async Task< bool > System.Net.WebSockets.WebSocketBase.StartOnCloseCompleted ( bool thisLockTakenSnapshot,
bool sessionHandleLockTakenSnapshot,
CancellationToken cancellationToken )
inlineprivate

Definition at line 1084 of file WebSocketBase.cs.

1085 {
1086 if (WebSocket.IsStateTerminal(_state))
1087 {
1088 return false;
1089 }
1090 _state = WebSocketState.Closed;
1092 {
1095 try
1096 {
1097 if (_closeNetworkConnectionTask == null)
1098 {
1100 }
1102 {
1104 }
1105 else if (lockTaken)
1106 {
1108 }
1109 await _closeNetworkConnectionTask.SuppressContextFlow();
1110 }
1111 catch (Exception ex)
1112 {
1114 {
1115 ThrowIfConvertibleException("StartOnCloseCompleted", ex, cancellationToken, cancellationToken.IsCancellationRequested);
1116 throw;
1117 }
1118 }
1119 }
1120 return true;
1121 }
static void ReleaseLock(object lockObject, ref bool lockTaken)
void ThrowIfConvertibleException(string methodName, Exception exception, CancellationToken cancellationToken, bool aborted)
void ReleaseLocks(ref bool thisLockTaken, ref bool sessionHandleLockTaken)
bool CanHandleExceptionDuringClose(Exception error)
readonly IWebSocketStream _innerStreamAsWebSocketStream
Task CloseNetworkConnectionAsync(CancellationToken cancellationToken)

References System.Net.WebSockets.WebSocketBase._closeNetworkConnectionTask, System.Net.WebSockets.WebSocketBase._innerStreamAsWebSocketStream, System.Net.WebSockets.WebSocketBase._state, System.Net.WebSockets.WebSocketBase._thisLock, System.cancellationToken, System.Net.WebSockets.WebSocketBase.CanHandleExceptionDuringClose(), System.Net.WebSockets.WebSocketBase.IWebSocketStream.CloseNetworkConnectionAsync(), System.Net.WebSockets.WebSocket.IsStateTerminal(), System.Net.WebSockets.WebSocketBase.ReleaseLock(), System.Net.WebSockets.WebSocketBase.ReleaseLocks(), and System.Net.WebSockets.WebSocketBase.ThrowIfConvertibleException().

Referenced by System.Net.WebSockets.WebSocketBase.CloseAsyncCore(), System.Net.WebSockets.WebSocketBase.CloseOutputAsyncCore(), and System.Net.WebSockets.WebSocketBase.WebSocketOperation.Process().