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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cbse_killmessage.c

?? CBS(小區(qū)廣播)程序實現(xiàn)手稿
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "..\sys\Include.h"


/* 返回確認消息給CBC_proxy */
int Process_Kill_Message_Return(PID_t s_Pid,unsigned char cNumberOfReturnMessage);


/* KillMessage 初始化 */
int Process_Kill_Message_init(KILLMESSAGE_t *s_KillMessage);

/* 發(fā)送消息給BSC
   發(fā)送失敗小區(qū)列表給CBC_Proxy */
int Process_Send_KillMessage_To_BSC(PID_t s_Pid, DIVIDE_CELLLIST_BUF_t *s_DivideCellListBuf);

//刪除預約消息
int process_Delete_Schedual_Message(PID_t s_OriginalPid,PID_t s_NewPid);


int Process_CBSE_KILL_MESSAGE(unsigned char *MessageBuf,PID_t s_Pid)
{
	int                      iReturnValue;
	KILLMESSAGE_t            *LPm_KillMessage;
	PID_t                    s_OriginalPid;
	int                      iRelativeTime;
	long                     lCurrentTime;  
	//拆分小區(qū)緩沖區(qū)
	DIVIDE_CELLLIST_BUF_t    s_DivideCellListBuf;
	CELLID_t                 s_CellId;
	KILL_PROCESS_DATA_STRUCT *LPs_KillProcessDataStruct;
	CELLLIST_i               s_FailureList; 
//    WRITEREPLACE_PROCESS_DATA_STRUCT  *LPs_WriteReplaceProcessDataStruct;
	int  i,j;

	memset(&s_DivideCellListBuf,0,sizeof(DIVIDE_CELLLIST_BUF_t));
	memset(&s_FailureList,0,sizeof(CELLLIST_i));

	memset(&ProcessData[s_Pid.iProcessId][0],0,LPCB_DATA_SIZE);

	/* 填寫返回類型 */
	LPs_KillProcessDataStruct=(KILL_PROCESS_DATA_STRUCT *)&ProcessData[s_Pid.iProcessId][0];
	
	LPs_KillProcessDataStruct->cResponseType=CBCPROXY_REPORT_KILL;

	/* 數(shù)據(jù)拷貝到進程數(shù)據(jù)區(qū) */
	memcpy(&LPs_KillProcessDataStruct->s_CBCMessage,MessageBuf,sizeof(CBEMESSAGE_t));
	
	/* 去掉MessageHead */
	LPm_KillMessage=(KILLMESSAGE_t *)&LPs_KillProcessDataStruct->s_CBCMessage.cMessage[0];

#ifdef DEBUG_PRINT 
	Print_Kill(s_Pid,LPm_KillMessage,LPs_KillProcessDataStruct->s_CBCMessage.s_MessageHead.s_ReceiverPid);
#endif

	/* 判斷參數(shù) */
	iReturnValue=Process_Kill_Message_init(LPm_KillMessage);
	if (iReturnValue<0)
	{
		return iReturnValue;
	}

	
	/* 構造響應結果 */
    iReturnValue=Process_Divide_CellList_AccordingToResponse(&LPm_KillMessage->p_CellList,
		0,&s_FailureList,&s_CellId);
	if (iReturnValue<0)
	{
		return iReturnValue;
	}

	memcpy(&LPs_KillProcessDataStruct->s_FailureList ,
		&s_FailureList,sizeof(CELLLIST_i));
	
    /* 從響應列表得到拆分列表 */
    Process_Get_DividedCellList_from_ResponseCellList(&s_FailureList,&s_DivideCellListBuf);

    /* 標志是否等待響應 */
	IfNeedResponse(&LPs_KillProcessDataStruct->s_FailureList,&s_DivideCellListBuf);


	/* 此時用s_DivideCellListBuf.s_CellListOfBSC,
	  不用s_ResponseCellList.cNumberOfBSC 
      前者可能小于后者              */
	LPs_KillProcessDataStruct->cNoOfResponseReq=s_DivideCellListBuf.cNumberOfCellList;

	/* 小區(qū)全失敗 */
	if (LPs_KillProcessDataStruct->cNoOfResponseReq==0)
	{
		return ALL_CELLS_NOT_AVAILABLE;
	}

	/* 兩個記錄定時器的ID都置為-1 */
	LPs_KillProcessDataStruct->iTimerId=-1;
	LPs_KillProcessDataStruct->iLifeTimerId=-1;


	//是否刪除預約發(fā)送
	if (LPm_KillMessage->p_BeginTime.bFlag==EXIST)
	{
		time(&lCurrentTime);
		lCurrentTime=lCurrentTime-TimeZone;
		iRelativeTime=LPm_KillMessage->p_BeginTime.lTime-lCurrentTime;

        if (iRelativeTime<0)
		{
			/* 已發(fā)送,直接發(fā)消息到BSC */

			/* 返回確認給CBC_Proxy */
			Process_Kill_Message_Return(s_Pid,s_DivideCellListBuf.cNumberOfCellList);

			/* 發(fā)送消息給BSC */
			Process_Send_KillMessage_To_BSC(s_Pid, &s_DivideCellListBuf);    

			/* 創(chuàng)建回復定時器 */
			iReturnValue=create_timer(KILL_RETURN_DELAY_TIME,
				KILL_RETURN_TO_CBC_PROXY,(char *)&s_Pid,NULL);
			/* 創(chuàng)建定時器失敗 */
			//sys
			if (iReturnValue<0)
			{
				printf("Create timer Error!\n");
				return iReturnValue;
			}
			else
			{
				LPs_KillProcessDataStruct->iTimerId=iReturnValue;
				return CONTINUANCE;
			}

		}
		else
		{
			/* 未發(fā)送,在進程區(qū) */
			memcpy(&s_OriginalPid,&LPs_KillProcessDataStruct->s_CBCMessage.s_MessageHead.s_ReceiverPid,sizeof(PID_t));
			iReturnValue=process_Delete_Schedual_Message(s_OriginalPid,s_Pid);
			if (iReturnValue<0)
				return iReturnValue;

			/* 完成列表全置0 */
/*			
            LPs_WriteReplaceProcessDataStruct=(WRITEREPLACE_PROCESS_DATA_STRUCT *)&ProcessData[s_OriginalPid.iProcessId][0];

			LPs_KillProcessDataStruct->s_NoofBroadcastComlList.bFlag=1;
			for (i=0;i<LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.cNumberOfBSC;i++)
			{
				LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].ilength=
					LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].ilength;

				memcpy(&LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].BSCIdentifier[0],
					&LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].BSCIdentifier[0],BSC_INDENTIFIER_LEN);

				for(j=0;j<LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].ilength;j++)
				{
					memcpy(&LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].s_NoOfBroadcastComl[j].s_Cellid.cCellId[0],
						&LPs_WriteReplaceProcessDataStruct->s_ResponseCellList.s_BSCCellList[i].s_CellReport[j].s_CellId.cCellId[0],4);
				}

				LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC++;
			}
*/
			/* 完成列表全置0 */
			/* 完成列表為該刪除消息的小區(qū) */
			LPs_KillProcessDataStruct->s_NoofBroadcastComlList.bFlag=1;
			for (i=0;i<LPs_KillProcessDataStruct->s_FailureList.cNumberOfBSC;i++)
			{
				LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].ilength=
					LPs_KillProcessDataStruct->s_FailureList.s_BSCCellList[i].ilength;

				memcpy(&LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].BSCIdentifier[0],
					&LPs_KillProcessDataStruct->s_FailureList.s_BSCCellList[i].BSCIdentifier[0],BSC_INDENTIFIER_LEN);

				for(j=0;j<LPs_KillProcessDataStruct->s_FailureList.s_BSCCellList[i].ilength;j++)
				{
					memcpy(&LPs_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC].s_NoOfBroadcastComl[j].s_Cellid.cCellId[0],
						&LPs_KillProcessDataStruct->s_FailureList.s_BSCCellList[i].s_CellReport[j].s_CellId.cCellId[0],4);
				}

				LPs_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC++;
			}

			/* 進程區(qū)消息無失敗列表 */
			memset(&LPs_KillProcessDataStruct->s_FailureList,0,sizeof(CELLLIST_i));

            /*
			  成功后確認0 
			  返回確認給CBC_Proxy
			*/
			Process_Kill_Message_Return(s_Pid,0);
			
			/* 返回全部響應 */
        	Process_KillMessage_Return_To_CBCProxy(s_Pid);
			
			return END;
		}

	}
	else
	{
		//正常刪除消息
		//返回確認給CBC_Proxy
		Process_Kill_Message_Return(s_Pid,s_DivideCellListBuf.cNumberOfCellList);
		/* 發(fā)送消息給BSC */
		
		Process_Send_KillMessage_To_BSC(s_Pid, &s_DivideCellListBuf);    
		
		/* 創(chuàng)建回復定時器 */
		iReturnValue=create_timer(KILL_RETURN_DELAY_TIME,
		KILL_RETURN_TO_CBC_PROXY,(char *)&s_Pid,NULL);
		//創(chuàng)建定時器失敗
		//sys
		if (iReturnValue<0)
		{
			printf("Create timer Error!\n");
			return iReturnValue;
		}
		else
		{
			LPs_KillProcessDataStruct->iTimerId=iReturnValue;
			return CONTINUANCE;
		}

	}
	
}

