亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gatewayproxyprotocol.cpp

?? C++實(shí)現(xiàn)的brew程序管理器例子
?? CPP
字號:

//---------------- Inculde ------------------
#include "GatewayProxyProtocol.h"
#include "AEEStdlib.h"
//-------------------------------------------



// Decode SMS according to the protocol
// pszText[in]: SMS text to be decoded
// pInfo[out]: The buffer to be filed after decoded
boolean PROTOCOL_SMSDecode(char *pszText, SMSInfo *pInfo)
{
	// Parameter is ok?
	if(!pszText || !pInfo)
	{
		return FALSE;
	}
	// Get first field (CLSID)
	char *pszFind = STRCHR(pszText, PROTOCOL_SEPARATOR);
	//class id = 0X0132ef23 可能以0x132ef23格式傳過來, 因此無法從長度判斷
	if(!pszFind /*|| (pszFind - pszText != PROTOCOL_CLSID_LEN && pszFind - pszText != PROTOCOL_CLSID_LEN + 2)*/)
	{
		return FALSE;
	}
	// Save CLSID
	pInfo->clsApp = PROTOCOL_HEXSTRToUINT32(pszText);
	
	// Get second field(IMSI)
	pszText = pszFind + 1;
	pszFind = STRCHR(pszText, PROTOCOL_SEPARATOR);
	//if(!pszFind || pszFind - pszText != PROTOCOL_IMSI_LEN)
	if(!pszFind || pszFind - pszText > PROTOCOL_IMSI_LEN)
	{
		return FALSE;
	}
	// Save IMSI
	STRNCPY(pInfo->szIMSI, pszText, PROTOCOL_IMSI_LEN);
	pInfo->szIMSI[PROTOCOL_IMSI_LEN] = 0;
	
	//Get third field (Notify type)
	pszText = pszFind + 1;
	/*
	//has separator to end
	pszFind = STRCHR(pszText, PROTOCOL_SEPARATOR);
	if(!pszFind || pszFind - pszText > 5)
	{
		return FALSE;
	}
	*/
	// Change text to num
	*pszFind = 0;
	pInfo->wType = ATOI(pszText);
	*pszFind = PROTOCOL_SEPARATOR;
	// Type is ok?
	if(pInfo->wType < PROTOCOL_TYPE_MIN || pInfo->wType > PROTOCOL_TYPE_MAN)
	{
		return FALSE;
	}

	return TRUE;
}

// Convert HEX string to uint32 value
// pszText[in]: hex string
uint32 PROTOCOL_HEXSTRToUINT32(const char *pszText)
{
	uint32 dwValue = 0;
	char *pszTemp = (char *)pszText;

	if(!pszTemp)
	{
		return dwValue;
	}
	// The first character is "0x" or "0X"?
	if(pszTemp[0] == '0' && (pszTemp[1] == 'x' || pszTemp[1] == 'X'))
	{
		pszTemp += 2;
	}
	//
	while(*pszTemp != 0)
	{
		if(*pszTemp >= '0' && *pszTemp <= '9')
		{
			dwValue *= 16;
			dwValue += *pszTemp - '0';
		}
		else if(*pszTemp >= 'A' && *pszTemp <= 'F')
		{
			dwValue *= 16;
			dwValue += *pszTemp + 10 - 'A';
		}
		else if(*pszTemp >= 'a' && *pszTemp <= 'f')
		{
			dwValue *= 16;
			dwValue += *pszTemp + 10 - 'a';
		}
		else
		{
			return dwValue;
		}
		//
		pszTemp++;
	}

	return dwValue;
}

