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

📄 callback_handler.cpp

📁 pimserver是syncml_vc开发包的服务器实例
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			 smlLibMemset(pCmd->meta->emi,0,(MemSize_t)sizeof(PcdataList_s));
			 char * data = smlPcdata2String(pMeta->emi->data);
			 if(data!=NULL) {
				XPTDEBUG(("Put.Meta.Emi.Data          = %s\n",data ));
				pCmd->meta->emi->data  = (char *)smlLibMalloc(smlLibStrlen(data));
				smlLibStrcpy(pCmd->meta->emi->data,data);
			 }
		 }
		 // put.meta.anchor
		 if(pMeta->anchor!=NULL) {
			 //put.meta.last
			 char * anchor_last = smlPcdata2String(pMeta->anchor->last);
			 if(anchor_last!=NULL) {
				XPTDEBUG(("Put.Meta.Anchor.Last          = %s\n",anchor_last ));
				pCmd->meta->anchor_last  = (char *)smlLibMalloc(smlLibStrlen(anchor_last));
				smlLibStrcpy(pCmd->meta->anchor_last,anchor_last);
			 }
			 //put.meta.next
			 char * anchor_next = smlPcdata2String(pMeta->anchor->next);
			 if(anchor_next!=NULL) {
				XPTDEBUG(("Put.Meta.Anchor.Next          = %s\n",anchor_next ));
				pCmd->meta->anchor_next  = (char *)smlLibMalloc(smlLibStrlen(anchor_next));
				smlLibStrcpy(pCmd->meta->anchor_next,anchor_next);
			 }
		 }
	}
	// PUT META处理完毕
	if(pPut->cred!=NULL&&pPut->cred->meta!=NULL) {
		XPTDEBUG(("..............NOT SUPPORTED!!!.....PUT.CRED.META..........." ));
	}
	//put.cred.data
	if(pPut->cred!=NULL&&pPut->cred->data!=NULL) {
		char *cred_data = smlPcdata2String(pPut->cred->data);
		XPTDEBUG(("Put.Cred.Data     = %s\n", cred_data));
		pCmd->cred_data  = (char *)smlLibMalloc(smlLibStrlen(cred_data));
	    smlLibStrcpy(pCmd->cred_data,cred_data);
	}
	//put.flag
    XPTDEBUG(("Put.Flags         = %d\n", pPut->flags));
	pCmd->flags = pPut->flags;
    //put.item
	if(pPut->itemList!=NULL) 
	{
		//pCmd->itemList = (CmdItemList_s *)smlLibMalloc(sizeof(CmdItemList_s));
		SmlItemListPtr_t psmlitemlist = pPut->itemList;
		CmdItemList_s * pcmditemlist = NULL;
		int flag = 0;
		while(psmlitemlist!=NULL) 
		{
			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));
				////////////////////////////////////////////
				//处理ITEM TARGET
				if(psmlitemlist->item->target!=NULL) 
				{
					char*target_locURI = smlPcdata2String(psmlitemlist->item->target->locURI);
					if(target_locURI!=NULL) {
						 XPTDEBUG(("Put.Item.Target.locURI     = %s\n", target_locURI));
						 pcmditemlist->item->target_locURI  = (char *)smlLibMalloc(smlLibStrlen(target_locURI));
						 smlLibStrcpy( pcmditemlist->item->target_locURI,target_locURI);
					}
					char*target_locName = smlPcdata2String(pPut->itemList->item->target->locName);
					if(target_locName!=NULL) {
					 	 XPTDEBUG(("Put.Item.Target.locName     = %s\n", target_locName));
						 pcmditemlist->item->target_locName  = (char *)smlLibMalloc(smlLibStrlen(target_locName));
						 smlLibStrcpy( pcmditemlist->item->target_locName,target_locName);
					}
				}
			
				if(psmlitemlist->item->source!=NULL) 
				{
					char*source_locURI = smlPcdata2String(psmlitemlist->item->source->locURI);
					if(source_locURI!=NULL) {
						 XPTDEBUG(("Put.Item.Source.locURI     = %s\n", source_locURI));
						 pcmditemlist->item->source_locURI  = (char *)smlLibMalloc(smlLibStrlen(source_locURI));
						 smlLibStrcpy( pcmditemlist->item->source_locURI,source_locURI);
					}
					char*source_locName = smlPcdata2String(psmlitemlist->item->source->locName);
					if(source_locName!=NULL) {
						 XPTDEBUG(("Put.Item.Source.locName     = %s\n", source_locName));
						 pcmditemlist->item->source_locName  = (char *)smlLibMalloc(smlLibStrlen(source_locName));
						 smlLibStrcpy( pcmditemlist->item->source_locName,source_locName);
					}
				}
				if(psmlitemlist->item->meta!=NULL) 
				{
					 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;
					 //put.item.meta.maxmsgsize
					 char * maxmsgsize = smlPcdata2String(pMeta->maxmsgsize);
					 if(maxmsgsize!=NULL) {
						XPTDEBUG(("Put.Item.Meta.MaxMsgSize          = %s\n",maxmsgsize ));
						pcmditemlist->item->meta->maxmsgsize  = (char *)smlLibMalloc(smlLibStrlen(maxmsgsize));
						smlLibStrcpy(pcmditemlist->item->meta->maxmsgsize,maxmsgsize);
					 }
					 //put.item.meta.format
					 char * format = smlPcdata2String(pMeta->format);
					 if(format!=NULL) {
						XPTDEBUG(("Put.Item.Meta.Format          = %s\n",format ));
						pcmditemlist->item->meta->format  = (char *)smlLibMalloc(smlLibStrlen(format));
						smlLibStrcpy(pcmditemlist->item->meta->format,format);
					 }
					 //put.item.meta.mark
					 char * mark = smlPcdata2String(pMeta->mark);
					 if(mark!=NULL) {
						XPTDEBUG(("Put.Item.Meta.Mark          = %s\n",mark ));
						pcmditemlist->item->meta->mark  = (char *)smlLibMalloc(smlLibStrlen(mark));
						smlLibStrcpy(pcmditemlist->item->meta->mark,mark);
					 }
					 //put.item.meta.maxmsgsize
					 char * maxobjsize = smlPcdata2String(pMeta->maxobjsize);
					 if(maxobjsize!=NULL) {
						XPTDEBUG(("Put.Item.Meta.MaxObjSize          = %s\n",maxobjsize ));
						pcmditemlist->item->meta->maxobjsize  = (char *)smlLibMalloc(smlLibStrlen(maxobjsize));
						smlLibStrcpy(pcmditemlist->item->meta->maxobjsize,maxobjsize);
					 }
					 //put.item.meta.mem
					 if(pMeta->mem!=NULL) {
						 //put.item.meta.mem.free
						 char * mem_free = smlPcdata2String(pMeta->mem->free);
						 if(mem_free!=NULL) {
							XPTDEBUG(("Put.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);
						 }
						 //put.item.meta.mem.freeid
						 char * mem_freeid = smlPcdata2String(pMeta->mem->freeid);
						 if(mem_freeid!=NULL) {
							XPTDEBUG(("Put.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);
						 }
						 //put.item.meta.mem.shared
						 char * mem_shared = smlPcdata2String(pMeta->mem->shared);
						 if(mem_shared!=NULL) {
							XPTDEBUG(("Put.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);
						 }
					 }
					 //put.item.meta.nextnonce
					 char * nextnonce = smlPcdata2String(pMeta->nextnonce);
					 if(nextnonce!=NULL) {
						XPTDEBUG(("Put.Item.Meta.NextNonce          = %s\n",nextnonce ));
						pcmditemlist->item->meta->nextnonce  = (char *)smlLibMalloc(smlLibStrlen(nextnonce));
						smlLibStrcpy(pcmditemlist->item->meta->nextnonce,nextnonce);
					 }
					 //put.item.meta.nextnonce
					 char * size = smlPcdata2String(pMeta->size);
					 if(size!=NULL)	 {
						XPTDEBUG(("Put.Item.Meta.Size          = %s\n",size ));
						pcmditemlist->item->meta->size  = (char *)smlLibMalloc(smlLibStrlen(size));
						smlLibStrcpy(pcmditemlist->item->meta->size,size);
					 }
					 //put.item.meta.type
					 char * type = smlPcdata2String(pMeta->type);
					 if(type!=NULL) {
						XPTDEBUG(("Put.Item.Meta.Type          = %s\n",type ));
						pcmditemlist->item->meta->type  = (char *)smlLibMalloc(smlLibStrlen(type));
						smlLibStrcpy(pcmditemlist->item->meta->type,type);
					 }
					 //put.item.meta.version
					 char * version = smlPcdata2String(pMeta->version);
					 if(version!=NULL) {
						XPTDEBUG(("Put.Item.Meta.Version          = %s\n",version ));
						pcmditemlist->item->meta->version  = (char *)smlLibMalloc(smlLibStrlen(version));
						smlLibStrcpy(pcmditemlist->item->meta->version,version);
					 }

					 //put.item.meta.emi
					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(("Put.Item.Meta.Emi.Data          = %s\n",data ));
							pcmditemlist->item->meta->emi->data  = (char *)smlLibMalloc(smlLibStrlen(data));
							smlLibStrcpy(pcmditemlist->item->meta->emi->data,data);
						 }
				
					}
					////put.item.meta.anchor
					if(pMeta->anchor!=NULL)	{
						//put.item.meta.anchor.last
						 char * anchor_last = smlPcdata2String(pMeta->anchor->last);
						 if(anchor_last!=NULL) {
							XPTDEBUG(("Put.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);
						 }
						 ////put.item.meta.anchor.next
						 char * anchor_next = smlPcdata2String(pMeta->anchor->next);
						 if(anchor_next!=NULL) {
							XPTDEBUG(("Put.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);
						 }
					}
				}
				
				//////////////////处理PUT ITEM DATA
				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)	{
						
						}
						else if(pcmditemlist->item->data_extension==SML_EXT_DEVINF)	
						{
							 pcmditemlist->item->data  = (CmdDevInfDevInf_s *)smlLibMalloc(sizeof(CmdDevInfDevInf_s));
							 CmdDevInfDevInf_s* pdata = (CmdDevInfDevInf_s *) pcmditemlist->item->data;
							 smlLibMemset(pdata,0,(MemSize_t)sizeof(CmdDevInfDevInf_s));
							 SmlDevInfDevInfPtr_t pDev = (SmlDevInfDevInfPtr_t )psmlitemlist->item->data->content;
							 char * verdtd = smlPcdata2String(pDev->verdtd);
							 if(verdtd!=NULL)	 {
								XPTDEBUG(("Put.Item.Data.VerDTD          = %s\n",verdtd ));
								pdata->verdtd  = (char *)smlLibMalloc(smlLibStrlen(verdtd));
								smlLibStrcpy(pdata->verdtd,verdtd);
							 }

							 char * man = smlPcdata2String(pDev->man);
							 if(verdtd!=NULL)	 {
								XPTDEBUG(("Put.Item.Data.Man          = %s\n",man ));
								pdata->man  = (char *)smlLibMalloc(smlLibStrlen(man));
								smlLibStrcpy(pdata->man,man);
							 }
							 char * mod = smlPcdata2String(pDev->mod);
							 if(mod!=NULL)	 {
								XPTDEBUG(("Put.Item.Data.Mod          = %s\n",mod ));
								pdata->mod  = (char *)smlLibMalloc(smlLibStrlen(mod));
								smlLibStrcpy(pdata->mod,mod);
							 }
						
							 char * swv = smlPcdata2String(pDev->swv);
							 if(swv!=NULL)	 {
								XPTDEBUG(("Put.Item.Data.SwV          = %s\n",swv ));
								pdata->swv  = (char *)smlLibMalloc(smlLibStrlen(swv));
								smlLibStrcpy(pdata->swv,swv);
							 }
							 char * devid = smlPcdata2String(pDev->devid);
							 if(devid!=NULL)	 {
								XPTDEBUG(("Put.Item.Data.DevID          = %s\n",devid ));
								pdata->devid  = (char *)smlLibMalloc(smlLibStrlen(devid));
								smlLibStrcpy(pdata->devid,devid);
							 }

							 char * devtyp = smlPcdata2String(pDev->devtyp);
							 if(devtyp!=NULL) {
								XPTDEBUG(("Put.Item.Data.DevTyp          = %s\n",devtyp ));
								pdata->devtyp  = (char *)smlLibMalloc(smlLibStrlen(devtyp));
								smlLibStrcpy(pdata->devtyp,devtyp);
							 }

							 pdata->flags  = pDev->flags;
							 XPTDEBUG(("Put.Item.Data.Flag          = %d\n",pdata->flags ));

							 char * oem = smlPcdata2String(pDev->oem);
							 if(oem!=NULL) {
								XPTDEBUG(("Put.Item.Data.Oem          = %s\n",oem ));
								pdata->oem  = (char *)smlLibMalloc(smlLibStrlen(oem));
								smlLibStrcpy(pdata->oem,oem);
							 }

							 char * hwv = smlPcdata2String(pDev->hwv);
							 if(hwv!=NULL) {
								XPTDEBUG(("Put.Item.Data.HwV          = %s\n",hwv ));
								pdata->hwv  = (char *)smlLibMalloc(smlLibStrlen(hwv));
								smlLibStrcpy(pdata->hwv,hwv);
							 }
							
							 char * fwv = smlPcdata2String(pDev->fwv);
							 if(fwv!=NULL) {
								XPTDEBUG(("Put.Item.Data.FwV          = %s\n",fwv ));
								pdata->fwv  = (char *)smlLibMalloc(smlLibStrlen(fwv));
								smlLibStrcpy(pdata->fwv,fwv);
							 }
							 
							 if(pDev->ext!=NULL&&pDev->ext->data!=NULL) {
								 pdata->ext = (CmdDevInfExtList_s *)smlLibMalloc(sizeof(CmdDevInfExtList_s));
								 smlLibMemset( pdata->ext,0,(MemSize_t)sizeof(CmdDevInfExtList_s));
								 pdata->ext->data = (CmdDevInfExt_s *)smlLibMalloc(sizeof(CmdDevInfExt_s));
								 smlLibMemset( pdata->ext->data,0,(Mem

⌨️ 快捷键说明

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