//KillMessage 初始化
int Process_Kill_Message_init(KILLMESSAGE_t *s_KillMessage)
{
	//檢查必備參數(shù)

	if (s_KillMessage->p_MessageIdentifier.bFlag!=EXIST)
	{
		return NO_MESSAGE_IDENTIFIER;
	}

	if (s_KillMessage->p_OldSerialnumber.bFlag!=EXIST)
	{
		return NO_OLD_SERIAL_NUMBER;
	}

	if (s_KillMessage->p_CellList.bFlag!=EXIST)
	{
		return NO_CELLLIST;
	}


	//檢查參數(shù)內容

	//檢查小區(qū)識別器CellIdDisc
	if ((s_KillMessage->p_CellList.cCellIdDisc!=1)&&
		(s_KillMessage->p_CellList.cCellIdDisc!=2)&&
		(s_KillMessage->p_CellList.cCellIdDisc!=5)&&
		(s_KillMessage->p_CellList.cCellIdDisc!=6))
	{
		return CELLIDDISC_OUTOFRANG;
	}

	//對于必備參數(shù)不用判斷其存在
	//檢查小區(qū)數(shù)目
	if ((s_KillMessage->p_CellList.iLength<=0)||(s_KillMessage->p_CellList.iLength>MAXCELLCOUNT))
	{
		return NUMBEROFCELL_ERROR;
	}

	//檢查信道指示
	if (s_KillMessage->p_ChannelIndicator.bFlag==EXIST)
	{
		if(s_KillMessage->p_ChannelIndicator.cChannelIndicator>1)
		{
			return NUMBEROFCELL_ERROR;
		}
	}

	return SUCCESS;
}

