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

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

?? cbse_killmessage.c

?? CBS(小區廣播)程序實現手稿
?? C
?? 第 1 頁 / 共 2 頁
字號:
*/

/*
   發送消息給BSC
*/
int Process_Send_KillMessage_To_BSC(PID_t s_Pid, DIVIDE_CELLLIST_BUF_t *s_DivideCellListBuf)
{
    int             len;
	char            *BSCID;
	KILLMESSAGE_t   s_KillMessage;  
	BSCMESSAGE_t    s_BSCMessage;
	int             i,j;
	int             Tid;
	CBEMESSAGE_t    *LPCBEMessage;
	//報告失敗列表參數
//	REPORTSUCCESS_t s_Report;
//	CBEMESSAGE_t    s_CBEMessage;
//	CBEMESSAGE_t    s_CBCProxyMessage;


	memcpy(&s_KillMessage,&ProcessData[s_Pid.iProcessId][(sizeof(short)+sizeof(MESSAGE_HEAD_t))],sizeof(KILLMESSAGE_t));
	
	LPCBEMessage=(CBEMESSAGE_t *)&ProcessData[s_Pid.iProcessId][0];

	for(i=0;i<s_DivideCellListBuf->cNumberOfCellList;i++) 
	{
		memset(&s_BSCMessage,0,sizeof(BSCMESSAGE_t));

		memcpy(&s_KillMessage.p_CellList,&s_DivideCellListBuf->s_CellListOfBSC[i].s_CellList,sizeof(CELLLIST_t));
		len=Pack_KILL_MESSAGE(&s_KillMessage,&s_BSCMessage.cMessage[0]);
		
		if (len>0)
		{
			s_BSCMessage.iLen=len;

			BSCID=&s_DivideCellListBuf->s_CellListOfBSC[i].BSCIdentifier[0];
            Tid=GetTid(BSCID);


			if (Tid!=FAILURE)
			{
				/* 小區KILL操作次數加 1 */
				for(j=0;j<s_KillMessage.p_CellList.iLength;j++)
				{
#ifdef  OPEN_STATISTIC
					Update_Cell_Statistic_Count(&s_KillMessage.p_CellList.s_CellList[j].cCellId[0],Tid,KILL_STATISTIC,0,0);
#endif
				}

				memcpy(&s_BSCMessage.s_Pid,&s_Pid,sizeof(PID_t));

#ifdef  OPEN_STATISTIC			
			s_CBSECount.s_ReqBSCCnt[Tid].iCBCProxyKillReqCnt++;
#endif

				/* 發送給BSC */
				X25AppendCBESendMessage(&s_BSCMessage, Tid);
					
			}
		}

	}
#ifdef DEBUG_PRINT
            printf("Send KillMessage to BSC. Pid=%d\n",s_Pid.iProcessId); 
#endif

/*
	if (s_DivideCellListBuf->s_FailureList.bFlag==EXIST)
	{
		//報告失敗列表給Cbc_proxy
		memset(&s_Report,0,sizeof(REPORTSUCCESS_t));
		memset(&s_CBEMessage,0,sizeof(CBEMESSAGE_t));
	
		memcpy(&s_Report.p_MessageIdentifier,&s_KillMessage.p_MessageIdentifier,sizeof(MESSAGEIDENTIFIER_t));
		memcpy(&s_Report.p_Serialnumber,&s_KillMessage.p_OldSerialnumber,sizeof(SERIALNUMBER_t));
		memcpy(&s_Report.p_FailureReportList,&s_DivideCellListBuf->s_FailureList,sizeof(FAILURELIST_t));

		if (s_KillMessage.p_ChannelIndicator.bFlag==EXIST)
		{
			memcpy(&s_Report.p_ChannelIndicator,&s_KillMessage.p_ChannelIndicator,sizeof(CHANNELINDICATOR_t));
		}

		s_CBEMessage.s_MessageHead.iMessageAreaId=A;
		//CBSE_REPORT_SUCCESS
		s_CBEMessage.s_MessageHead.iMessageType=3;

		s_CBEMessage.s_MessageHead.s_SenderPid.cFunctionId=FUNCTIONID;
		s_CBEMessage.s_MessageHead.s_SenderPid.cModuleId=MODULEID;
		s_CBEMessage.s_MessageHead.iMessageLength=sizeof(REPORTSUCCESS_t);
		s_CBEMessage.iLen=sizeof(MESSAGE_HEAD_t)+s_CBEMessage.s_MessageHead.iMessageLength;
		memcpy(&s_CBEMessage.cMessage[0],(char *)&s_Report,s_CBEMessage.s_MessageHead.iMessageLength);
//		s_CBEMessage.SocketHandle=LPCBEMessage->SocketHandle;

		memset(&s_CBCProxyMessage,0,sizeof(CBEMESSAGE_t));
        Convert_Response(&s_CBEMessage,&s_CBCProxyMessage);		
		AppendCBESendMessage(&s_CBCProxyMessage);
	}
*/

	return SUCCESS;

}

