Esempio n. 1
0
        public Task Shutdown(TimeSpan timeout)
        {
            // if receiver was already shutdown, do nothing
            if (ReceiverShutdown == Interlocked.Exchange(ref recieverState, ReceiverShutdown))
            {
                return(TaskDone.Done);
            }

            logger.Info("Stopping reading from EventHub partition {0}-{1}", settings.Hub.Path, settings.Partition);

            // clear cache and receiver
            IEventHubQueueCache localCache    = Interlocked.Exchange(ref cache, null);
            EventHubReceiver    localReceiver = Interlocked.Exchange(ref receiver, null);
            // start closing receiver
            Task closeTask = TaskDone.Done;

            if (localReceiver != null)
            {
                closeTask = localReceiver.CloseAsync();
            }
            // dispose of cache
            localCache?.Dispose();
            // finish return receiver closing task
            return(closeTask);
        }
Esempio n. 2
0
        public Task Shutdown(TimeSpan timeout)
        {
            logger.Info("Stopping reading from EventHub partition {0}-{1}", config.Hub.Path, config.Partition);

            // clear cache and receiver
            IEventHubQueueCache localCache    = Interlocked.Exchange(ref cache, null);
            EventHubReceiver    localReceiver = Interlocked.Exchange(ref receiver, null);
            // start closing receiver
            Task closeTask = TaskDone.Done;

            if (localReceiver != null)
            {
                closeTask = localReceiver.CloseAsync();
            }
            // dispose of cache
            localCache?.Dispose();
            // finish return receiver closing task
            return(closeTask);
        }
        public Task Shutdown(TimeSpan timeout)
        {
            // clear cache and receiver
            IEventHubQueueCache localCache    = Interlocked.Exchange(ref cache, null);
            EventHubReceiver    localReceiver = Interlocked.Exchange(ref receiver, null);
            // start closing receiver
            Task closeTask = TaskDone.Done;

            if (localReceiver != null)
            {
                closeTask = localReceiver.CloseAsync();
            }
            // dispose of cache
            if (localCache != null)
            {
                localCache.Dispose();
            }
            // finish return receiver closing task
            return(closeTask);
        }
Esempio n. 4
0
        public async Task Shutdown(TimeSpan timeout)
        {
            var watch = Stopwatch.StartNew();

            try
            {
                // if receiver was already shutdown, do nothing
                if (ReceiverShutdown == Interlocked.Exchange(ref recieverState, ReceiverShutdown))
                {
                    return;
                }

                logger.Info("Stopping reading from EventHub partition {0}-{1}", settings.Hub.Path, settings.Partition);

                // clear cache and receiver
                IEventHubQueueCache localCache = Interlocked.Exchange(ref cache, null);

                var localReceiver = Interlocked.Exchange(ref receiver, null);

                // start closing receiver
                Task closeTask = Task.CompletedTask;
                if (localReceiver != null)
                {
                    closeTask = localReceiver.CloseAsync();
                }
                // dispose of cache
                localCache?.Dispose();

                // finish return receiver closing task
                await closeTask;
                watch.Stop();
                monitor?.TrackShutdown(true, watch.Elapsed, null);
            }
            catch (Exception ex)
            {
                watch.Stop();
                monitor?.TrackShutdown(false, watch.Elapsed, ex);
                throw;
            }
        }