//返回確認消息給CBC_proxy
int Process_Kill_Message_Return(PID_t s_Pid,unsigned char cNumberOfReturnMessage)
{
    CBEMESSAGE_t               s_CBEMessage;
//	CBEMESSAGE_t               *LPCBEMessage;
	KILLMESSAGE_t              *LP_mKillMessage; 
    SENDING_MESSAGE_CONFIRM_i  s_MessageConfirm;
	MESSAGE_HEAD_t             *LPMessageHead;

	memset(&s_MessageConfirm,0,sizeof(MESSAGE_CONFIRM_i));
	memset(&s_CBEMessage,0,sizeof(CBEMESSAGE_t));

	LPMessageHead=(MESSAGE_HEAD_t *)&ProcessData[s_Pid.iProcessId][sizeof(short)];
	LP_mKillMessage=(KILLMESSAGE_t *)&ProcessData[s_Pid.iProcessId][(sizeof(MESSAGE_HEAD_t)+sizeof(short))];

	s_MessageConfirm.s_MessageHead.iMessageAreaId=A;
	s_MessageConfirm.s_MessageHead.iMessageType=LPMessageHead->iMessageType;
	memcpy(&s_MessageConfirm.s_MessageHead.s_ReceiverPid,&LPMessageHead->s_SenderPid,sizeof(PID_t));
    memcpy(&s_MessageConfirm.s_MessageHead.s_SenderPid,&s_Pid,sizeof(PID_t));
	s_MessageConfirm.s_MessageHead.iMessageLength=sizeof(int)+sizeof(MESSAGEIDENTIFIER_t)+sizeof(SERIALNUMBER_t);
	s_MessageConfirm.NumberOfReturnMessage=cNumberOfReturnMessage;

	s_CBEMessage.iLen=s_MessageConfirm.s_MessageHead.iMessageLength+sizeof(MESSAGE_HEAD_t);


	memcpy(&s_CBEMessage.s_MessageHead,&s_MessageConfirm.s_MessageHead,sizeof(MESSAGE_HEAD_t));
    
	memcpy(&s_MessageConfirm.p_MessageIdentifier,&LP_mKillMessage->p_MessageIdentifier,sizeof(MESSAGEIDENTIFIER_t));

	memcpy(&s_MessageConfirm.p_Serialnumber,&LP_mKillMessage->p_OldSerialnumber,sizeof(SERIALNUMBER_t));

	memcpy(&s_CBEMessage.cMessage[0],&s_MessageConfirm.NumberOfReturnMessage,s_MessageConfirm.s_MessageHead.iMessageLength);
    

#ifdef DEBUG_PRINT
    printf("Return Kill confirm to CBCProxy.ConfirmValue=%d\n",cNumberOfReturnMessage); 
	printf("Return Kill confirm to CBCProxy.SerialNumber=%d\n",LP_mKillMessage->p_OldSerialnumber.iSerialNumber); 
#endif
	AppendCBESendMessage(&s_CBEMessage);

	return SUCCESS;
}