//將列表轉為標準格式,用于KillMessage
//in:   s_CBEMessage Cbcproxy發送來的原始信息
//out:  s_ProxyMessage
//返回:
//  1: 成功,
//  -1:失敗
int Convert_KillMessage(CBEMESSAGE_t *s_CBEMessage,CBEMESSAGE_t *s_ProxyMessage)
{
	int             posi;
	unsigned short  iListLen;
	KILLMESSAGE_t   *LPKillMessage;
	
	LPKillMessage=(KILLMESSAGE_t *)&s_ProxyMessage->cMessage[0];

	memcpy(&s_ProxyMessage->s_MessageHead,&s_CBEMessage->s_MessageHead,sizeof(MESSAGE_HEAD_t));
    
	memcpy(&s_ProxyMessage->cMessage[0],&s_CBEMessage->cMessage[0],
		(sizeof(KILL_MESSAGE_i)-sizeof(MESSAGE_HEAD_t)));

//	s_ProxyMessage->SocketHandle=s_CBEMessage->SocketHandle;	

	posi=sizeof(KILL_MESSAGE_i)-sizeof(MESSAGE_HEAD_t);

	//得到CELLLIST的長度
	memcpy(&iListLen,&s_CBEMessage->cMessage[posi+1],sizeof(unsigned short));
	iListLen=iListLen*sizeof(CELLID_t)+4; //4=sizeof(bFlag)+sizeof(CellIddisc)+sizeof(iLength)
	//長度溢出,返回錯誤
	if (iListLen>sizeof(CELLLIST_t))	
	{
		return FAILURE;
	}
	
	//沒有該參數,返回成功
	if (iListLen==0)
	{
		return SUCCESS;
	}


	//復制小區列表
    memcpy(&LPKillMessage->p_CellList, &s_CBEMessage->cMessage[posi],iListLen);

	s_ProxyMessage->iLen=sizeof(KILLMESSAGE_t)+sizeof(MESSAGE_HEAD_t);

	return SUCCESS;
}