/*
	⑴如果CatalogID下存在子目錄,返回
		ErrorCode=2%CatalogCount=3%CatID=0: 圖片&1: 流媒體&2: 在線游戲%
	⑴如果CatalogID下不存在子目錄,返回服務(wù)列表,返回
		ErrorCode=1%CatalogCount =3% CatID =1100: 推箱子&1101: CS游戲&1102:俄羅斯方塊%
	⑵如果不存在服務(wù)或子目錄,返回
				ErrorCode=0%
*/
AppInfo *PROTOCOL_ServiceDecode(char *pszText, uint16 &nCount, uint16 &nErrorCode)
{
	AppInfo *pAppInfo = NULL;
	nCount = 0;
	nErrorCode = CODE_ERROR;
	//parameter is valid?
	if(pszText == NULL)
	{
		return NULL;
	}
	// Get return code (errorCode)
	char *pszFind = STRISTR(pszText, PROTOCOL_ERRORCODE_START);
	if(pszFind == NULL)
	{
		nErrorCode = CODE_ERROR;
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_ERRORCODE_START);
	nErrorCode = ATOI(pszText);
	if(nErrorCode == CODE_NONE_POLICY || nErrorCode == CODE_PARAM_ERROR)
	{
		//業(yè)務(wù)不存在或查詢參數(shù)不正確
		return NULL;
	}

	// Get first field (BillingCount)
	pszFind = STRISTR(pszText, PROTOCOL_CATALOGCOUNT_START);
	if(pszFind == NULL)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_CATALOGCOUNT_START);
	nCount = ATOI(pszText);
	//Count is valid?
	if(nCount == 0)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	//
	pAppInfo = (AppInfo *) MALLOC(sizeof(AppInfo) * nCount);
	if(pAppInfo == NULL)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	//Get second field(BillingPolicy)
	pszFind = STRISTR(pszText, PROTOCOL_CATALOGID_START);
	if(!pszFind)
	{
		nErrorCode = CODE_NONE_POLICY;
		FREE(pAppInfo);
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_CATALOGID_START);
	//for each field	
	for(int i = 0; i < nCount; i++)
	{
		MEMSET(pAppInfo[i].wszName, 0, (PROTOCOL_APPNAME_LEN + 1) * sizeof(AECHAR));
		pAppInfo[i].cls = ATOI(pszText);
		//Find seperator
		pszFind = STRCHR(pszText, PROTOCOL_SEPARATOR);
		if(pszFind == NULL)
		{
			FREE(pAppInfo);
			nCount = 0;
			nErrorCode = CODE_NONE_POLICY;
			return NULL;
		}
		pszText = pszFind + 1;
		if(i == nCount - 1)//end 
			pszFind = STRCHR(pszText, PROTOCOL_BILLINGPOLICY_SEPARATOR1);
		else
			pszFind = STRCHR(pszText, PROTOCOL_BILLINGPOLICY_SEPARATOR2);
		//
		if(pszFind == NULL)
		{
			FREE(pAppInfo);
			nCount = 0;
			nErrorCode = CODE_NONE_POLICY;
			return NULL;
		}
		//Convert UTF8 string to AECHAR string
		uint32 dwLen = pszFind - pszText;
		UTF8TOWSTR((const byte*)pszText, dwLen, pAppInfo[i].wszName, (PROTOCOL_APPNAME_LEN + 1) * sizeof(AECHAR));
		pAppInfo[i].wszName[PROTOCOL_APPNAME_LEN] = 0;
		//Point to next string
		pszText = pszFind + 1;
	}
	return pAppInfo;
}


//Decode application struct
AppInfo *PROTOCOL_AppDownloadDecode(char *pszText, uint16 &nCount, uint16 &nErrorCode)
{
	AppInfo *pAppInfo = NULL;
	nCount = 0;
	nErrorCode = CODE_ERROR;
	//parameter is valid?
	if(pszText == NULL)
	{
		return NULL;
	}
	// Get return code (errorCode)
	char *pszFind = STRISTR(pszText, PROTOCOL_ERRORCODE_START);
	if(pszFind == NULL)
	{
		nErrorCode = CODE_ERROR;
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_ERRORCODE_START);
	nErrorCode = ATOI(pszText);
	if(nErrorCode == CODE_NONE_POLICY || nErrorCode == CODE_PARAM_ERROR)
	{
		//業(yè)務(wù)不存在或查詢參數(shù)不正確
		return NULL;
	}

	// Get first field (BillingCount)
	pszFind = STRISTR(pszText, PROTOCOL_PRODUCTCOUNT_START);
	if(pszFind == NULL)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_PRODUCTCOUNT_START);
	nCount = ATOI(pszText);
	//Count is valid?
	if(nCount == 0)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	//
	pAppInfo = (AppInfo *) MALLOC(sizeof(AppInfo) * nCount);
	if(pAppInfo == NULL)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	//Get second field(BillingPolicy)
	pszFind = STRISTR(pszText, PROTOCOL_CLASSID_START);
	if(!pszFind)
	{
		nErrorCode = CODE_NONE_POLICY;
		FREE(pAppInfo);
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_CLASSID_START);
	//for each field	
	for(int i = 0; i < nCount; i++)
	{
		MEMSET(pAppInfo[i].wszName, 0, (PROTOCOL_APPNAME_LEN + 1) * sizeof(AECHAR));
		pAppInfo[i].cls = ATOI(pszText);
		//Find seperator
		pszFind = STRCHR(pszText, PROTOCOL_SEPARATOR);
		if(pszFind == NULL)
		{
			FREE(pAppInfo);
			nCount = 0;
			nErrorCode = CODE_NONE_POLICY;
			return NULL;
		}
		pszText = pszFind + 1;
		pszFind = STRCHR(pszText, ':');
		//
		if(pszFind == NULL)
		{
			FREE(pAppInfo);
			nCount = 0;
			nErrorCode = CODE_NONE_POLICY;
			return NULL;
		}
		//Convert UTF8 string to AECHAR string
		uint32 dwLen = pszFind - pszText;
		UTF8TOWSTR((const byte*)pszText, dwLen, pAppInfo[i].wszName, (PROTOCOL_APPNAME_LEN + 1) * sizeof(AECHAR));
		pAppInfo[i].wszName[PROTOCOL_APPNAME_LEN] = 0;
		//定購關(guān)系
		pszText = pszFind + 1;
		pszFind = STRCHR(pszText, ':');
		//
		if(pszFind == NULL)
		{
			FREE(pAppInfo);
			nCount = 0;
			nErrorCode = CODE_NONE_POLICY;
			return NULL;
		}
		dwLen = pszFind - pszText;
		UTF8TOWSTR((const byte*)pszText, dwLen, pAppInfo[i].wszPolicy, (PROTOCOL_POLICYTEXT_LEN + 1) * sizeof(AECHAR));
		pAppInfo[i].wszPolicy[PROTOCOL_POLICYTEXT_LEN] = 0;

		//退定標(biāo)記
		pszText += (dwLen + 1);
		pAppInfo[i].isCancel = ATOI(pszText);
		//續(xù)定標(biāo)記
		pszText += 2;
		pAppInfo[i].isRenew = ATOI(pszText);
		
		pszText = pszFind + 1;
	}
	return pAppInfo;
}

