Exemple #1
0
        public async ValueTask DisposeAsync()
        {
            _disposed = true;

            StopAutomaticProgress();

            var controllers = SessionControllers.ToList();

            foreach (var controller in controllers)
            {
                if (controller is IAsyncDisposable disposableAsync)
                {
                    _logger.LogDebug("Disposing session controller asynchronously {TypeName}", disposableAsync.GetType().Name);
                    await disposableAsync.DisposeAsync().ConfigureAwait(false);
                }
            }
        }
Exemple #2
0
        /// <inheritdoc />
        public void Dispose()
        {
            _disposed = true;

            StopAutomaticProgress();

            var controllers = SessionControllers.ToList();

            SessionControllers = Array.Empty <ISessionController>();

            foreach (var controller in controllers)
            {
                if (controller is IDisposable disposable)
                {
                    _logger.LogDebug("Disposing session controller {0}", disposable.GetType().Name);
                    disposable.Dispose();
                }
            }
        }
Exemple #3
0
        public Tuple <ISessionController, bool> EnsureController <T>(Func <SessionInfo, ISessionController> factory)
        {
            var controllers = SessionControllers.ToList();

            foreach (var controller in controllers)
            {
                if (controller is T)
                {
                    return(new Tuple <ISessionController, bool>(controller, false));
                }
            }

            var newController = factory(this);

            controllers.Add(newController);

            SessionControllers = controllers.ToArray();
            return(new Tuple <ISessionController, bool>(newController, true));
        }
Exemple #4
0
        public Tuple <ISessionController, bool> EnsureController <T>(Func <SessionInfo, ISessionController> factory)
        {
            var controllers = SessionControllers.ToList();

            foreach (var controller in controllers)
            {
                if (controller is T)
                {
                    return(new Tuple <ISessionController, bool>(controller, false));
                }
            }

            var newController = factory(this);

            _logger.LogDebug("Creating new {0}", newController.GetType().Name);
            controllers.Add(newController);

            SessionControllers = controllers.ToArray();
            return(new Tuple <ISessionController, bool>(newController, true));
        }