/* 刪除預約消息 */
int process_Delete_Schedual_Message(PID_t s_OriginalPid,PID_t s_NewPid)
{
	int                               iReturnValue;
	WRITEREPLACE_REQUEST_t            *LPWriteReplace_Request;
	WRITEREPLACE_PROCESS_DATA_STRUCT  *LPs_WriteReplaceProcessDataStruct;
	KILLMESSAGE_t                     *LpKillMessage;
	CBEMESSAGE_t                      *LpCBEMessage;
	int                               i,j;
	unsigned char                     ListBuf[2048];

	memset(ListBuf,0,2048);

	if (s_NewPid.iProcessId==s_OriginalPid.iProcessId)
	{
		return NO_PROCESS;
	}

	iReturnValue=is_busy_pid((char *)&s_OriginalPid);
	if (iReturnValue<0)
	{
		return NO_PROCESS;
	}
	
	LPWriteReplace_Request=
		(WRITEREPLACE_REQUEST_t *)&ProcessData[s_OriginalPid.iProcessId][(sizeof(MESSAGE_HEAD_t)+sizeof(short))];

	LpKillMessage=(KILLMESSAGE_t *)&ProcessData[s_NewPid.iProcessId][(sizeof(MESSAGE_HEAD_t)+sizeof(short))];

	LPs_WriteReplaceProcessDataStruct=(WRITEREPLACE_PROCESS_DATA_STRUCT *)&ProcessData[s_OriginalPid.iProcessId][0];
	//判斷消息是否匹配
	if ((memcmp(&LPWriteReplace_Request->p_MessageIdentifier.iMessageIdentifier,&LpKillMessage->p_MessageIdentifier.iMessageIdentifier,sizeof(short))!=0)||
	(memcmp(&LPWriteReplace_Request->p_NewSerialnumber.iSerialNumber,&LpKillMessage->p_OldSerialnumber.iSerialNumber,sizeof(short))!=0))
	{
	    return MSGID_OR_SERIALNUMBER_UNMATCHED;
	}

	LpCBEMessage=(CBEMESSAGE_t *)&ProcessData[s_OriginalPid.iProcessId][0];

	//從預約發送小區列表中減去要刪除的小區列表
	//-----------------------------------------
    if (LPWriteReplace_Request->p_CellList.cCellIdDisc==
		LpKillMessage->p_CellList.cCellIdDisc)
	{
		//遍歷刪除列表
		for(i=0;i<LpKillMessage->p_CellList.iLength;i++) 
		{
			for(j=0;j<LPWriteReplace_Request->p_CellList.iLength;j++)
			{
				if (memcmp(&LpKillMessage->p_CellList.s_CellList[i].cCellId[0],
					&LPWriteReplace_Request->p_CellList.s_CellList[j].cCellId[0],
					sizeof(CELLID_t))==0)
				{
					memcpy(ListBuf, &LPWriteReplace_Request->p_CellList.s_CellList[j+1],(LPWriteReplace_Request->p_CellList.iLength-j-1)*4);
					memcpy(&LPWriteReplace_Request->p_CellList.s_CellList[j],ListBuf,(LPWriteReplace_Request->p_CellList.iLength-j-1)*4);
					j--;
					LPWriteReplace_Request->p_CellList.iLength--;
					break;
				}
			}
		}
	}

	if (LPWriteReplace_Request->p_CellList.iLength>0)
	{
		return SUCCESS;
	}
	//-----------------------------------------

	//釋放定時器
	iReturnValue=kill_timer(LPs_WriteReplaceProcessDataStruct->iScheduleTimerId, (char *)&s_OriginalPid);
	if (iReturnValue<0)
	{
		//sys
		printf("Kill timer error!\n");
		return FAILURE;
	}

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

	return SUCCESS;
}

