📄 cmppserverresponse.java
字号:
import java.lang.*;
import java.net.*;
import java.io.*;
import CMPPResponse;
import CMPPTerminate;
import CMPPTerminateResponse;
import CMPPConnect;
import CMPPConnectResponse;
import CMPPSubmit;
import CMPPSubmitResponse;
import CMPPCancel;
import CMPPCancelResponse;
import CMPPQuery;
import CMPPQueryResponse;
public class CMPPServerResponse extends CMPPResponse
{
CMPPPacket m_packet = null;
public CMPPServerResponse(CMPPSynchronizedIO synio,CMPPAsynchronizedIO asynio,CMPPPacket packet)
throws CMPPException
{
super(synio,asynio);
m_packet = packet;
}
protected void OnTerminateResponse(CMPPTerminateResponse response,CMPPTerminate terminate)
{
m_asynio.m_bTerminate = true;
}
protected void OnConnectResponse(CMPPConnectResponse response,CMPPConnect connect)
{
response.status = 0;
response.authenticator_ismg = "0000000000000000";
response.version = 0x12;
//检查有效性
if(!connect.isValid())
{
//消息结构错
response.status = 1;
}
//检查连接许可
else if(!connect.source_addr.equals("888888"))
{
//非法的SP_ID
response.status = 2;
}
//检查认证
else if(!connect.authenticator_sp.equals("0123456789abcdef"))
{
//SP认证错
response.status = 3;
}
else if(connect.version != 0x12)
//检查版本
{
//版本太高
response.status = 4;
}
else
{
//正确回答
response.authenticator_ismg = "connection is ok";
}
}
protected void OnSubmitResponse(CMPPSubmitResponse response,CMPPSubmit submit)
{
response.msg_id = submit.msg_id;
response.result = 0;//正确
}
protected void OnCancelResponse(CMPPCancelResponse response,CMPPCancel cancel)
{
response.success_id = 0;//成功
}
protected void OnQueryResponse(CMPPQueryResponse response,CMPPQuery query)
{
response.time = query.time;
response.query_type = query.query_type;
response.query_code = query.query_code;
}
public void run()
{
m_nStatus = THREAD_RUNNING;
try
{
if(isRunning() && m_packet != null)
{
//处理CMPP请求
if(m_packet.command_id == CMPPCommandID.CMPP_TERMINATE)
//CMPP_TERMINATE
{
CMPPTerminate terminate = new CMPPTerminate(m_packet);
CMPPTerminateResponse response = response(terminate);
if(response != null)
{
//同步输出响应
//通讯马上就要关闭,必须同步输出!
m_synio.write(response);
}
else
{
CMPPLog.log("CMPPServerResponse.run : failure on terminate response !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE);
}
}
else if(m_packet.command_id == CMPPCommandID.CMPP_CONNECT)
//CMPP_CONNECT
{
CMPPConnect connect = new CMPPConnect(m_packet);
CMPPConnectResponse response = response(connect);
if(response == null || !m_asynio.write(response))
{
m_asynio.m_nErrorCount ++;
m_asynio.m_bAuthenticated = false;
CMPPLog.log("CMPPServerResponse.run : failure on connect response !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE);
}
else if(response.status == 0)
{
m_asynio.m_bAuthenticated = true;
}
else
{
m_asynio.m_bAuthenticated = false;
}
}
else if(m_asynio.m_bAuthenticated)
//已经效验有效
{
if(m_packet.command_id == CMPPCommandID.CMPP_ACTIVETEST)
//CMPP_ACTIVETEST
{
CMPPActiveTest activetest = new CMPPActiveTest(m_packet);
CMPPActiveTestResponse response = response(activetest);
if(response == null || !m_asynio.write(response))
{
m_asynio.m_nErrorCount ++;
CMPPLog.log("CMPPServerResponse.run : failure on activetest response !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE);
}
}
else if(m_packet.command_id == CMPPCommandID.CMPP_SUBMIT)
//CMPP_SUBMIT
{
CMPPSubmit submit = new CMPPSubmit(m_packet);
CMPPSubmitResponse response = response(submit);
if(response == null || !m_asynio.write(response))
{
m_asynio.m_nErrorCount ++;
CMPPLog.log("CMPPServerResponse.run : failure on sumit response !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE);
}
}
else if(m_packet.command_id == CMPPCommandID.CMPP_CANCEL)
//CMPP_CANCEL
{
CMPPCancel cancel = new CMPPCancel(m_packet);
CMPPCancelResponse response = response(cancel);
if(response == null || !m_asynio.write(response))
{
m_asynio.m_nErrorCount ++;
CMPPLog.log("CMPPServerResponse.run : failure on cancel response !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE);
}
}
else if(m_packet.command_id == CMPPCommandID.CMPP_QUERY)
//CMPP_QUERY
{
CMPPQuery query = new CMPPQuery(m_packet);
CMPPQueryResponse response = response(query);
if(response == null || !m_asynio.write(response))
{
m_asynio.m_nErrorCount ++;
CMPPLog.log("CMPPServerResponse.run : failure on query response !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE);
}
}
else
//其他命令
{
CMPPLog.log("CMPPServerResponse.run : unhandled request !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE);
}
}
else
{
CMPPLog.log("CMPPServerResponse.run : unauthorized request !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE);
}
}
}
catch(Exception e)
{
CMPPLog.log(e.getMessage(),
CMPPLog.LOG_CMPP_SERVER_RESPONSE | LogRequest.LOG_EXCEPTION);
CMPPLog.log("CMPPServerResponse.run : unexpected exit !",
CMPPLog.LOG_CMPP_SERVER_RESPONSE | LogRequest.LOG_EXCEPTION);
}
m_nStatus = THREAD_STOPPED;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -