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

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

?? itgrecv.cpp

?? D-ITG2.4源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
 /*	Component of the D-ITG 2.4 Platform
 *
 * 	
 *	copyright	: (C) 2004  	by Stefano Avallone, Alessio Botta, Donato Emma, 
 *					Salvatore Guadagno, Antonio Pescape'
 *					DIS Dipartimento di Informatica e Sistemistica				 
 *					(Computer Science Department)
 *					University of Naples "Federico II"	
 *	email:		: {stavallo, pescape}@unina.it, {abotta, demma, sguadagno}@napoli.consorzio-cini.it
 *
 *	This program is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 */
 
 




#include "../common/ITG.h"
#include "../common/thread.h"
#include "../common/pipes.h"
#include "ITGRecv.h"
#include "data.h"

#ifdef WIN32
#include <math.h>
#endif

#ifdef LINUX_OS
#include <sys/uio.h>
#include <netinet/ip.h>
#include <netinet/udp.h>
#include <wait.h>
#endif




struct addrinfo *globaleLogHost;


int globaleLogSock = 0;


int globaleLogSockSignaling = 0;



int sockSignaling;

 
 int flagTerm = NO_TERMINATE;


int logCheck = 0;


int logRemote = 0;


ofstream out;


char logFile[DIM_LOG_FILE];


BYTE l4ProtoLog = DEFAULT_PROTOCOL_TX_LOG;


manageLogFile memLogFile[MAX_NUM_THREAD];


bool setPriority = false;


char nameProgram[]="ITGRecv";


#ifdef WIN32
const char DEFAULT_LOG_FILE[] = "ITGRecv.log";

HANDLE mutexLog;

int userId = 0;
#endif

#ifdef LINUX_OS
const char DEFAULT_LOG_FILE[] = "/tmp/ITGRecv.log";

uid_t userId;

pthread_mutex_t mutexLog;
#endif






void reportErrorAndExit(char *function, char *program, char *msg)
{
	
	if (flagTerm == NO_TERMINATE)
	{
       	printf("\n** ERROR_TERMINATE **\n");
		printf("Function %s aborted caused by %s \n",function,program);
		printf("** %s ** \n",msg);
		
		terminate(SIGTERM);
	}
	
	else if (flagTerm == ERROR_TERMINATE)
	{
      	printf("\n** ERROR_TERMINATE IN TERMINATE **\n");
		printf("Function %s aborted caused by %s \n",function,program);
		printf("** %s ** \n",msg);
		printf("Finish with error in terminate!\n");
		exit(1);
	}
	
	else
		
		sleep(INFINITE);
}



void terminate(int sign)
{
	if (flagTerm == NO_TERMINATE) {
        
		flagTerm = TERMINATE;
#ifdef DEBUG
		printf("** Terminate function ***\n");
#endif
		
		if (logCheck == 1) out.close();
		
		else if (logRemote ==1)
		{
			signaling signalingLog;
			signalingLog.stop = true;
			if ( sendto(globaleLogSockSignaling, (char *) &signalingLog, sizeof(signalingLog), 0,
				globaleLogHost->ai_addr, globaleLogHost->ai_addrlen) < 0)	{
				
     				flagTerm = ERROR_TERMINATE;
				reportErrorAndExit("terminate","sendto","Cannot send to LogServer info about stopping signaling");
			}
#ifdef DEBUG
			printf("Signaling Log STOP sent to Log Server \n");
#endif
			if ( closeSock(globaleLogSock) < 0) {
				
				flagTerm = ERROR_TERMINATE;
				reportErrorAndExit("terminate","closeSock","Cannot close socket logSock");
			}
			if ( closeSock(globaleLogSockSignaling) < 0) {
				
				flagTerm = ERROR_TERMINATE;
				reportErrorAndExit("terminate","closeSock","Cannot close socket logSockSignaling");
			}
 		}
		if ( MUTEX_THREAD_RELEASE(mutexLog) < 0) {
				
				flagTerm = ERROR_TERMINATE;
				reportErrorAndExit("terminate","MUTEX_THREAD_RELEASE","Cannot release Log Mutex");
			}
#ifdef WIN32
		
		if ( WSACleanup() != 0)	{
			
			flagTerm = ERROR_TERMINATE;
			reportErrorAndExit("terminate","WSACleanup","Cannot clean WSA");
		}
#endif
		


		
		if (sign == SIGINT)
			printf("Finish with CRTL-C! \n");
		
		else if (sign == SIGTERM)
			printf("Finish requested caused by errors! \n");
		}
	exit(1);
}



