private ConnectionCancellation GetCreatedConnectionCancellation(ulong connectionId)
        {
            // Race condition on creation has no side effects
            var cancellation = new ConnectionCancellation(this);

            return(_connectionCancellationTokens.GetOrAdd(connectionId, cancellation));
        }
Exemple #2
0
        internal CancellationToken GetDisconnectToken(HttpListenerContext context)
        {
            if (_connectionIdField == null || _requestQueueHandle == null)
            {
                return(CancellationToken.None);
            }

            var connectionId = (ulong)_connectionIdField.GetValue(context.Request);
            ConnectionCancellation cancellation = GetConnectionCancellation(connectionId);

            return(cancellation.GetCancellationToken(this, connectionId));
        }
Exemple #3
0
        public void Dispose()
        {
            Logger.LogDebug("Shutting down StreamController");
            ConnectionCancellation.Cancel();
            DisposeModel();
            CancelValidationMessages();
            Dispatcher.Tell(new DisposeMessage());
            Self.Tell(new DisconnectedMessage {
                IDConnection = StreamConnection?.GetHashCode()
            });

            Logger.LogInformation("StreamController correctly disposed");
        }
 private ConnectionCancellation GetCreatedConnectionCancellation(ulong connectionId)
 {
     // Race condition on creation has no side effects
     var cancellation = new ConnectionCancellation();
     return _connectionCancellationTokens.GetOrAdd(connectionId, cancellation);
 }