⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reloadprocess.java

📁 中国联通短信通信协议
💻 JAVA
字号:
package com.wireless.sms.gwif.smsagent.workthread;

import org.apache.log4j.Logger;
import java.util.*;
import java.io.*;

//import com.wireless.sms.gwif.smsagent.*;
import com.wireless.sms.pub.mq.*;
import com.wireless.sms.pub.net.DoBackMOMT;
import com.wireless.sms.pub.net.MTServerSocket;

import com.wireless.sms.pub.entity.MT;
//import com.wireless.sms.gwif.smsagent.func.*;
import com.wireless.gwif.socketconn.*;
import com.wireless.sms.gwif.smsagent.global.*;


public class ReloadProcess {
    private SmsGWIFGlobal smsagent = SmsGWIFGlobal.getInstance();
    MTQueue mtqueue = GetMoMtGlobalForUsual.mtqueue;
    MOQueue moqueue = GetMoMtGlobalForUsual.moqueue;
    ObjectQueue objqueue = ObjectQueue.getInstance();
    Logger statlog = LoggerConstant.stat_log;

    private String [] mtflowfilepath = smsagent.MTOVERFLOW;
    private String objflowfilepath = smsagent.STATOVERFLOW;
    private String moflowfilepath = smsagent.MOOVERFLOW;

    private static ReloadProcess instance = null;

    public static synchronized ReloadProcess getInstance(){
        if( instance == null ){
            instance = new ReloadProcess();
        }
        return instance;
    }

    private ReloadProcess() {
    }

    public void setLog(Logger log) {
        this.statlog = log;
    }

    public void stopForReceive(){
        //停止接收线程
        for(int i=0; i<SmsGWIFGlobal.MTserverSocketVec.size(); i++){
            MTServerSocket mtServerSocket =
                           (MTServerSocket)SmsGWIFGlobal.MTserverSocketVec.elementAt(i);
            mtServerSocket.stop();
        }

//        MtReceiver2.stop();
    }

    public void stopForSendMO(){
        //停止发送线程
        MODeQueue.getInstance().stop();
//        MoSender.stop();
    }

    public void stopForSendObj(){
        //停止发送线程
        ObjectDbSender.stop();
    }


    public void stopForConnect(){

        boolean opeFlag = false;
        //停止与运营商的连接
        for(int i=0; i<SmsGWIFGlobal.vManage.size(); i++){
            ConnManageInterface oct =
                          (ConnManageInterface)SmsGWIFGlobal.vManage.elementAt(i);
            oct.stop();

            for( int j=0; !(opeFlag = oct.isFinishStop()) && j<600; j++ ){
                try {
                    Thread.sleep(100);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
            }

            statlog.info("停止与运营商连接 - "+(i+1) + (opeFlag?"正常退出":"强制退出"));
        }
    }

    public void stopForOther(){
        DoOverflowThread.getInstance().stop();
        ControlwindowProcessThread.getInstance().stop();
//        SmsGWIFGlobal.reloadServerSocket.stop();
    }

    public void stopForSaveData(){

        Vector vqueue = mtqueue.getPriorityQueue();
        for(int i=0; i<vqueue.size(); i++){
            DoBackMOMT doBackmt = new DoBackMOMT( (MTQueue)vqueue.elementAt(i) ,mtflowfilepath[i]);
//            doBackmt.setLog(statlog);
            doBackmt.flowAllMT();
        }

        ControlWindow controlWindow = ControlWindow.getInstance();
        HashMap cwmap = controlWindow.getMap();
        Iterator item = cwmap.keySet().iterator();
        while (item.hasNext()) {
            Object tmpkey = item.next();
            Vector tmpv = (Vector)cwmap.get(tmpkey);
            MT tmpmt = (MT)tmpv.get(0);
            tmpmt.setStatus("T");//超时
            objqueue.add(tmpmt);
        }

        DoBackMOMT doBackmo = new DoBackMOMT(moqueue, moflowfilepath);
        DoBackMOMT doBackobj = new DoBackMOMT(objqueue, objflowfilepath);
//        doBackmo.setLog(statlog);
//        doBackobj.setLog(statlog);
        doBackmo.flowAllMO();
        doBackobj.flowAllObj();

//        statlog.info("保存数据完毕");
    }

    public void stopForClientController(){
      ClientController.stop();
    }

    public void stopForSendMonitor(){
      SendMonitor.getInstance().stop();
    }

    public void stopForNightSaver(){
      NightSaver.getInstance().stop();
    }


    public void stopInterface() {
      try{
        stopForSaveData();
        statlog.info("保存数据完毕");
      }catch(Exception e){
        LoggerConstant.stat_log.error("SaveData Exception :", e);
      }

      try{
        stopForSendObj();
//        statlog.info("停止向入库模块发送数据");
      }catch(Exception e){
        LoggerConstant.stat_log.error("StopObjOut Exception :", e);
      }
      
      try{
        stopForSendMO();
//        statlog.info("停止向路由器发送 MO 数据");
      }catch(Exception e){
        LoggerConstant.stat_log.error("StopMOOut Exception :", e);
      }
      
      try{
        stopForOther();
//        statlog.info("停止 溢出.滑动窗口.入库.接受标志 线程");
      }catch(Exception e){
        LoggerConstant.stat_log.error("StopOther Exception :", e);
      }

      try{
        stopForNightSaver();
//        statlog.info("停止夜间保存 MT 线程完毕");
      }catch(Exception e){
        LoggerConstant.stat_log.error("StopNightSaver Exception :", e);
      }

      try{
        stopForReceive();
//        statlog.info("停止从路由器接受 MT 数据");
      }catch(Exception e){
        LoggerConstant.stat_log.error("StopMTIn Exception :", e);
      }

      try{
        stopForSendMonitor();
//        statlog.info("停止监控线程完毕");
      }catch(Exception e){
        LoggerConstant.stat_log.error("StopSendMonitor Exception :", e);
      }

      try{
        stopForSaveData();
//        statlog.info("保存数据完毕");
      }catch(Exception e){
        LoggerConstant.stat_log.error("SaveData Exception :", e);
      }
      
      try{
    	  SmsGWIFGlobal.vManage.clear();
//        statlog.info("程序成功退出!");
      }catch(Exception e){
        LoggerConstant.stat_log.error("Clear Exception :", e);
      }

      statlog.info("Stop Interface Framework Over !!! ");
    }

    /**
     * 重新启动 当运营商断开连接时调用
     */
    public void restartInterface(){
        stopInterface();

        /**
         * Write more code here.
         */
        }

    public String getStackTrace(Exception e) {
      StringWriter sw = new StringWriter();
      PrintWriter pw = new PrintWriter(sw);
      e.printStackTrace(pw);
      return sw.toString();
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -