Ejemplo n.º 1
0
 public virtual void TaskCloseAndTurnOnNextDomain()
 {
     m_status = VBATaskStatus.TurnToNext;
 }
Ejemplo n.º 2
0
 public virtual void Reset()
 {
     m_taskht.Clear();
     m_url    = null;
     m_status = VBATaskStatus.Ready;
 }
Ejemplo n.º 3
0
 public virtual void TaskRestartADSL()
 {
     m_status = VBATaskStatus.RestartADSL;
 }
Ejemplo n.º 4
0
 public virtual void TaskClose()
 {
     m_status = VBATaskStatus.Close;
 }
Ejemplo n.º 5
0
 public virtual void TaskFail()
 {
     m_status = VBATaskStatus.Failure;
 }
Ejemplo n.º 6
0
 public virtual void TaskFail()
 {
     m_status = VBATaskStatus.Failure;
 }
Ejemplo n.º 7
0
 public virtual void Reset()
 {
     m_taskht.Clear();
     m_url = null;
     m_status = VBATaskStatus.Ready;
 }
Ejemplo n.º 8
0
 public virtual void TaskCloseAndTurnOnNextDomain()
 {
     m_status = VBATaskStatus.TurnToNext;
 }
Ejemplo n.º 9
0
 public virtual void TaskClose()
 {
     m_status = VBATaskStatus.Close;
 }
Ejemplo n.º 10
0
 public virtual void TaskRestartADSL()
 {
     m_status = VBATaskStatus.RestartADSL ;
 }
Ejemplo n.º 11
0
        protected void ScriptThreadRunner()
        {
            //实现BeforeTask事件
            if (BeforeScript != null)
            {
                BeforeScript(this, null);
            }

            try
            {
                //Log开始
                GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " start...[running time: " + m_runningtime.ToString() + "] [at " + System.Net.Dns.GetHostName() + "]");

                //执行脚本,带空脚本处理
                if (m_script != null && m_script != "")
                {
                    m_engine.Run();
                }

                //关闭引擎
                EngineClose();

                //从VBATask中得到Task状态
                VBATaskStatus ts = (m_vbaobjs["Task"] as VBATask).CurrentVBATaskStatus;
                switch (ts)
                {
                case VBATaskStatus.Failure:
                    GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " fail...");
                    m_taskstatus = TaskStatus.Failure;
                    break;

                case VBATaskStatus.RestartADSL:
                    //重置ADSL(Client)
                    if (ADSLFactory.Reconnect())
                    {
                        GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " restart ADSL...succeed!");
                        m_taskstatus = TaskStatus.Restart;
                    }
                    else
                    {
                        GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " restarting ADSL failed... setting this task failure!");
                        m_taskstatus = TaskStatus.Failure;
                    }
                    break;

                case VBATaskStatus.Ready:
                    m_taskstatus = TaskStatus.Succeed;
                    GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " succeed...");
                    break;

                case VBATaskStatus.Error:
                    m_taskstatus = TaskStatus.Error;
                    GetLogger().LogListLog(VBALogLevelFlag.Error, this.Name + " set error by customer...");
                    break;

                case VBATaskStatus.Close:
                    m_taskstatus = TaskStatus.Succeed;
                    GetLogger().LogListLog(VBALogLevelFlag.Warn, this.Name + " close whole domain!");
                    Domain d = DomainManager.GetDomain(m_domainGUID);
                    if (d.Enable)
                    {
                        d.Enable = false;
                    }
                    break;

                case VBATaskStatus.TurnToNext:
                    m_taskstatus = TaskStatus.Succeed;
                    GetLogger().LogListLog(VBALogLevelFlag.Warn, this.Name + " close and turn to next domain!");
                    Domain dd = DomainManager.GetDomain(m_domainGUID);
                    if (dd.Enable || dd.Priority == DomainPriority.OneTime)
                    {
                        DomainManager.TurnToNextDomain(m_domainGUID);
                    }
                    break;

                default:
                    m_taskstatus = TaskStatus.Succeed;
                    GetLogger().LogListLog(VBALogLevelFlag.Debug, this.Name + " succeed...");
                    break;
                }
            }
            catch (Exception e)
            {
                if (m_IsClosing)
                {
                    log.Warn(this.Name + " closed by force...");
                    GetLogger().LogListLog(VBALogLevelFlag.Warn, this.Name + " closed...");
                    m_taskstatus = TaskStatus.Closing;
                }
                else
                {
                    GetLogger().LogListLog(VBALogLevelFlag.Error, this.Name + " runtime error..." + ParserErrorString(e));
                    log.Error(this.Name + " runtime error: ", e);
                    m_errortime++;
                    m_taskstatus = TaskStatus.Error;
                }
            }
            finally
            {
                //实现AfterTask事件
                if (AfterScript != null)
                {
                    AfterScript(this, null);
                }
            }
        }