char *allowedLogFile(char logFile[DIM_LOG_FILE])
{
	int i = 0;
	
	bool find = true;
	
	while ((i < MAX_NUM_THREAD) && (find == true)) {
		if (strcmp(memLogFile[i].logFile, logFile) == 0) {
			
			find = false;
			
			memLogFile[i].num++;
			return NULL;
		} else
			i++;
	}
	i = 0;
	
	while (memLogFile[i].num != -1)
		i++;
	
	memLogFile[i].out.open(logFile, ios::out | ios::binary | ios::trunc);
	if (!memLogFile[i].out) {
		
		char* tail = (char *) malloc(sizeof("Error into open this file : ") + sizeof(logFile));
		if (tail == NULL)
			reportErrorAndExit("allowedLogFile","malloc","Insifficient memory available");
		
		sprintf(tail,"Error into open this file : %s",logFile);
		reportErrorAndExit("allowedLogFile","open",tail);
	}
	
	memLogFile[i].num = 1;
	strcpy(memLogFile[i].logFile, logFile);
	
	return (char *) &memLogFile[i].out;
}



void closeFileLog(ofstream * out)
{
	int i = 0;
	
	while (out != (ofstream *) & memLogFile[i].out)
		i++;
	
	memLogFile[i].num--;
	if (memLogFile[i].num == 0) {
		
 		memLogFile[i].num = -1;
		strcpy(memLogFile[i].logFile, " ");
		
		(*out).close();
	}
}



int sendAck(int signaling, BYTE typeMessage)
{
	
	char msg;
	
	putValue(&msg, (void *) &typeMessage, sizeof(typeMessage));

	
	if ( send(signaling, (char *) &msg, sizeof(msg), 0) < 0)
		return -1;
	else
		return 0;
}



int sendAckFlow(int signaling, BYTE typeMessage, int flowId)
{
	
	char msg[sizeof(BYTE) + sizeof(int)];
	
	char *next;
	int sizeMessag = sizeof(BYTE) + sizeof (int);
	
	next = putValue(&msg, (void *) &typeMessage, sizeof(typeMessage));
	next = putValue(next, (void *) &flowId, sizeof(int));
	
	if (send(signaling, (char *) &msg, sizeMessag, 0) < 0)
		return -1;
	else
        	return 0;
}