// Decode BillingPolicy struct
// pszText[in]: billingPolicy text to be decoded  --
// pszText eg.ErrorCode=1%ClassID=1100&BillingCount=2%BillingPolicy=2:普通包月1元&6:按次計(jì)費(fèi)1元
// ncount: return count of BillingPolicy
BillingPolicy *PROTOCOL_BillPolicyDecode(char *pszText, uint16 &nCount, uint16 &nErrorCode)
{
	BillingPolicy *pPolicys = NULL;
	nCount = 0;
	nErrorCode = CODE_ERROR;
	
	//parameter is valid?
	if(pszText == NULL)
	{
		return NULL;
	}
	// Get return code (errorCode)
	char *pszFind = STRISTR(pszText, PROTOCOL_ERRORCODE_START);
	if(pszFind == NULL)
	{
		nErrorCode = CODE_ERROR;
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_ERRORCODE_START);
	nErrorCode = ATOI(pszText);
	if(nErrorCode == CODE_NONE_POLICY || nErrorCode == CODE_PARAM_ERROR)
	{
		//業(yè)務(wù)不存在或查詢參數(shù)不正確
		return NULL;
	}

	// Get first field (BillingCount)
	pszFind = STRISTR(pszText, PROTOCOL_BILLINGCOUNT_START);
	if(pszFind == NULL)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_BILLINGCOUNT_START);
	nCount = ATOI(pszText);
	//Count is valid?
	if(nCount == 0)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	//
	pPolicys = (BillingPolicy *) MALLOC(sizeof(BillingPolicy) * nCount);
	if(pPolicys == NULL)
	{
		nErrorCode = CODE_NONE_POLICY;
		return NULL;
	}
	//Get second field(BillingPolicy)
	pszFind = STRISTR(pszText, PROTOCOL_BILLINGPOLICY_START);
	if(!pszFind)
	{
		nErrorCode = CODE_NONE_POLICY;
		FREE(pPolicys);
		return NULL;
	}
	pszText = pszFind + STRLEN(PROTOCOL_BILLINGPOLICY_START);
	//for each field	
	for(int i = 0; i < nCount; i++)
	{
		MEMSET(pPolicys[i].wszPolicy, 0, (PROTOCOL_POLICYTEXT_LEN + 1) * sizeof(AECHAR));
		pPolicys[i].wId = ATOI(pszText);
		//Find seperator
		pszFind = STRCHR(pszText, PROTOCOL_SEPARATOR);
		if(pszFind == NULL)
		{
			FREE(pPolicys);
			nCount = 0;
			nErrorCode = CODE_NONE_POLICY;
			return NULL;
		}
		pszText = pszFind + 1;
		if(i == nCount - 1)//end 
			pszFind = STRCHR(pszText, PROTOCOL_BILLINGPOLICY_SEPARATOR1);
		else
			pszFind = STRCHR(pszText, PROTOCOL_BILLINGPOLICY_SEPARATOR2);
		//
		if(pszFind == NULL)
		{
			FREE(pPolicys);
			nCount = 0;
			nErrorCode = CODE_NONE_POLICY;
			return NULL;
		}
		//Convert UTF8 string to AECHAR string
		uint32 dwLen = pszFind - pszText - 2;
		UTF8TOWSTR((const byte*)pszText, dwLen, pPolicys[i].wszPolicy, (PROTOCOL_POLICYTEXT_LEN + 1) * sizeof(AECHAR));
		pPolicys[i].wszPolicy[PROTOCOL_POLICYTEXT_LEN] = 0;
		//解析是否可以續(xù)定標(biāo)志
		pszText += (dwLen + 1);
		pPolicys[i].bIsRenewable = (boolean)ATOI(pszText);
		//Point to next string
		pszText = pszFind + 1;
	}
	return pPolicys;
}

