예제 #1
0
        public bool Stop(HostControl hostControl)
        {
            try
            {
                cancellationTokenSource.Cancel();

                Task.WaitAll(new[] { wardenServerTask }, (int)TimeSpan.FromSeconds(25).TotalMilliseconds);

                if (wardenServer.ClientListenException != null)
                {
                    log.ErrorException(wardenServer.ClientListenException);
                }

                containerManager.Dispose();
            }
            catch (Exception ex)
            {
                log.ErrorException(ex);
            }

            return(true);
        }
예제 #2
0
        public bool Stop(HostControl hostControl)
        {
            log.Info("Stopping Warden");
            try
            {
                cancellationTokenSource.Cancel();

                Task.WaitAll(new[] { wardenServerTask }, (int)TimeSpan.FromSeconds(25).TotalMilliseconds);

                if (wardenServer.ClientListenException != null)
                {
                    log.Log(LogLevel.Error, String.Empty, wardenServer.ClientListenException);
                }

                var destroyTasks = new List <Task>();
                foreach (ContainerHandle handle in containerManager.Handles)
                {
                    try
                    {
                        log.Info("Destroying container handle {0}", handle.ToString());
                        destroyTasks.Add(containerManager.DestroyContainerAsync(handle));
                    }
                    catch (Exception e)
                    {
                        log.Log(LogLevel.Error, String.Empty, e);
                    }
                }
                Task.WaitAll(destroyTasks.ToArray(), 2000);
                containerManager.Dispose();
            }
            catch (Exception ex)
            {
                log.Log(LogLevel.Error, String.Empty, ex);
            }

            return(true);
        }