void *signalManager(void *param)
{
    
    struct addrinfo logHost;

    
    int logSock = 0;

     
    int logSockSignaling = 0;

     
   	paramThread *para;

	
	para = (paramThread *) param;
   	
	pthread_t hThr[MAX_NUM_THREAD];
	
#ifdef LINUX_OS
    fd_set activeSet;
    
	timeval timeOutFile;
	
#endif
	memChannel flowIdNum[MAX_NUM_THREAD];
	
	paramThread paraThread[MAX_NUM_THREAD];
	
	BYTE type;
	
	int numFlow = 0;
	
	int newSockSignaling = para->socket;
	
	char buffer[1];
	
	bool uscita = false;

	int numDiscovery = 0;


	
	char *fileDescriptor = (char*)&out;

	 char nameFileLog[DIM_LOG_FILE];

	BYTE protocolLog;

#ifdef LINUX_OS
    	int fd, maxfd;
    	int rPipe[2];
#endif


#ifdef WIN32
    	HANDLE rPipe[3];
        HANDLE fd, namedPipe;
        HANDLE events[2];
        DWORD available = 0;
        DWORD waited;
        unsigned long pending;
#endif

	
	for (int i = 0; i < MAX_NUM_THREAD; i++) {
		flowIdNum[i].flowId = -1;
		hThr[i] = 0;
		paraThread[i].flowId = 0;
		paraThread[i].count = 0;
		paraThread[i].socket = 0;
		paraThread[i].socketClose = 0;
	}

	
	if (createNewPipe(rPipe) < 0) {
		printf("Error in signal to create a new pipe \n");
	}

	
	do {
		if ( recv(newSockSignaling, (char *) &buffer, sizeof(BYTE), 0) < 0)
		reportErrorAndExit("signalManager","recv - connect","Cannot receive newSockSignaling data");
	
  	} while (*(BYTE *) buffer != TSP_CONNECT);
#ifdef DEBUG
	printf("Signal Manager : Received TSP_CONNECT(1) message\n");
#endif

	
	if ( sendAck(newSockSignaling, TSP_ACK_CONNECT) < 0)
		reportErrorAndExit("signalManager","sendAck","Cannot send connect ack");
#ifdef DEBUG
	printf("Signal Manager : Sent TSP_ACK_CONNECT(2) message\n");
#endif




    	fd = rPipe[0];

#ifdef LINUX_OS
    	maxfd = max( fd, newSockSignaling);
#endif

#ifdef WIN32
        
        events[0] = WSACreateEvent();
        WSAEventSelect(newSockSignaling, events[0], FD_READ);
        
        events[1] = rPipe[1];
        namedPipe = rPipe[2];
#endif
	if (logRemote == 1){
		logSockSignaling = globaleLogSockSignaling;
		logSock = globaleLogSock;
		copia(globaleLogHost, logHost);
	}

	
	while (1) {
			
		type = 0;

#ifdef LINUX_OS
		
		FD_ZERO(&activeSet);

		
		FD_SET(fd, &activeSet);
		FD_SET((unsigned int)newSockSignaling, &activeSet);
		
		timeOutFile.tv_sec = TIME_OUT;
		timeOutFile.tv_usec = 0;
		
		if (select(FD_SETSIZE, &activeSet, NULL, NULL, &timeOutFile) < 0)
			reportErrorAndExit("signalManager","select - type","Invalid file descriptor");

		
		if (FD_ISSET(fd, &activeSet)) {
#endif

#ifdef WIN32
		waited=WaitForMultipleObjects(2, (const HANDLE*)events,FALSE, TIME_OUT*1000);
		ResetEvent(events[0]);
		available = 0;
		
		if (PeekNamedPipe(namedPipe, NULL , 0 , NULL , &available , NULL) == 0) {
			reportErrorAndExit("signalManager","PeekNamedPipee","Error in peek named Pipe");
		}
#ifdef DEBUG
   		printf("available: %d\n", available);
#endif
		while(available > 0) {
#endif
			pipeParser(newSockSignaling,numFlow,rPipe,flowIdNum, paraThread, hThr);
#ifdef WIN32
			
		if (PeekNamedPipe(namedPipe, NULL , 0 , NULL , &available , NULL) == 0) {
				reportErrorAndExit("signalManager","PeekNamedPipee","Error in peek named Pipe");
			} 
#endif
    		} 

#ifdef LINUX_OS
		
		else if (FD_ISSET(newSockSignaling, &activeSet)) {
#endif
#ifdef WIN32
		pending = 0;
		ioctlsocket(newSockSignaling, FIONREAD, &pending);
#ifdef DEBUG
		printf("pending - out: %d\n", pending);
#endif
		while ((pending > 0) && (uscita!=true)){
#endif
			numDiscovery = 0;
			
			if ( recv(newSockSignaling, (char *) &type, sizeof(type), 0) < 0)
				reportErrorAndExit("signalManager","recv - type",
					"Cannot receive data on newSockSignaling");
			if (type == TSP_SEND_NAME_LOG){
            			 recvNameLog(nameFileLog, newSockSignaling);
				if (logCheck != 1){
					fileDescriptor = allowedLogFile(nameFileLog);  
                                 	if (fileDescriptor == NULL) {
						if (sendAck(newSockSignaling,  TSP_ERR_MSG_4) < 0)
							reportErrorAndExit("pipeParser","",
							"Cannot send TSP_ERR_MSG_4 message to sender");
						#ifdef DEBUG
						printf("Signal manager : sent TSP_ERR_MSG_4(22) message\n");
						#endif
				 	} 
					else {
						if ( sendAck(newSockSignaling, TSP_ACK_SEND_NAME_LOG) < 0)
							reportErrorAndExit("recvNameLog","sendAck - type = TSP_ACK_SEND_NAME_LOG(18)",
							"Cannot send Ack on newSockSignaling");
						#ifdef DEBUG
						printf("Signal manager : sent TSP_ACK_SEND_FLOW_LOG(18) message\n");
						#endif
						logCheck = 2;
					} 
				} 
				else {
					if ( sendAck(newSockSignaling, TSP_ACK_SEND_NAME_LOG) < 0)
						reportErrorAndExit("recvNameLog","sendAck - type = TSP_ACK_SEND_NAME_LOG(18)",
						"Cannot send Ack on newSockSignaling");
#ifdef DEBUG
						printf("Signal manager : sent TSP_ACK_SEND_FLOW_LOG(18) message\n");
#endif
					fileDescriptor = (char*)&out;
				}
	     } else  if (type == TSP_SEND_FLOW_LOG) {
                       	 recvFlowLog(newSockSignaling, logHost, protocolLog, nameFileLog);
                         if (logRemote != 1) { 
                                 createRemoteLogFile(logHost, nameFileLog, protocolLog, logSockSignaling, logSock);
				 logRemote = 2;
                         } else {	     
                             logSockSignaling = globaleLogSockSignaling;
                             logSock = globaleLogSock;
                             copia(globaleLogHost, logHost);
			 }
                         if ( sendAck(newSockSignaling, TSP_ACK_SEND_FLOW_LOG) < 0)
                                 		reportErrorAndExit("sendFlowLog","sendAck - type = TSP_ACK_SEND_FLOW_LOG(12)",
                                 			"Cannot send Ack on newSockSignaling");
               			 #ifdef DEBUG
               			 printf("Signal manager : sent TSP_ACK_SEND_FLOW_LOG(12) message\n");
               			 #endif
                  } else if ((type == TSP_RELEASE) || (type == TSP_CLOSED_ERR) || (type == TSP_SENDER_DOWN) || (type == TSP_SEND_FLOW) ||
				   (type == TSP_CLOSED_FLOW) || (type == TSP_ERR_MSG_1)){
					if (typeParser(type, numFlow, newSockSignaling , flowIdNum, paraThread, hThr, rPipe, fileDescriptor, logSock, 						logSockSignaling, &logHost) == -1) {
								uscita = true;
					} 
			}	
#ifdef WIN32
    		 ioctlsocket(newSockSignaling, FIONREAD, &pending);
#ifdef DEBUG
	       	 printf("pending -in : %d\n", pending);
#endif
#endif
         } 

#ifdef LINUX_OS
		else {
#endif

#ifdef WIN32
		if (waited == WAIT_TIMEOUT) {
#endif
				
				type = TSP_DISCOVERY;
				
				if ( send(newSockSignaling, (char *) &type, sizeof(type), 0) < 0)
					reportErrorAndExit("signalManager","recv - discovery",
						"Cannot receive data on newSockSignaling");
#ifdef DEBUG
				printf("Signal manager : Sent TSP_DISCOVERY message\n");
#endif
				numDiscovery++;
				if (numDiscovery == 2) {
#ifdef DEBUG
					printf("Signal manager : Sender is down\n");
#endif
					type = TSP_SENDER_DOWN;
					uscita = true;
				}
		}
		if (uscita == true) break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产一区二区三区 | 一本久久a久久免费精品不卡| 色天天综合久久久久综合片| 26uuu成人网一区二区三区| 国产精品伦理在线| 免费不卡在线视频| 色综合久久久久综合体| 国产精品国产三级国产aⅴ原创| 精品久久久久香蕉网| 亚洲欧美日韩在线不卡| 久久99国产精品免费网站| 色偷偷88欧美精品久久久| 欧美精品一区二区三区蜜臀| 亚洲午夜激情av| 波多野结衣在线aⅴ中文字幕不卡| 欧美一区国产二区| 一区二区三区欧美在线观看| 国产成人99久久亚洲综合精品| 日韩欧美一区在线观看| 亚洲va欧美va人人爽| 91麻豆免费在线观看| 国产欧美日韩综合| 国产麻豆视频一区| 日韩你懂的在线播放| 日韩黄色一级片| 欧美性大战久久久久久久蜜臀 | 国产精品一区二区男女羞羞无遮挡| 欧美日韩和欧美的一区二区| 亚洲精品视频观看| 色综合天天视频在线观看| 欧美经典一区二区| 国产精品1区2区| 久久久久久久久久看片| 免费在线看成人av| 欧美大片在线观看一区| 久久国产乱子精品免费女| 精品国产一区二区精华| 精品一区二区三区免费| 日韩久久免费av| 久草在线在线精品观看| 久久综合丝袜日本网| 国产激情一区二区三区| 国产精品美女久久久久aⅴ| 99r国产精品| 亚洲国产精品久久人人爱| 欧美日韩国产精品成人| 蜜桃视频在线观看一区二区| 精品日韩在线观看| 国产很黄免费观看久久| 国产精品久久久一本精品| av一二三不卡影片| 亚洲在线中文字幕| 欧美人妇做爰xxxⅹ性高电影| 日本aⅴ免费视频一区二区三区| 日韩欧美一卡二卡| 成人免费电影视频| 亚洲精品成人天堂一二三| 51午夜精品国产| 国产在线一区二区| 亚洲欧美偷拍另类a∨色屁股| 欧美日韩国产成人在线免费| 久久99久久久欧美国产| 国产精品久久久久久久久免费樱桃 | 五月婷婷久久丁香| 精品国产一二三区| 成人看片黄a免费看在线| 亚洲黄网站在线观看| 日韩精品一区二区三区在线播放| 成人精品小蝌蚪| 亚洲午夜一区二区| 久久无码av三级| 欧美伊人久久久久久午夜久久久久| 日韩国产精品大片| 国产精品欧美久久久久无广告| 欧美日韩国产一区| 国产福利91精品| 天天影视色香欲综合网老头| 国产精品亲子伦对白| 欧美一卡2卡3卡4卡| 99精品视频在线观看免费| 免费观看一级特黄欧美大片| 亚洲欧洲av在线| 欧美成人三级在线| 色成年激情久久综合| 国产成人免费在线视频| 日日夜夜免费精品| 中文字幕一区三区| xnxx国产精品| 欧美一区二区久久久| 在线一区二区视频| 成人黄色av电影| 精品一区二区在线看| 视频一区视频二区中文| 亚洲免费在线电影| 国产亚洲一区二区三区在线观看| 精品视频色一区| 91丝袜呻吟高潮美腿白嫩在线观看| 黄网站免费久久| 日本欧美在线看| 亚洲成在人线免费| 亚洲天堂网中文字| 国产精品三级视频| 国产性做久久久久久| www日韩大片| 2023国产精品视频| 欧美成人猛片aaaaaaa| 欧美一区二区三区日韩| 欧美日韩免费一区二区三区| 91玉足脚交白嫩脚丫在线播放| 国产伦精品一区二区三区免费迷| 久色婷婷小香蕉久久| 亚洲成人动漫在线免费观看| 亚洲综合丝袜美腿| 亚洲精品免费播放| 亚洲午夜久久久久久久久久久 | 久久色在线观看| 日韩免费电影一区| 日韩欧美综合一区| 日韩免费看网站| 精品国产成人系列| 精品日韩欧美在线| 久久影院视频免费| 久久在线观看免费| 国产精品久久久久久亚洲毛片| 一区在线观看视频| 一级中文字幕一区二区| 午夜影院久久久| 奇米影视7777精品一区二区| 久久国产精品第一页| 国产精品亚洲一区二区三区妖精 | 久久99精品一区二区三区| 老司机一区二区| 国产福利不卡视频| 色999日韩国产欧美一区二区| 欧美日韩一区二区欧美激情| 日韩一区二区麻豆国产| 久久精品人人做| 亚洲欧洲无码一区二区三区| 亚洲免费av在线| 日本aⅴ免费视频一区二区三区| 国产精品影音先锋| 一本一道久久a久久精品综合蜜臀| 日本韩国精品一区二区在线观看| 欧美日韩高清一区二区不卡| 日韩欧美一二三四区| 欧美国产欧美综合| 亚洲一区二区在线免费观看视频| 免费观看91视频大全| 97国产一区二区| 欧美一级欧美三级在线观看| 国产日韩欧美综合一区| 一区二区三区四区不卡在线| 日本成人在线电影网| 97久久久精品综合88久久| 欧美二区三区的天堂| 中文字幕免费一区| 日韩精品一二三| 成人久久18免费网站麻豆 | 在线精品亚洲一区二区不卡| 日韩三级中文字幕| 亚洲丝袜制服诱惑| 奇米色一区二区| 色综合久久综合| 欧美激情中文字幕一区二区| 午夜精品福利久久久| 成人a级免费电影| 日韩女优av电影在线观看| 一区二区三区不卡在线观看| 国产一区二区三区香蕉| 欧美日韩激情一区| 亚洲三级久久久| 国产毛片精品一区| 日韩女优av电影| 亚洲成av人综合在线观看| a亚洲天堂av| 久久一二三国产| 免费三级欧美电影| 欧美三级视频在线观看| 18涩涩午夜精品.www| 国产电影一区在线| 91麻豆精品国产91久久久资源速度| 亚洲日本欧美天堂| 国产精品亚洲人在线观看| 日韩精品一区二区三区老鸭窝| 天堂蜜桃91精品| 欧美无砖砖区免费| 一区二区在线免费观看| 一本大道av伊人久久综合| 国产精品美女视频| 成人高清免费在线播放| 欧美高清一级片在线观看| 国产乱子轮精品视频| 欧美一级免费大片| 日韩在线一区二区三区| 欧美女孩性生活视频| 性做久久久久久久免费看| 欧美日韩视频在线观看一区二区三区| 一区二区中文字幕在线| 99在线精品免费| 亚洲三级在线看|