/*
//處理定時KillMessage
int Process_Scheduled_KillMessage(PID_t s_Pid)
{
	int iReturnValue;
    //
	KILLMESSAGE_t *LPKillMessage;

	//拆分小區(qū)緩沖區(qū)
	DIVIDE_CELLLIST_BUF_t  s_DivideCellListBuf;

	memset(&s_DivideCellListBuf,0,sizeof(DIVIDE_CELLLIST_BUF_t));

	//去掉MessageHead
	LPKillMessage=(KILLMESSAGE_t *)&ProcessData[s_Pid.iProcessId][(sizeof(MESSAGE_HEAD_t)+sizeof(short))];


	//分配小區(qū)路由
	//
    Process_Divide_CellList_EX(&LPKillMessage->p_CellList,&s_DivideCellListBuf);
	
    //發(fā)送消息給BSC
    //發(fā)送失敗小區(qū)列表給CBC_Proxy
    Process_Send_KillMessage_To_BSC(s_Pid, &s_DivideCellListBuf);


	//釋放進程
	iReturnValue=free_pid((char *)&s_Pid);
	if (iReturnValue<0)
	{
		//sys error
		printf("Warning! Free Pid Error.pid=%d\n",s_Pid.iProcessId);
		return iReturnValue;
	}

	return SUCCESS;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜激情欧洲亚洲| 国产精品你懂的在线欣赏| av午夜精品一区二区三区| 久久国产精品第一页| 丝袜美腿亚洲色图| 香蕉久久一区二区不卡无毒影院| 亚洲欧美电影院| 亚洲品质自拍视频| 亚洲精品免费在线观看| 综合久久国产九一剧情麻豆| 中文字幕中文字幕在线一区| 欧美国产综合色视频| 国产色产综合产在线视频| 日韩欧美一级在线播放| 日韩欧美色综合网站| 日韩一区二区电影在线| 精品少妇一区二区| 精品免费日韩av| 日韩精品一区二区三区在线| 日韩免费电影网站| 亚洲精品一区在线观看| 久久先锋资源网| 国产欧美一区二区在线观看| 国产欧美一区二区在线| 成人欧美一区二区三区1314| 亚洲美女屁股眼交3| 日日夜夜一区二区| 老司机免费视频一区二区三区| 国内精品国产成人国产三级粉色| 国产精品资源在线看| 成人激情视频网站| 色吊一区二区三区| 欧美美女视频在线观看| 日韩区在线观看| 久久久久久久久久久99999| 国产精品久久久久久久久快鸭 | 国产三级精品三级| 国产精品高潮呻吟| 亚洲一区在线视频| 奇米影视一区二区三区小说| 韩国精品主播一区二区在线观看 | 免费成人小视频| 国产成人精品影视| 欧美综合久久久| 日韩精品一区国产麻豆| 国产婷婷色一区二区三区四区| 中文字幕综合网| 天堂蜜桃一区二区三区| 国产伦精一区二区三区| 色综合欧美在线视频区| 日韩精品一区二区三区在线观看| 国产精品久久久久久久久快鸭| 五月激情综合婷婷| 国产精品77777竹菊影视小说| 在线视频你懂得一区二区三区| 欧美成人精品高清在线播放| 国产精品进线69影院| 日韩成人免费电影| av网站一区二区三区| 日韩一区二区中文字幕| 亚洲欧洲性图库| 美女一区二区视频| 波多野结衣精品在线| 在线观看91av| 成人欧美一区二区三区黑人麻豆| 精油按摩中文字幕久久| 日本道色综合久久| 久久综合色之久久综合| 一区二区三区不卡视频| 国产精品综合在线视频| 3atv一区二区三区| 亚洲卡通动漫在线| 韩国女主播成人在线观看| 欧美男男青年gay1069videost| 国产精品卡一卡二卡三| 久久成人综合网| 欧美色视频在线观看| 国产精品久久国产精麻豆99网站| 九九在线精品视频| 欧美猛男男办公室激情| 一区二区三区欧美在线观看| 成人高清视频在线观看| 国产性色一区二区| 久久精品99国产精品| 欧美日韩第一区日日骚| 亚洲欧美色一区| 成人黄色电影在线 | 日韩精品一区国产麻豆| 亚洲国产精品一区二区尤物区| 成人免费视频网站在线观看| 精品欧美一区二区久久| 日韩1区2区日韩1区2区| 欧美日韩国产影片| 一区二区三区在线影院| 色综合天天综合| 国产精品欧美一区喷水| 国产主播一区二区| 日韩午夜av电影| 日韩电影一区二区三区四区| 色国产综合视频| 亚洲欧美日韩小说| 99国产精品国产精品毛片| 欧美国产欧美综合| 成人免费av资源| 中文字幕 久热精品 视频在线| 国产91清纯白嫩初高中在线观看| 精品久久久久久久久久久久久久久 | 91在线视频播放| 国产精品无人区| av激情综合网| 国产精品蜜臀在线观看| 波多野结衣精品在线| 1区2区3区国产精品| eeuss国产一区二区三区| 亚洲国产精品成人综合色在线婷婷 | 日本中文字幕一区二区有限公司| 欧美性高清videossexo| 亚洲国产欧美日韩另类综合| 欧美手机在线视频| 亚洲一区二区三区四区在线观看 | 亚洲视频资源在线| 一本久久a久久精品亚洲| 一区二区三区免费看视频| 色av综合在线| 亚洲国产视频直播| 欧美一区二区福利在线| 韩国成人精品a∨在线观看| 久久久一区二区三区捆绑**| 成人性视频免费网站| 亚洲三级在线看| 欧美日韩一区二区不卡| 蜜臀精品久久久久久蜜臀 | 一区二区三区日韩| 91麻豆精品国产综合久久久久久| 蜜臀久久久久久久| 国产女人水真多18毛片18精品视频 | 国产精品亚洲一区二区三区在线| 欧美国产日韩a欧美在线观看| 一本一道久久a久久精品| 亚洲va韩国va欧美va| 日韩你懂的在线观看| 国产成人免费9x9x人网站视频| 一区二区三区精品在线| 337p亚洲精品色噜噜狠狠| 国产精品中文字幕日韩精品| 成人免费一区二区三区视频 | 国产精品毛片大码女人| 在线日韩一区二区| 国产在线日韩欧美| 亚洲免费资源在线播放| 欧美一区二视频| 国产成人aaaa| 五月综合激情网| 久久久欧美精品sm网站| 色呦呦网站一区| 久久激情五月激情| 亚洲三级电影网站| 日韩女优电影在线观看| 91一区二区在线| 美国三级日本三级久久99 | 99久久国产综合色|国产精品| 亚洲福利电影网| 国产欧美一区二区在线| 欧美日韩免费观看一区三区| 国产精品一区二区在线观看网站| 亚洲大片在线观看| 国产亚洲综合色| 欧美日韩电影在线播放| 大美女一区二区三区| 免费在线视频一区| 亚洲视频中文字幕| 久久久精品欧美丰满| 欧美福利电影网| 91美女片黄在线观看91美女| 国产一区不卡在线| 日韩av一级电影| 亚洲乱码国产乱码精品精的特点| 久久久久97国产精华液好用吗| 欧美二区乱c少妇| 色综合久久中文综合久久97| 国产一区二区三区不卡在线观看| 一区二区三区不卡在线观看| 中文字幕av不卡| 精品国产乱码久久久久久久久| 欧美麻豆精品久久久久久| 91色综合久久久久婷婷| 国产成人综合在线| 美女www一区二区| 日韩—二三区免费观看av| 亚洲男人的天堂一区二区| 国产精品全国免费观看高清| 精品国产91乱码一区二区三区| 欧美三级日韩在线| 色综合久久久久综合体桃花网| 国产传媒欧美日韩成人| 国产美女视频91| 国内精品伊人久久久久影院对白| 日韩成人午夜精品| 日韩精品免费专区| 香蕉成人伊视频在线观看|