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

📄 esmereceiver.cpp

📁 一个短信smpp协议开发包源码
💻 CPP
字号:
// EsmeReceiver.cpp: implementation of the CEsmeReceiver class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//#include "SMPPAPI.h"
#include "EsmeReceiver.h"
#include "smpppacket.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

#ifdef SMPPAPI_EVALUATION
	uint32 CEsmeReceiver::m_eval_counter = 1;
#endif

CEsmeReceiver::CEsmeReceiver()
{
}

CEsmeReceiver::~CEsmeReceiver()
{

}

int CEsmeReceiver::bind(CString sysid, CString passwd, CString systype, CSmppAddress &addrrange)
{
	bool ret = 1;

	m_system_id = sysid;
	m_password = passwd;
	m_system_type = systype;

	m_address_range = addrrange;

	if (open())
	{
		CBindReceiver	pak;

		pak.setSystemId(sysid);
		pak.setPassword(passwd);
		pak.setSystemType(systype);

		pak.setSourceRange(addrrange);

		if (sendPacket(pak))
			ret = 0;
	}

	return ret;
}

void CEsmeReceiver::parse_packet(PBYTE pby, int nsz)
{
	#ifdef SMPPAPI_EVALUATION
		m_eval_counter++;
		if (m_eval_counter > 200)
			return;
	#endif

	if (nsz < 16)
		return;

	uint32 cmdId = readInt(pby);

	TRACE1("CommandId is %x", cmdId);

	int cmdStatus = readInt(pby+4);
	int seqNum = readInt(pby+8);

	switch (cmdId)
	{
		case SMPP_GENERIC_NACK:
		{
			CGenericNack* ppak;
			ppak = new CGenericNack();
			ppak->loadPacket(pby, nsz);

			//call back
			if (m_pProcessPacket != NULL)
			{
				m_pProcessPacket(ppak, m_Param);
			}

			delete ppak;
		}
			break;

		case SMPP_SPECIAL_LINKCLOSE:
		{
			CLinkClose* ppak;
			ppak = new CLinkClose();
			ppak->loadPacket(pby, nsz);

			//call back
			if (m_pProcessPacket != NULL)
			{
				m_pProcessPacket(ppak, m_Param);
			}

			delete ppak;
		}
			break;

		case SMPP_BIND_RECEIVER_RESP:
		{
			CBindReceiverResp* ppak;
			ppak = new CBindReceiverResp();
			ppak->loadPacket(pby, nsz);

			//call back
			if (m_pProcessPacket != NULL)
			{
				m_pProcessPacket(ppak, m_Param);
			}

			delete ppak;
		}
			break;

		case SMPP_ENQUIRE_LINK:
		{
			CEnquireLink* ppak;
			ppak = new CEnquireLink();
			ppak->loadPacket(pby, nsz);

			//call back
			if (m_pProcessPacket != NULL)
			{
				m_pProcessPacket(ppak, m_Param);
			}

			delete ppak;
		}
			break;

		case SMPP_ENQUIRE_LINK_RESP:
		{
			CEnquireLinkResp* ppak;
			ppak = new CEnquireLinkResp();
			ppak->loadPacket(pby, nsz);

			//call back
			if (m_pProcessPacket != NULL)
			{
				m_pProcessPacket(ppak, m_Param);
			}

			delete ppak;
		}
			break;

		case SMPP_UNBIND_RESP:
		{
			CUnbindResp* ppak;
			ppak = new CUnbindResp();
			ppak->loadPacket(pby, nsz);

			//call back
			if (m_pProcessPacket != NULL)
			{
				m_pProcessPacket(ppak, m_Param);
			}

			delete ppak;
		}
			break;

		case SMPP_DELIVER_SM:
		{
			CDeliverSM*	ppak;
			ppak = new CDeliverSM();
			ppak->loadPacket(pby, nsz);

			//call back
			if (m_pProcessPacket != NULL)
			{
				m_pProcessPacket(ppak, m_Param);
			}

			delete ppak;
		}
			break;

		default:
			break;
	}
}

⌨️ 快捷键说明

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