//Decode BillInfo 定購信息解析
//pszText[in]
//
uint16 PROTOCOL_BillInfoDecode(char *pszText)
{
	return 0;
}

//Decode connection result
//pszText[in] connection result text to be decoded
//pResult[out] return result msg
//return uint16  error code 
uint16 PROTOCOL_ResultDecode(char *pszText/*, AECHAR *&pResultMsg*/)
{
//	FREEIF(pResultMsg);
//	pResultMsg = NULL;
	uint16 nErrorCode = UNKNOW_ERRORCODE; 
	
	if(pszText == NULL)
	{
		return nErrorCode;
	}
	char *pszFind = STRISTR(pszText, PROTOCOL_ERRORCODE_START);
	if(pszFind == NULL)
	{
		return nErrorCode;
	}
	pszText = pszFind + STRLEN(PROTOCOL_ERRORCODE_START);
	nErrorCode = ATOI(pszText);
	/*
	//解析返回信息
	pszFind = STRISTR(pszText, PROTOCOL_ERRORMSG_START);
	if(pszFind != NULL)
	{
		pszText = pszFind + STRLEN(PROTOCOL_ERRORMSG_START);
		uint16 nLen = STRLEN(pszText) + 1;
		pResultMsg = (AECHAR *)MALLOC(nLen * sizeof(AECHAR));
		if(pResultMsg == NULL)
			return nErrorCode;

		UTF8TOWSTR((const byte*)pszText, nLen, pResultMsg, nLen * sizeof(AECHAR));
	}*/
	return nErrorCode;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区精品网| 欧美一卡2卡3卡4卡| 秋霞午夜鲁丝一区二区老狼| 久久久国产精华| 精品视频999| av午夜精品一区二区三区| 美女一区二区三区在线观看| 亚洲色图20p| 国产网站一区二区| 777xxx欧美| 91视视频在线观看入口直接观看www | 国产精品日韩成人| 日韩精品一区在线观看| 欧美在线你懂得| 粉嫩蜜臀av国产精品网站| 青青草精品视频| eeuss影院一区二区三区| 国产一区二区福利| 捆绑调教美女网站视频一区| 一区二区三区波多野结衣在线观看| 久久青草欧美一区二区三区| 欧美一区在线视频| 欧美男生操女生| 在线视频欧美区| 不卡av在线免费观看| 高清视频一区二区| 国产精品91一区二区| 激情五月婷婷综合网| 免费日韩伦理电影| 免费看欧美女人艹b| 午夜一区二区三区在线观看| 亚洲精品欧美在线| 亚洲欧美在线观看| 国产精品国产三级国产aⅴ入口| 国产嫩草影院久久久久| 国产亚洲精品aa| 国产女人18毛片水真多成人如厕| 久久综合色天天久久综合图片| 日韩一级片网址| 日韩免费福利电影在线观看| 日韩一区二区视频在线观看| 日韩一级二级三级精品视频| 日韩精品资源二区在线| 欧美mv日韩mv国产| 久久久一区二区三区捆绑**| 久久久久久一二三区| 国产日韩精品一区二区三区| 国产精品色哟哟| 中文字幕一区二区在线播放| 1024精品合集| 亚洲免费av高清| 五月开心婷婷久久| 看电视剧不卡顿的网站| 国内久久精品视频| bt欧美亚洲午夜电影天堂| 色综合天天做天天爱| 欧美美女一区二区在线观看| 日韩一区二区三区在线观看| 久久综合九色综合久久久精品综合| 26uuu国产在线精品一区二区| 久久久国产午夜精品| 亚洲视频免费看| 日韩**一区毛片| 国产毛片一区二区| 日本久久电影网| 91精品国产91热久久久做人人| 日韩美女一区二区三区四区| 日本一区二区三区视频视频| 亚洲精品国久久99热| 另类小说视频一区二区| 不卡影院免费观看| 69精品人人人人| 欧美国产丝袜视频| 午夜av一区二区| 国产精品一区在线观看乱码| 在线免费精品视频| 日韩美女一区二区三区四区| 国产精品久久久久久久久搜平片| 亚洲福利一二三区| 国产精品一区在线观看乱码| 欧美视频一区在线| 久久久久国产成人精品亚洲午夜 | 久久精品国产澳门| av不卡免费电影| 91麻豆精品国产综合久久久久久| 久久久久久久久免费| 午夜精品影院在线观看| 粉嫩欧美一区二区三区高清影视 | 色综合久久六月婷婷中文字幕| 6080亚洲精品一区二区| 国产精品国产成人国产三级| 三级在线观看一区二区| 北条麻妃一区二区三区| 日韩三级中文字幕| 亚洲美女在线一区| 国产91精品露脸国语对白| 欧美日韩一二三区| 国产精品久久777777| 老司机精品视频线观看86| 在线免费观看视频一区| 国产日产欧产精品推荐色| 午夜精品久久久久久久蜜桃app| 成人丝袜高跟foot| 精品国产91洋老外米糕| 亚洲va在线va天堂| 色呦呦网站一区| 中文字幕日韩一区二区| 国产精品77777| 精品国产91乱码一区二区三区 | 久久精品免费观看| 欧美日韩三级在线| 亚洲男人天堂一区| 国产91综合网| 久久香蕉国产线看观看99| 石原莉奈一区二区三区在线观看| 91久久精品午夜一区二区| 国产精品家庭影院| 成人精品一区二区三区四区| xf在线a精品一区二区视频网站| 图片区小说区国产精品视频| 欧美色中文字幕| 亚洲综合偷拍欧美一区色| 色综合久久综合网| 亚洲欧美视频在线观看视频| aa级大片欧美| 亚洲人成小说网站色在线| 成人亚洲精品久久久久软件| 国产视频不卡一区| 国产高清亚洲一区| 国产亚洲午夜高清国产拍精品| 激情五月激情综合网| 精品嫩草影院久久| 国产乱子轮精品视频| 亚洲精品一区二区三区蜜桃下载 | 偷拍日韩校园综合在线| 欧美色综合影院| 天堂资源在线中文精品| 欧美剧情电影在线观看完整版免费励志电影| 自拍偷自拍亚洲精品播放| 99久久er热在这里只有精品15| 中文字幕一区二区三区不卡| 成人av网站大全| 一区二区三区在线高清| 欧美性大战xxxxx久久久| 亚洲国产精品久久久久秋霞影院| 欧美日韩一区小说| 久久精品国产精品亚洲精品| 久久久久久久免费视频了| 成人美女在线观看| 亚洲乱码国产乱码精品精小说 | 色综合久久久网| 亚洲成人av福利| 日韩午夜av电影| 国产精品一二三四五| 亚洲欧美在线视频观看| 欧美日韩一区在线观看| 捆绑调教一区二区三区| 国产精品欧美经典| 在线国产电影不卡| 卡一卡二国产精品 | 日韩一级免费观看| 国产中文字幕一区| 亚洲三级免费电影| 欧美日韩国产精品成人| 久久99最新地址| 1000精品久久久久久久久| 欧美网站一区二区| 激情图片小说一区| 一区二区三区中文在线观看| 在线不卡一区二区| 国产精华液一区二区三区| 亚洲欧洲综合另类| 日韩欧美国产三级电影视频| 成人综合在线观看| 亚洲成av人在线观看| 国产亚洲女人久久久久毛片| 一本久久a久久精品亚洲| 麻豆一区二区在线| 最新中文字幕一区二区三区| 欧美久久久久久蜜桃| 国产成人自拍网| 午夜精品久久一牛影视| 国产精品三级av| 日韩欧美美女一区二区三区| 99vv1com这只有精品| 久久99热99| 亚洲伊人伊色伊影伊综合网| 亚洲精品一区二区三区蜜桃下载| 色综合久久久久综合| 国产一区不卡视频| 天天综合色天天综合| 国产精品乱码妇女bbbb| 日韩一二三区不卡| 91九色02白丝porn| 成人一级片网址| 日本视频一区二区三区| 亚洲精品视频在线观看网站| 国产色91在线| 91麻豆精品国产91| 色狠狠一区二区|