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

📄 mycngp2client.cpp

📁 cngp的api短信开发包
💻 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 + -