📄 crbtgwif.java
字号:
//启动 -> 退出程序监听线程
ReloadServer.start(CrbtGWIFGlobal.reloadPort);
//连接控制线程
CrbtClientController.start();
//发送监控线程
CrbtSendMonitor.getInstance().start();
LoggerConstant.log.info("系统启动成功 ...");
//启动通知
CrbtGWIFGlobal.sendMonitor("I000010");
}
}
/**
* 打印CRBT接口机主要参数。
*
*/
public void printCommon(){
LoggerConstant.log.info("----print base_information bellow:----");
LoggerConstant.log.info("serverIP = "+CrbtGWIFGlobal.ServerIP);
LoggerConstant.log.info("serverPort = "+CrbtGWIFGlobal.ServerPort);
LoggerConstant.log.info("localIP = "+CrbtGWIFGlobal.LocalIP);
LoggerConstant.log.info("localPort = "+CrbtGWIFGlobal.LocalPort);
LoggerConstant.log.info("realodPort = "+CrbtGWIFGlobal.reloadPort);
LoggerConstant.log.info("spanSend = "+CrbtGWIFGlobal.SpanSend);
LoggerConstant.log.info("controlSize = "+CrbtGWIFGlobal.ControlSize);
LoggerConstant.log.info("flowControl = "+CrbtGWIFGlobal.flowControl);
LoggerConstant.log.info("processClassName = "+CrbtGWIFGlobal.ProcessClassName);
LoggerConstant.log.info("ThreadNum = "+CrbtGWIFGlobal.ThreadNum);
LoggerConstant.log.info("----base_information print over.----");
}
/**
* 添加Mynetty2客户端。
* @param host 服务器主机
* @param port 服务器主机端口
* @param localHost 本地主机,在仅作为客户端时,该字段可以为0
* @param localPort 本地端口,在仅作为客户端时,该字段可以为0
* @param spandSend 该参数将设定socket连接IO心跳时间间隔IDLE_TIME
* @param controlSize 处理类滑动窗口大小,实际应用中基本用不到
* @param processClassName 处理类,实现了Mynetty的sessionListener的处理类
*/
public void addClient(String host, int port,
String localHost, int localPort, int spandSend,
int controlSize,
String processClassName) {
CrbtClient client = new CrbtClient(host, port, localHost, localPort);
client.setIDLE_TIME(spandSend);
try {
ClientDefaultCrbtConnTemplet templet = this.getProcessClass(processClassName);
templet.setControlSize(controlSize);
client.registerConnTemplet(templet);
client.registerMessageRecognizer( new CrbtByteMessageRecognizer());
} catch (Exception e) {
throw new IllegalStateException("Class " + processClassName);
}
CrbtGWIFGlobal.vManage.add(client);
}
/**
* 添加Mynetty2客户端。
* @param host 服务器主机
* @param port 服务器主机端口
* @param localHost 本地主机,在仅作为客户端时,该字段可以为0
* @param localPort 本地端口,在仅作为客户端时,该字段可以为0
* @param spandSend 该参数将设定socket连接IO心跳时间间隔IDLE_TIME
* @param controlSize 处理类滑动窗口大小,实际应用中基本用不到
* @param flowControl 重要参数!处理类下发速度控制,该值表征接口机 1 秒下发flowcontrol条信息。
* @param processClassName 处理类,实现了Mynetty的sessionListener的处理类
*/
public void addClient(String host, int port,
String localHost, int localPort, int spandSend,
int controlSize, int flowControl,
String processClassName) {
CrbtClient client = new CrbtClient(host, port, localHost, localPort);
client.setIDLE_TIME(spandSend);
try {
ClientDefaultCrbtConnTemplet templet = this.getProcessClass(processClassName);
templet.setControlSize(controlSize);
templet.setPeriod(((int)(flowControl)));
client.registerConnTemplet(templet);
client.registerMessageRecognizer( new CrbtByteMessageRecognizer());
} catch (Exception e) {
throw new IllegalStateException("Class " + processClassName);
}
CrbtGWIFGlobal.vManage.add(client);
}
/**
* 添加Mynetty客户端
* @param host 服务器主机
* @param port 服务器端口
* @param spandSend 该参数将设定socket连接IO心跳时间间隔IDLE_TIME
* @param controlSize 处理类滑动窗口大小,限制最大下发速度
* @param flowControl 重要参数!处理类下发速度控制,该值表征接口机 1 秒下发flowcontrol条信息。
* @param processClassName 处理类,实现了Mynetty的sessionListener的处理类
*/
public void addClient(String host, int port,
int spandSend,
int controlSize, int flowControl,
String processClassName) {
CrbtClient client = new CrbtClient(host, port);
client.setIDLE_TIME(spandSend);
try {
ClientDefaultCrbtConnTemplet templet = this.getProcessClass(processClassName);
templet.setControlSize(controlSize);
templet.setPeriod(flowControl);
client.registerConnTemplet(templet);
client.registerMessageRecognizer( new CrbtByteMessageRecognizer());
} catch (Exception e) {
throw new IllegalStateException("Class " + processClassName);
}
CrbtGWIFGlobal.vManage.add(client);
}
/**
* 该方法将返回类名为className的实例。
* @param className 处理类名称,String型,该类必须是ClientDefaultCrbtConnTemplet的子类
* @return 将返回ClientDefaultCrbtConnTemplet的实例
*/
public ClientDefaultCrbtConnTemplet getProcessClass(String className) {
ClassLoader loader = this.getClass().getClassLoader();
ClientDefaultCrbtConnTemplet templet = null;
try {
templet = (ClientDefaultCrbtConnTemplet)loader.loadClass(className).newInstance();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
}
return templet;
}
/**
* 启动继承Thread类的线程。
* @param thread
*/
public void startThread(Thread thread) {
thread.setDaemon(true);
thread.start();
}
/**
* 启动实现Runnable接口的线程。
* @param runnable
*/
public void startThread(Runnable runnable) {
Thread thread = new Thread(runnable);
thread.setDaemon(true);
thread.start();
}
/**
* 使用帮助
*/
private static void Usage() {
StringBuffer sb = new StringBuffer();
sb.append(
"Usage: java -Dconfig_file={炫铃网关接口配置文件} -Dlog4j={日志配置文件} -Dtype={运营商类型} -Dversion={炫铃网关接口版本} com.wireless.sms.gwif.SmsAgent \r\n");
sb.append(" \t--Dconfig_file={} 设置短信网关接口配置文件 \r\n");
sb.append(" \t--Dlog4j={} 设置日志配置文件 \r\n");
sb.append(
" \t--Dtype={} 设置运营商类型: cm 移动,un 联通,cn 网通,ct 电信,sc\r\n");
sb.append(" \t--Dversion={} 设置短信网关接口版本 \r\n");
sb.append("eg: 北京移动短信网关接口\r\n");
sb.append(" java -Dconfig_file=./conf/BJ_CM_config.xml -Dlog4j=./conf/log4j.xml -Dtype=cm -Dversion=cmpp2.0 com.wireless.sms.gwif.SmsAgent \r\n");
System.out.println(sb.toString());
}
public static void main(String[] args){
Runtime.getRuntime().addShutdownHook(new Thread(new CrbtStopSignal()));
new CrbtGwif().start();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -