Kill() 공개 메소드

public Kill ( ) : void
리턴 void
        private SIPAppServerWorker RecycleAppServer(SIPAppServerWorker badAppServerWorker, int delaySeconds, XmlNode appServerWorkerNode)
        {
            try
            {
                lock (m_recycleLock)
                {
                    // Shutdown existing worker process.
                    if (badAppServerWorker != null)
                    {
                        if (!badAppServerWorker.IsDeactivated)
                        {
                            logger.Debug("Deactivating worker on " + badAppServerWorker.AppServerEndpoint.ToString() + ".");
                            m_sipCallDispatcherFile.UpdateAppServerPriority(badAppServerWorker.AppServerEndpoint, m_unhealthyPriority);

                            lock (m_appServerWorkers)
                            {
                                m_appServerWorkers.Remove(badAppServerWorker);
                            }
                        }

                        if (delaySeconds > 0)
                        {
                            logger.Debug("Delaying process restart for " + badAppServerWorker.AppServerEndpoint.ToString() + " by " + delaySeconds + "s.");
                            Thread.Sleep(delaySeconds * 1000);
                        }

                        badAppServerWorker.Kill();
                    }

                    // Start new worker process and wait for a successful probe response before returning.
                    SIPAppServerWorker appServerWorker = new SIPAppServerWorker(appServerWorkerNode, m_sipTransport);
                    logger.Debug("Starting new worker on " + appServerWorker.AppServerEndpoint.ToString() + ".");

                    DateTime startTime = DateTime.Now;
                    if (appServerWorker.StartProcess())
                    {
                        logger.Debug("Worker on " + appServerWorker.AppServerEndpoint.ToString() + " ready after " + DateTime.Now.Subtract(startTime).TotalSeconds.ToString("0.##") + " seconds.");
                        m_sipCallDispatcherFile.UpdateAppServerPriority(appServerWorker.AppServerEndpoint, m_healthyPriority);
                        lock (m_appServerWorkers)
                        {
                            m_appServerWorkers.Add(appServerWorker);
                        }
                    }
                    else
                    {
                        logger.Debug("Worker on " + appServerWorker.AppServerEndpoint.ToString() + " failed to reach a ready state after " + DateTime.Now.Subtract(startTime).TotalSeconds.ToString("0.##") + " seconds.");
                        appServerWorker.NeedsImmediateRestart = true;
                    }

                    return(appServerWorker);
                }
            }
            catch (Exception excp)
            {
                logger.Error("Exception RecycleAppServer. " + excp.Message);
                throw;
            }
        }
        private SIPAppServerWorker RecycleAppServer(SIPAppServerWorker badAppServerWorker, int delaySeconds, XmlNode appServerWorkerNode)
        {
            try
            {
                lock (m_recycleLock)
                {
                    // Shutdown existing worker process.
                    if (badAppServerWorker != null)
                    {
                        if (!badAppServerWorker.IsDeactivated)
                        {
                            logger.Debug("Deactivating worker on " + badAppServerWorker.AppServerEndpoint.ToString() + ".");
                            m_sipCallDispatcherFile.UpdateAppServerPriority(badAppServerWorker.AppServerEndpoint, m_unhealthyPriority);

                            lock (m_appServerWorkers)
                            {
                                m_appServerWorkers.Remove(badAppServerWorker);
                            }
                        }

                        if (delaySeconds > 0)
                        {
                            logger.Debug("Delaying process restart for " + badAppServerWorker.AppServerEndpoint.ToString() + " by " + delaySeconds + "s.");
                            Thread.Sleep(delaySeconds * 1000);
                        }

                        badAppServerWorker.Kill();
                    }

                    // Start new worker process and wait for a successful probe response before returning.
                    SIPAppServerWorker appServerWorker = new SIPAppServerWorker(appServerWorkerNode, m_sipTransport);
                    logger.Debug("Starting new worker on " + appServerWorker.AppServerEndpoint.ToString() + ".");

                    DateTime startTime = DateTime.Now;
                    if (appServerWorker.StartProcess())
                    {
                        logger.Debug("Worker on " + appServerWorker.AppServerEndpoint.ToString() + " ready after " + DateTime.Now.Subtract(startTime).TotalSeconds.ToString("0.##") + " seconds.");
                        m_sipCallDispatcherFile.UpdateAppServerPriority(appServerWorker.AppServerEndpoint, m_healthyPriority);
                        lock (m_appServerWorkers)
                        {
                            m_appServerWorkers.Add(appServerWorker);
                        }
                    }
                    else
                    {
                        logger.Debug("Worker on " + appServerWorker.AppServerEndpoint.ToString() + " failed to reach a ready state after " + DateTime.Now.Subtract(startTime).TotalSeconds.ToString("0.##") + " seconds.");
                        appServerWorker.NeedsImmediateRestart = true;
                    }

                    return appServerWorker;
                }
            }
            catch (Exception excp)
            {
                logger.Error("Exception RecycleAppServer. " + excp.Message);
                throw;
            }
        }