예제 #1
0
        /// <inheritdoc />
        protected override async Task <BoolResult> ShutdownCoreAsync(OperationContext context)
        {
            var results = new List <Tuple <string, BoolResult> >();

            var innerResult = await InnerContentStore.ShutdownAsync(context);

            results.Add(Tuple.Create(nameof(InnerContentStore), innerResult));

            _evictionNagleQueue?.Dispose();
            _touchNagleQueue?.Dispose();

            var locationStoreResult = await _contentLocationStore.ShutdownAsync(context);

            results.Add(Tuple.Create(nameof(_contentLocationStore), locationStoreResult));

            var factoryResult = await _contentLocationStoreFactory.ShutdownAsync(context);

            results.Add(Tuple.Create(nameof(_contentLocationStoreFactory), factoryResult));

            if (_distributedCopier != null)
            {
                var copierResult = await _distributedCopier.ShutdownAsync(context);

                results.Add(Tuple.Create(nameof(_distributedCopier), copierResult));
            }

            return(ShutdownErrorCompiler(results));
        }
예제 #2
0
        protected virtual void Dispose(bool disposing)
        {
            if (!_disposedValue)
            {
                if (disposing)
                {
                    _queue.Dispose();
                }

                _disposedValue = true;
            }
        }
예제 #3
0
        protected override Task <BoolResult> ShutdownCoreAsync(OperationContext context)
        {
            // This stops uploading more logs, wait for all in-memory logs to flush to disk, and then wait for ongoing
            // transfers to finish. Note that contrary to its name, the method is not actually asynchronous.
            if (!_configuration.DrainUploadsOnShutdown)
            {
                _uploadQueue.Suspend();
            }

            _writeQueue.Dispose();
            _uploadQueue.Dispose();
            return(BoolResult.SuccessTask);
        }
예제 #4
0
        /// <inheritdoc />
        protected override async Task <BoolResult> ShutdownCoreAsync(OperationContext context)
        {
            var results = new List <Tuple <string, BoolResult> >();

            if (_proactiveCopySession?.IsValueCreated == true)
            {
                var sessionResult = await _proactiveCopySession.Value;
                if (sessionResult.Succeeded)
                {
                    var proactiveCopySessionShutdownResult = await sessionResult.Value.ShutdownAsync(context);

                    results.Add(Tuple.Create(nameof(_proactiveCopySession), proactiveCopySessionShutdownResult));
                }
            }

            var innerResult = await InnerContentStore.ShutdownAsync(context);

            results.Add(Tuple.Create(nameof(InnerContentStore), innerResult));

            _evictionNagleQueue?.Dispose();
            _touchNagleQueue?.Dispose();

            if (_contentLocationStore != null)
            {
                var locationStoreResult = await _contentLocationStore.ShutdownAsync(context);

                results.Add(Tuple.Create(nameof(_contentLocationStore), locationStoreResult));
            }

            var factoryResult = await _contentLocationStoreFactory.ShutdownAsync(context);

            results.Add(Tuple.Create(nameof(_contentLocationStoreFactory), factoryResult));

            if (_distributedCopier != null)
            {
                var copierResult = await _distributedCopier.ShutdownAsync(context);

                results.Add(Tuple.Create(nameof(_distributedCopier), copierResult));
            }

            return(ShutdownErrorCompiler(results));
        }
 /// <nodoc />
 protected override Task <BoolResult> ShutdownCoreAsync(OperationContext context)
 {
     TouchNagleQueue?.Dispose();
     return(BoolResult.SuccessTask);
 }
예제 #6
0
 /// <inheritdoc/>
 public void Dispose()
 {
     m_dropClient.Dispose();
     m_cancellationSource.Dispose();
     m_nagleQueue.Dispose();
 }