/* 
  返回響應給CBCProxy 
  只報告KillMessage的響應
*/
void Process_KillMessage_Return_To_CBCProxy(PID_t s_Pid)
{
	int                                iPosi; 
	char                               ResponseBuf[3096];
	KILL_PROCESS_DATA_STRUCT           *LPm_KillProcessDataStruct;
	KILLMESSAGE_t                      *LPm_KillMessage;   
	REPORT_MESSAGE_i                   *LPs_Report;  
	int                                i;
	unsigned short                     iLen;
	CELLLIST_i                         s_FailureList;

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

	memset(&ResponseBuf[0],0,3096);

	LPm_KillProcessDataStruct=(KILL_PROCESS_DATA_STRUCT *)&ProcessData[s_Pid.iProcessId][0];

	LPm_KillMessage=(KILLMESSAGE_t *)&LPm_KillProcessDataStruct->s_CBCMessage.cMessage[0];
	
	LPs_Report=(REPORT_MESSAGE_i *)&ResponseBuf[sizeof(short)];

	/*   */
	memcpy(&LPs_Report->s_MessageHead.s_ReceiverPid,
		&LPm_KillProcessDataStruct->s_CBCMessage.s_MessageHead.s_SenderPid,sizeof(PID_t));
    /*  */
	memcpy(&LPs_Report->s_MessageHead.s_SenderPid,&s_Pid,sizeof(PID_t));

	LPs_Report->s_MessageHead.iMessageAreaId=A;

	LPs_Report->s_MessageHead.iMessageType=CBCPROXY_REPORT_KILL;

	memcpy(&LPs_Report->p_MessageIdentifier,&LPm_KillMessage->p_MessageIdentifier,sizeof(MESSAGEIDENTIFIER_t));
	memcpy(&LPs_Report->p_Serialnumber,&LPm_KillMessage->p_OldSerialnumber,sizeof(SERIALNUMBER_t));
	memcpy(&LPs_Report->p_ChannelIndicator,&LPm_KillMessage->p_ChannelIndicator,sizeof(CHANNELINDICATOR_t));


	iPosi=sizeof(REPORT_MESSAGE_i)+sizeof(short);

	/* 完成列表 */
	LPs_Report->bComlListFlag=LPm_KillProcessDataStruct->s_NoofBroadcastComlList.bFlag;
	LPs_Report->cComlListNumberOfBSC=LPm_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC;

	/* 失敗狀態報告列表 */
	LPs_Report->bReportListFlag=CBCBSC_Unpack.p_FailureReportList.bFlag;//LPm_KillProcessDataStruct->s_FailureList.bFlag;
	LPs_Report->cReportListNumberOfBSC=LPm_KillProcessDataStruct->s_FailureList.cNumberOfBSC;

	/* 壓縮ComlList參數 */
	for(i=0;i<LPm_KillProcessDataStruct->s_NoofBroadcastComlList.cNumberOfBSC;i++)
	{
		memcpy(&ResponseBuf[iPosi],&LPm_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[i],
    		LPm_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[i].ilength*sizeof(NOOFBROADCASTSCOML_i)+sizeof(short)+BSC_INDENTIFIER_LEN);
		iPosi=iPosi+LPm_KillProcessDataStruct->s_NoofBroadcastComlList.s_BSC_NoOfBroadCastcoml[i].ilength*sizeof(NOOFBROADCASTSCOML_i)
			+sizeof(short)+BSC_INDENTIFIER_LEN;
	}

	/* 只取失敗小區 */
	Abstract_Failure_Cell(&LPm_KillProcessDataStruct->s_FailureList,&s_FailureList);

	/* 壓縮FailureList參數 */
	for(i=0;i<s_FailureList.cNumberOfBSC;i++)
	{
		if(s_FailureList.s_BSCCellList[i].ilength>0)
		{
			memcpy(&ResponseBuf[iPosi],&s_FailureList.s_BSCCellList[i],
				(s_FailureList.s_BSCCellList[i].ilength*sizeof(CELLREPORT_i)+BSC_INDENTIFIER_LEN+sizeof(short)));
			iPosi=iPosi+s_FailureList.s_BSCCellList[i].ilength*sizeof(CELLREPORT_i)+BSC_INDENTIFIER_LEN+sizeof(short);
		}
	}

	iLen=iPosi-sizeof(short);

	LPs_Report->s_MessageHead.iMessageLength=iLen-sizeof(MESSAGE_HEAD_t);

	memcpy(&ResponseBuf[0],&iLen,sizeof(short));

#ifdef DEBUG_PRINT
    printf("KillMessage Return To CBCProxy. Pid=%d\n",s_Pid.iProcessId); 
	Printf_file_ComlList(s_Pid,LPs_Report->s_MessageHead.iMessageType,&LPm_KillProcessDataStruct->s_NoofBroadcastComlList);
	Printf_file_FailList(s_Pid,LPs_Report->s_MessageHead.iMessageType,&s_FailureList);
#endif

	AppendCBESendMessage((CBEMESSAGE_t *)&ResponseBuf[0]);

}

