📄 mycngp2client.cpp
字号:
/**
* MyCNGP2Client.cpp
*
* CNGP2 API Demo Application.
*
* Copyright 2003-2006 北京风起水流软件工作室
*
* http://www.zealware.com
*
* princetoad@gmail.com
*
*/
#include "stdafx.h"
#include "MyCNGP2Client.h"
MyCNGPClient::MyCNGPClient(CCNGP2APIDemoDlg & _dlg)
:dlg(_dlg)
{
}
MyCNGPClient::~MyCNGPClient()
{
}
void MyCNGPClient::OnLogWrite(
const char * fmt,
...
)
{
try {
char buffer[1024] = "";
va_list arglist;
va_start( arglist, fmt );
_vsnprintf( buffer, 1024, fmt, arglist );
va_end(arglist);
dlg.ShowLog(buffer);
}
catch(...) {
}
return;
}
void MyCNGPClient::DumpStatus( CNGPConnection & connection )
{
dlg.ShowLog("INFO|TOKEN=%s|MT_OK=%u|MT_FAIL=%u|RESP_OK=%u|RESP_FAIL=%u|MO=%u|SR=%u;\n",
connection.GetToken(),
connection.GetSubmitSucceedCount(),
connection.GetSubmitFailedCount(),
connection.GetRespSucceedCount(),
connection.GetRespFailedCount(),
connection.GetDeliverCount(),
connection.GetStatusReportCount());
}
void MyCNGPClient::Release()
{
CNGPClient::Release();
}
BOOL MyCNGPClient::OnConnectionSubmiting(
CNGPConnection & connection,
cngp_submit _message
)
{
return TRUE;
}
void MyCNGPClient::OnConnectionSubmited(
CNGPConnection & connection,
cngp_submit _message
)
{
//char serviceid[MAX_PATH] = "";
//char feetype[MAX_PATH] = "";
//char feecode[MAX_PATH] = "";
//char srctermid[MAX_PATH] = "";
//char dsttermid[MAX_PATH] = "";
//strncpy(serviceid, _message.sServiceId, 10);
//strncpy(feetype, _message.sFeeType, 2);
//strncpy(feecode, _message.sFeeCode, 6);
//strncpy(srctermid, _message.sSrcTermId, 21);
//strncpy(dsttermid, _message.sDstTermId, 21);
dlg.ShowLog("SUBMIT|SUBTYPE:%u|SERVICEID:%s|FEETYPE:%s|FEECODE:%s|SRCID:%s|DESTID:%s|MSG:%s;",
_message.uchSubType,
_message.sServiceId,
_message.sFeeType,
_message.sFeeCode,
_message.sSrcTermId,
_message.sDstTermId,
_message.sMsgContent
);
//PSYSTEMLOG(
// Debug,
// "SUBMIT|SUBTYPE:" << (int)_message.uchSubType
// << "|SERVICEID:" << _message.sServiceId
// << "|FEETYPE:" << _message.sFeeType
// << "|FEECODE:" << _message.sFeeCode
// << "|SRCID:" << _message.sSrcTermId
// << "|DESTID:" << _message.sDstTermId
// << "|MSG:" << _message.sMsgContent << ";"
// );
CNGPClient::OnConnectionSubmited(connection, _message);
}
void MyCNGPClient::OnConnectionSubmitFailed(
CNGPConnection & connection,
cngp_submit _message
)
{
dlg.ShowLog("SUBMITFAILED|ERROR=%u;", _message.nonStdMessage.IIResult);
CNGPClient::OnConnectionSubmitFailed(connection, _message);
}
//void BcdToAscii( unsigned char *lpAscii, unsigned char *lpBcd, int nLength)
//{
// int i;
//
// for ( i=0; i<nLength; i++)
// {
// lpAscii[i]='0'+((i%2)?lpBcd[i/2]%16:lpBcd[i/2]/16);
// lpAscii[i]=(lpAscii[i]>'9')? lpAscii[i]-'9'+'A'-1:lpAscii[i];
// }
// return;
//}
//
//CString ConvertMsgIdCngp(unsigned char* msgid)
//{
// CString str;
// unsigned char strAscii[21];
// ZeroMemory(strAscii, 21);
// BcdToAscii(strAscii, msgid, 20);
// str.Format("%s", strAscii);
// return str;
//}
void MyCNGPClient::OnReceivedConnectionSubmitResponse(
CNGPConnection & connection,
cngp_submit_deliver_resp resp
)
{
//CString szMsgId = ConvertMsgIdCngp((unsigned char *)resp.sMsgid);
char szMsgId[MAX_PATH] = "";
ConvertMsgId( szMsgId, (unsigned char *)resp.sMsgid );
dlg.ShowLog(
"SUBMITRESP|SEQID=%u|RESULT=%u|MSGID=%s;",
resp.nSeqId,
resp.nResult,
szMsgId
);
CNGPClient::OnReceivedConnectionSubmitResponse(connection, resp);
}
void MyCNGPClient::OnConnectionCleared( CNGPConnection & connection )
{
DumpStatus(connection);
return;
}
void MyCNGPClient::OnReceivedConnectionDeliver(
CNGPConnection & connection,
cngp_deliver deliver
)
{
//CString szMsgId = ConvertMsgIdCngp((unsigned char *)deliver.sMsgid);
char szMsgId[MAX_PATH] = "";
ConvertMsgId( szMsgId, (unsigned char *)deliver.sMsgid );
char szMsg[MAX_PATH] = "";
strncpy(szMsg, deliver.MO_Msg_Content.sMsgcontent, deliver.uchMsgLen);
if ( deliver.uchMsgfmt == 8 ) {
// 转换UCS2
char sMultiByte[MAX_PATH] = "";
unsigned char uchTmp = 0;
unsigned char pchTmp[1024] = "";
memcpy(pchTmp, deliver.MO_Msg_Content.sMsgcontent, deliver.uchMsgLen);
for (int ix=0; ix<deliver.uchMsgLen/2; ix++) {
uchTmp = pchTmp[ix*2];
pchTmp[ix*2] = pchTmp[ix*2 + 1];
pchTmp[ix*2 + 1] = uchTmp;
}
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, (LPCWSTR)pchTmp, deliver.uchMsgLen/2, sMultiByte, MAX_PATH, NULL, NULL);
strcpy(szMsg, sMultiByte);
}
dlg.ShowLog("DELIVER|SRCMOBILE:%s|SPNUMBER:%s|MSGFMT:%u|LENGTH:%u|MSG:%s;",
deliver.sSrcTermId,
deliver.sDstTermId,
deliver.uchMsgfmt,
strlen(szMsg),
szMsg
);
CNGPClient::OnReceivedConnectionDeliver(connection, deliver);
}
void MyCNGPClient::OnReceivedConnectionStatusReport(
CNGPConnection & connection,
cngp_deliver sr
)
{
cngp_status_report *preport = &sr.MO_Msg_Content.csr;
//CString msgid = ConvertMsgIdCngp( (unsigned char *)(sr.MO_Msg_Content.csr.SR_id+3) );
char szMsgId[MAX_PATH] = "";
ConvertMsgId( szMsgId, (unsigned char *)preport->SR_id );
dlg.ShowLog(
"REPORT|MSGID=%s|SUBMITTIME=%s|DONETIME=%s|STATE=%s|ERR=%s;",
szMsgId,
preport->SR_submitdate,
preport->SR_donedate,
preport->SR_state,
preport->SR_err
);
return;
}
void MyCNGPClient::OnNoAvailableConnection( cngp_submit & submit_message )
{
dlg.ShowLog(
"没有可用连接!%s-%s",
submit_message.sSpid,
submit_message.sDstTermId
);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -