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

📄 callback_handler.cpp

📁 pimserver是syncml_vc开发包的服务器实例
💻 CPP
📖 第 1 页 / 共 5 页
字号:
						 XPTDEBUG(("Add.Item.Source.locName     = %s\n", source_locName));
						 pcmditemlist->item->source_locName  = (char *)smlLibMalloc(smlLibStrlen(source_locName));
						 smlLibStrcpy( pcmditemlist->item->source_locName,source_locName);
					}
				}
				//add.item.meta
				if(psmlitemlist->item->meta!=NULL)	{
					 //当作METINF处理
					 pcmditemlist->item->meta  = (MetInf_s *)smlLibMalloc(sizeof(MetInf_s));
					 smlLibMemset(pcmditemlist->item->meta,0,(MemSize_t)sizeof(MetInf_s));
	 			 
					 SmlMetInfMetInfPtr_t pMeta = (SmlMetInfMetInfPtr_t )psmlitemlist->item->meta->content;
					 char * maxmsgsize = smlPcdata2String(pMeta->maxmsgsize);
					 if(maxmsgsize!=NULL){
						XPTDEBUG(("Add.Item.Meta.MaxMsgSize          = %s\n",maxmsgsize ));
						pcmditemlist->item->meta->maxmsgsize  = (char *)smlLibMalloc(smlLibStrlen(maxmsgsize));
						smlLibStrcpy(pcmditemlist->item->meta->maxmsgsize,maxmsgsize);
					 }

					 char * format = smlPcdata2String(pMeta->format);
					 if(format!=NULL){
						XPTDEBUG(("Add.Item.Meta.Format          = %s\n",format ));
						pcmditemlist->item->meta->format  = (char *)smlLibMalloc(smlLibStrlen(format));
						smlLibStrcpy(pcmditemlist->item->meta->format,format);
					 }
		
					 char * mark = smlPcdata2String(pMeta->mark);
					 if(mark!=NULL) {
						XPTDEBUG(("Add.Item.Meta.Mark          = %s\n",mark ));
						pcmditemlist->item->meta->mark  = (char *)smlLibMalloc(smlLibStrlen(mark));
						smlLibStrcpy(pcmditemlist->item->meta->mark,mark);
					 }

					 char * maxobjsize = smlPcdata2String(pMeta->maxobjsize);
					 if(maxobjsize!=NULL) {
						XPTDEBUG(("Add.Item.Meta.MaxObjSize          = %s\n",maxobjsize ));
						pcmditemlist->item->meta->maxobjsize  = (char *)smlLibMalloc(smlLibStrlen(maxobjsize));
						smlLibStrcpy(pcmditemlist->item->meta->maxobjsize,maxobjsize);
					 }

					 if(pMeta->mem!=NULL){
						 char * mem_free = smlPcdata2String(pMeta->mem->free);
						 if(mem_free!=NULL) {
							XPTDEBUG(("Add.Item.Meta.Mem.Free          = %s\n",mem_free ));
							pcmditemlist->item->meta->mem_free  = (char *)smlLibMalloc(smlLibStrlen(mem_free));
							smlLibStrcpy(pcmditemlist->item->meta->mem_free,mem_free);
						 }

						 char * mem_freeid = smlPcdata2String(pMeta->mem->freeid);
						 if(mem_freeid!=NULL) {
							XPTDEBUG(("Add.Item.Meta.Mem.FreeID          = %s\n",mem_freeid ));
							pcmditemlist->item->meta->mem_freeid  = (char *)smlLibMalloc(smlLibStrlen(mem_freeid));
							smlLibStrcpy(pcmditemlist->item->meta->mem_freeid,mem_freeid);
						 }
						 char * mem_shared = smlPcdata2String(pMeta->mem->shared);
						 if(mem_shared!=NULL) {
							XPTDEBUG(("Add.Item.Meta.Mem.Shared          = %s\n",mem_shared ));
							pcmditemlist->item->meta->mem_shared  = (char *)smlLibMalloc(smlLibStrlen(mem_shared));
							smlLibStrcpy(pcmditemlist->item->meta->mem_shared,mem_shared);
						 }
					 }

					 char * nextnonce = smlPcdata2String(pMeta->nextnonce);
					 if(nextnonce!=NULL) {
						XPTDEBUG(("Add.Item.Meta.NextNonce          = %s\n",nextnonce ));
						pcmditemlist->item->meta->nextnonce  = (char *)smlLibMalloc(smlLibStrlen(nextnonce));
						smlLibStrcpy(pcmditemlist->item->meta->nextnonce,nextnonce);
					 }

					 char * size = smlPcdata2String(pMeta->nextnonce);
					 if(size!=NULL) {
						XPTDEBUG(("Add.Item.Meta.Size          = %s\n",size ));
						pcmditemlist->item->meta->size  = (char *)smlLibMalloc(smlLibStrlen(size));
						smlLibStrcpy(pcmditemlist->item->meta->size,size);
					 }

					 char * type = smlPcdata2String(pMeta->type);
					 if(type!=NULL) {
						XPTDEBUG(("Add.Item.Meta.Type          = %s\n",type ));
						pcmditemlist->item->meta->type  = (char *)smlLibMalloc(smlLibStrlen(type));
						smlLibStrcpy(pcmditemlist->item->meta->type,type);
					 }

					 char * version = smlPcdata2String(pMeta->version);
					 if(version!=NULL) {
						XPTDEBUG(("Add.Item.Meta.Version          = %s\n",version ));
						pcmditemlist->item->meta->version  = (char *)smlLibMalloc(smlLibStrlen(version));
						smlLibStrcpy(pcmditemlist->item->meta->version,version);
					 }

					if(pMeta->emi!=NULL){
						 //暂时只处理一个
						 pcmditemlist->item->meta->emi  = (PcdataList_s *)smlLibMalloc(sizeof(PcdataList_s));
						 smlLibMemset(pcmditemlist->item->meta->emi,0,(MemSize_t)sizeof(PcdataList_s));

						 char * data = smlPcdata2String(pMeta->emi->data);
						 if(data!=NULL) {
							XPTDEBUG(("Add.Item.Meta.Emi.Data          = %s\n",data ));
							pcmditemlist->item->meta->emi->data  = (char *)smlLibMalloc(smlLibStrlen(data));
							smlLibStrcpy(pcmditemlist->item->meta->emi->data,data);
						 }
					}
					if(pMeta->anchor!=NULL)	{
						 char * anchor_last = smlPcdata2String(pMeta->anchor->last);
						 if(anchor_last!=NULL)	 {
							XPTDEBUG(("Add.Item.Meta.Anchor.Last          = %s\n",anchor_last ));
							pcmditemlist->item->meta->anchor_last  = (char *)smlLibMalloc(smlLibStrlen(anchor_last));
							smlLibStrcpy(pcmditemlist->item->meta->anchor_last,anchor_last);
						 }
						 char * anchor_next = smlPcdata2String(pMeta->anchor->next);
						 if(anchor_next!=NULL) {
							XPTDEBUG(("Add.Item.Meta.Anchor.Next          = %s\n",anchor_next ));
							pcmditemlist->item->meta->anchor_next  = (char *)smlLibMalloc(smlLibStrlen(anchor_next));
							smlLibStrcpy(pcmditemlist->item->meta->anchor_next,anchor_next);
						 }
					}
				}
				if(psmlitemlist->item->data!=NULL){
						pcmditemlist->item->data_contentType=psmlitemlist->item->data->contentType;
						pcmditemlist->item->data_extension=psmlitemlist->item->data->extension;
						if(pcmditemlist->item->data_contentType==SML_PCDATA_EXTENSION)	{
							if(pcmditemlist->item->data_extension==SML_EXT_METINF)	{
									XPTDEBUG(("..............NOT SUPPORTED!!!.....ADD.ITEM.DATA..........." ));
							}
							else if(pcmditemlist->item->data_extension==SML_EXT_DEVINF)	{
									XPTDEBUG(("..............NOT SUPPORTED!!!.....ADD.ITEM.DATA..........." ));
							}
						}
						else{
							char*data = smlPcdata2String(psmlitemlist->item->data);
							if(data!=NULL){
								 XPTDEBUG(("Add.Item.Data     = %s\n", data));
								 pcmditemlist->item->data  = (char *)smlLibMalloc(smlLibStrlen(data));
								 smlLibStrcpy( (char*)pCmd->itemList->item->data,data);
								 
							}
					}
				}
			}
		psmlitemlist = psmlitemlist->next;
		}
	}
	pSess->InsertCmdItem(SML_PE_ADD,pCmd);
    return SML_ERR_OK;
}
Ret_t myHandleAlert(InstanceID_t id, VoidPtr_t userData, SmlAlertPtr_t pAlert)
{
	XPTDEBUG(("Calling %s() at %s:%d\n", "myHandleAlert", __FILE__, __LINE__));
	char * sessionID = (char*)userData ;
	CSyncSession * pSess =NULL;
	pSess = smgr.GetSession(sessionID);
	CmdAlert_s *pCmd = (CmdAlert_s *)smlLibMalloc(sizeof(CmdAlert_s));
	smlLibMemset(pCmd,0,(MemSize_t)sizeof(CmdAlert_s));
	//alert.cmdid
	char * cmdID = smlPcdata2String(pAlert->cmdID);
	if( cmdID!=NULL){
	  XPTDEBUG(("Alert.CmdID	      = %s\n", cmdID));
	  pCmd->cmdID  = (char *)smlLibMalloc(smlLibStrlen(cmdID));
	  smlLibStrcpy(pCmd->cmdID,cmdID);
	}
    //alert.data
	char * data = smlPcdata2String(pAlert->data);
	if( data!=NULL){
	  XPTDEBUG(("Alert.Data	      = %s\n", data));
	  pCmd->data  = (char *)smlLibMalloc(smlLibStrlen(data));
	  smlLibStrcpy(pCmd->data,data);
	}
    //alert.cred
	if(pAlert->cred!=NULL&&pAlert->cred->meta!=NULL){
		XPTDEBUG(("..............NOT SUPPORTED!!!.....ALERT.CRED.META..........." ));
	}
	if(pAlert->cred!=NULL&&pAlert->cred->data!=NULL){
		char *cred_data = smlPcdata2String(pAlert->cred->data);
		XPTDEBUG(("Alert.Cred.Data     = %s\n", cred_data));
		pCmd->cred_data  = (char *)smlLibMalloc(smlLibStrlen(cred_data));
	    smlLibStrcpy(pCmd->cred_data,cred_data);
	}

    XPTDEBUG(("Alert.Flags         = %d\n", pAlert->flags));
	pCmd->flags = pAlert->flags;

	if(pAlert->itemList!=NULL){
		SmlItemListPtr_t psmlitemlist = pAlert->itemList;
		CmdItemList_s * pcmditemlist = NULL; 
        //连接指针用
		int flag = 0;
		while(psmlitemlist!=NULL)	{
			//alert.item
			if(psmlitemlist->item!=NULL){
				//申请链表节点,第一个需特殊处理
				CmdItemList_s * pf = pcmditemlist;
				pcmditemlist = (CmdItemList_s *)smlLibMalloc(sizeof(CmdItemList_s));
				smlLibMemset(pcmditemlist,0,(MemSize_t)sizeof(CmdItemList_s));
				if(flag==0)	{
					flag = 1;
					pCmd->itemList = pcmditemlist;
				}
				else{
					pf->next = pcmditemlist;
				}
				
				//申请一个ITEM对象
				pcmditemlist->item = (CmdItem_s *)smlLibMalloc(sizeof(CmdItem_s));
				smlLibMemset(pcmditemlist->item,0,(MemSize_t)sizeof(CmdItem_s));
				//alert.item.target
				if(psmlitemlist->item->target!=NULL){
					//alert.item.target.locuri
					char*target_locURI = smlPcdata2String(psmlitemlist->item->target->locURI);
					if(target_locURI!=NULL){
					 	 XPTDEBUG(("Alert.Item.Target.locURI     = %s\n", target_locURI));
						 pcmditemlist->item->target_locURI  = (char *)smlLibMalloc(smlLibStrlen(target_locURI));
						 smlLibStrcpy( pcmditemlist->item->target_locURI,target_locURI);
					}
					//alert.item.target.locname
					char*target_locName = smlPcdata2String(psmlitemlist->item->target->locName);
					if(target_locName!=NULL){
						 XPTDEBUG(("Alert.Item.Target.locName     = %s\n", target_locName));
						 pcmditemlist->item->target_locName  = (char *)smlLibMalloc(smlLibStrlen(target_locName));
						 smlLibStrcpy( pcmditemlist->item->target_locName,target_locName);
					}
				}
				//alert.item.source
				if(psmlitemlist->item->source!=NULL){
					//alert.item.source.locuri
					char*source_locURI = smlPcdata2String(psmlitemlist->item->source->locURI);
					if(source_locURI!=NULL){
						 XPTDEBUG(("Alert.Item.Source.locURI     = %s\n", source_locURI));
						 pcmditemlist->item->source_locURI  = (char *)smlLibMalloc(smlLibStrlen(source_locURI));
						 smlLibStrcpy( pcmditemlist->item->source_locURI,source_locURI);
					}
					//alert.item.source.locname
					char*source_locName = smlPcdata2String(psmlitemlist->item->source->locName);
					if(source_locName!=NULL){
						 XPTDEBUG(("Alert.Item.Source.locName     = %s\n", source_locName));
						 pcmditemlist->item->source_locName  = (char *)smlLibMalloc(smlLibStrlen(source_locName));
						 smlLibStrcpy( pcmditemlist->item->source_locName,source_locName);
					}
				}
				//alert.item.meta
				if(psmlitemlist->item->meta!=NULL){
					 //当作METINF处理
					 pcmditemlist->item->meta  = (MetInf_s *)smlLibMalloc(sizeof(MetInf_s));
					 smlLibMemset(pcmditemlist->item->meta,0,(MemSize_t)sizeof(MetInf_s));
	 			 
					 SmlMetInfMetInfPtr_t pMeta = (SmlMetInfMetInfPtr_t )psmlitemlist->item->meta->content;
					 char * maxmsgsize = smlPcdata2String(pMeta->maxmsgsize);
					 if(maxmsgsize!=NULL) {
						XPTDEBUG(("Alert.Item.Meta.MaxMsgSize          = %s\n",maxmsgsize ));
						pcmditemlist->item->meta->maxmsgsize  = (char *)smlLibMalloc(smlLibStrlen(maxmsgsize));
						smlLibStrcpy(pcmditemlist->item->meta->maxmsgsize,maxmsgsize);
					 }

					 char * format = smlPcdata2String(pMeta->format);
					 if(format!=NULL) {
						XPTDEBUG(("Alert.Item.Meta.Format          = %s\n",format ));
						pcmditemlist->item->meta->format  = (char *)smlLibMalloc(smlLibStrlen(format));
						smlLibStrcpy(pcmditemlist->item->meta->format,format);
					 }
		
					 char * mark = smlPcdata2String(pMeta->mark);
					 if(mark!=NULL){
						XPTDEBUG(("Alert.Item.Meta.Mark          = %s\n",mark ));
						pcmditemlist->item->meta->mark  = (char *)smlLibMalloc(smlLibStrlen(mark));
						smlLibStrcpy(pcmditemlist->item->meta->mark,mark);
					 }

					 char * maxobjsize = smlPcdata2String(pMeta->maxobjsize);
					 if(maxobjsize!=NULL){
						XPTDEBUG(("Alert.Item.Meta.MaxObjSize          = %s\n",maxobjsize ));
						pcmditemlist->item->meta->maxobjsize  = (char *)smlLibMalloc(smlLibStrlen(maxobjsize));
						smlLibStrcpy(pcmditemlist->item->meta->maxobjsize,maxobjsize);
					 }

					 if(pMeta->mem!=NULL) {
						 char * mem_free = smlPcdata2String(pMeta->mem->free);
						 if(mem_free!=NULL) {
							XPTDEBUG(("Alert.Item.Meta.Mem.Free          = %s\n",mem_free ));
							pcmditemlist->item->meta->mem_free  = (char *)smlLibMalloc(smlLibStrlen(mem_free));
							smlLibStrcpy(pcmditemlist->item->meta->mem_free,mem_free);
						 }

						 char * mem_freeid = smlPcdata2String(pMeta->mem->freeid);
						 if(mem_freeid!=NULL){
							XPTDEBUG(("Alert.Item.Meta.Mem.FreeID          = %s\n",mem_freeid ));
							pcmditemlist->item->meta->mem_freeid  = (char *)smlLibMalloc(smlLibStrlen(mem_freeid));
							smlLibStrcpy(pcmditemlist->item->meta->mem_freeid,mem_freeid);
						 }
						 char * mem_shared = smlPcdata2String(pMeta->mem->shared);
						 if(mem_shared!=NULL){
							XPTDEBUG(("Alert.Item.Meta.Mem.Shared          = %s\n",mem_shared ));
							pcmditemlist->item->meta->mem_shared  = (char *)smlLibMalloc(smlLibStrlen(mem_shared));
							smlLibStrcpy(pcmditemlist->item->meta->mem_shared,mem_shared);
						 }
					 }

					 char * nextnonce = smlPcdata2String(pMeta->nextnonce);
					 if(nextnonce!=NULL) {
						XPTDEBUG(("Alert.Item.Meta.NextNonce          = %s\n",nextnonce ));
						pcmditemlist->item->meta->nextnonce  = (char *)smlLibMalloc(smlLibStrlen(nextnonce));
						smlLibStrcpy(pcmditemlist->item->meta->nextnonce,nextnonce);
					 }

					 char * size = smlPcdata2String(pMeta->nextnonce);
					 if(size!=NULL) {

⌨️ 快捷键说明

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