/* 處理KillMessage回復定時器到時 */
int Process_Kill_Response_timer_Expired(PID_t s_Pid)
{
	KILL_PROCESS_DATA_STRUCT          *LPs_KillProcessDataStruct; 
    int                               iReturnValue;
	
	LPs_KillProcessDataStruct=(KILL_PROCESS_DATA_STRUCT *)&ProcessData[s_Pid.iProcessId][0];


	/* 返回全部響應 */
	Process_KillMessage_Return_To_CBCProxy(s_Pid);

	/* 回復定時器置-1 */
	LPs_KillProcessDataStruct->iTimerId=-1;

	/* 沒有全響應 */
    /* 創建生命定時器 */  
   	iReturnValue=create_timer((WAIT_RESPONSE_TIME),LIFE_PERIOD,(char *)&s_Pid,NULL);
	if (iReturnValue<0)
	{
		printf("Create Resend timer Error!\n");
		return END;
	}
	LPs_KillProcessDataStruct->iLifeTimerId=iReturnValue;

	return CONTINUANCE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品人伦一区二区色婷婷| 26uuu国产日韩综合| 日本精品一级二级| 欧美三区在线视频| 精品福利av导航| 久久久久久久久岛国免费| 国产精品卡一卡二卡三| 亚洲一区二区偷拍精品| 日韩av在线播放中文字幕| 国产麻豆精品视频| 在线观看国产91| 91精品国产福利| 国产精品美女久久久久高潮| 亚洲国产日韩在线一区模特| 韩国午夜理伦三级不卡影院| 99re这里只有精品首页| 正在播放亚洲一区| 国产偷国产偷亚洲高清人白洁| 一区二区三区欧美| 国内精品久久久久影院一蜜桃| 国产69精品久久久久777| 欧美日韩国产一级二级| 国产日韩影视精品| 午夜婷婷国产麻豆精品| 国产白丝网站精品污在线入口| 色婷婷综合久久久久中文一区二区 | 久久精品99国产精品日本| caoporm超碰国产精品| 欧美日韩日日夜夜| 国产精品入口麻豆原神| 爽好多水快深点欧美视频| 国产河南妇女毛片精品久久久| 欧美色欧美亚洲另类二区| 国产日韩综合av| 日本在线观看不卡视频| 91猫先生在线| 日韩一级大片在线| 青青国产91久久久久久| 国内精品伊人久久久久av影院 | 99久久亚洲一区二区三区青草| 欧美天堂亚洲电影院在线播放 | 欧美一区永久视频免费观看| 中文字幕视频一区| 麻豆精品一区二区av白丝在线| 在线亚洲精品福利网址导航| 久久影院午夜片一区| 亚洲成精国产精品女| 97久久精品人人做人人爽50路| 亚洲精品免费在线观看| 国产一区二区三区精品视频| 欧美午夜精品理论片a级按摩| 欧美偷拍一区二区| 欧美一区二区三区免费大片| 亚洲婷婷综合色高清在线| 在线看日韩精品电影| 成人黄色av网站在线| 欧美电影一区二区| 欧美日产在线观看| 亚洲欧美另类综合偷拍| 国产99久久久国产精品潘金| 精品欧美乱码久久久久久 | 国产高清不卡一区二区| 日韩一区二区三区三四区视频在线观看 | 色综合天天综合狠狠| 精品乱码亚洲一区二区不卡| 亚洲成人综合视频| 日韩视频免费观看高清完整版| 免费观看30秒视频久久| 欧美一区二区三区在线| 国产毛片精品一区| 国产精品免费久久久久| 成人午夜视频免费看| 国产精品久久久久毛片软件| 欧美在线啊v一区| 国产成人一区在线| 不卡av电影在线播放| 久久久蜜桃精品| 樱花草国产18久久久久| 91精品福利视频| 综合在线观看色| 成人免费黄色大片| 国产精品久久久久久久久图文区| 高清不卡在线观看av| 国产精品激情偷乱一区二区∴| caoporm超碰国产精品| 91精品国产综合久久精品图片 | 日韩av网站在线观看| 日韩精品一区二区三区中文不卡| 国产**成人网毛片九色| 天天av天天翘天天综合网| 欧美激情一区二区| 欧美性猛交xxxx乱大交退制版 | 亚洲国产精品久久不卡毛片| 日韩欧美123| 51午夜精品国产| 成人一级黄色片| www.欧美亚洲| 日韩福利视频网| 日本一区二区三区国色天香 | 色婷婷av一区二区三区大白胸| 日韩美女天天操| 久久精品国产99国产精品| 日韩三级电影网址| 国产麻豆视频一区二区| 国产精品麻豆一区二区| 91传媒视频在线播放| 奇米综合一区二区三区精品视频| 欧美mv和日韩mv的网站| 国产成人av电影在线| 91精品国产麻豆国产自产在线 | 欧美美女激情18p| 在线亚洲欧美专区二区| jlzzjlzz欧美大全| 91亚洲精品乱码久久久久久蜜桃| 国产一二精品视频| 午夜亚洲国产au精品一区二区| 最新国产の精品合集bt伙计| 亚洲一区免费在线观看| 欧美国产在线观看| 国产午夜精品久久| 国产午夜精品一区二区三区四区| 欧美成人aa大片| 精品福利二区三区| 日韩精品一区二区三区老鸭窝| 日韩丝袜美女视频| 日韩限制级电影在线观看| 欧美一区二区三区影视| 欧美不卡一区二区三区四区| 日韩欧美在线观看一区二区三区| 日韩三级在线观看| 精品国产一区久久| 国产精品天干天干在线综合| 日韩毛片高清在线播放| 久久精品国产**网站演员| 国产大片一区二区| 欧美一区二区精品久久911| 色婷婷香蕉在线一区二区| 国产视频一区二区三区在线观看| 欧美人牲a欧美精品| 91在线免费播放| 欧美亚洲国产bt| 久久综合av免费| 日韩二区三区四区| 久久日韩精品一区二区五区| 国产一区二区福利视频| 国产精品一二三四区| 亚洲一区二区精品3399| 精品国产乱码久久久久久牛牛| 欧美自拍丝袜亚洲| 国产成人av电影在线观看| 日日摸夜夜添夜夜添国产精品| 国产精品久久久久久户外露出| 日韩一区二区三区免费观看| 日本精品免费观看高清观看| 国产米奇在线777精品观看| 欧美理论片在线| 国产精品少妇自拍| 麻豆专区一区二区三区四区五区| 不卡免费追剧大全电视剧网站| 在线综合+亚洲+欧美中文字幕| 国产精品你懂的| 欧美一区二区三区不卡| 欧美一级理论片| 一级中文字幕一区二区| 懂色av一区二区在线播放| 欧美日韩黄色一区二区| 自拍偷拍国产精品| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲欧美综合另类在线卡通| 美女mm1313爽爽久久久蜜臀| 欧美日韩免费视频| 亚洲一区中文在线| 97se亚洲国产综合在线| 久久久亚洲精华液精华液精华液| 午夜天堂影视香蕉久久| 欧美亚日韩国产aⅴ精品中极品| 久久久高清一区二区三区| 国产一区二区三区美女| 精品美女一区二区| 另类的小说在线视频另类成人小视频在线| 91在线无精精品入口| 亚洲国产成人av网| 91精品国产一区二区| 色综合久久88色综合天天免费| 久久99精品久久只有精品| 91麻豆精品国产91久久久久久| 国产精品久久国产精麻豆99网站| 精品一区二区在线观看| 2023国产精品| 成人性视频免费网站| 国产一区二区三区在线观看免费视频| 韩国女主播成人在线观看| 美女久久久精品| 亚洲人吸女人奶水| 亚洲免费大片在线观看| 亚洲欧美精品午睡沙发| 一二三区精品福利视频| 亚洲永久免费视频| 中文字幕在线一区二区三区| 美女尤物国产一区|