Esempio n. 1
0
int main(int argc, char ** argv)
{
/*	OpenArchive roa;
	SetCallback rsc;
	ProcessFile rpf;
	CloseArchive rca;*/

	std::vector<std::string> monitor_dirs;
	std::string extract_dir;
	std::vector<std::string> files_to_unpack;
	std::vector<std::string> dest_dirs;
	std::vector<std::string> passwords;
	bool recurseMonitor;

	if (parseOpts(argc, argv, files_to_unpack, dest_dirs, passwords, monitor_dirs, recurseMonitor, extract_dir))
	{
		fprintf(stderr, "Usage: stream_unrar [%s <rar file> %s <dest_dir> [%s <password>]] [%s <monitor_dir> %s <extract_dir> [%s]]\n", add_flag.c_str(), dir_flag.c_str(), pass_flag.c_str(), monitor_flag.c_str(), extract_flag.c_str(), recurse_flag.c_str());
		fprintf(stderr, "Multiple archives or monitor directories can be specified.\n");
		fprintf(stderr, "Archives are processed first, then monitoring begins\n");
		fprintf(stderr, "Monitoring is stopped when a file %s is created in one of the directories\n", abort_monitor.c_str());
		return -1;
	}

	assert(files_to_unpack.size() == dest_dirs.size());
	assert(files_to_unpack.size() == passwords.size());

	for(std::vector<std::string>::iterator
		file = files_to_unpack.begin(), dir = dest_dirs.begin(), pass = passwords.begin(); 
		// we're guaranteed that all 3 iterators are the same size by parseOpts
		file != files_to_unpack.end(); ++file, ++dir, ++pass)
	{
		extract(*file, *dir, *pass);		
	}
	
	if (monitor_dirs.size() == 0)
		return 0;

	setPriority(low);

	fprintf(stdout, "Beginning to monitor watch directories\n");
	bool stopMonitoring = false;
	bool valid_monitor_dir = true;
	while (!stopMonitoring && valid_monitor_dir)
	{
		valid_monitor_dir = false;
		for (std::vector<std::string>::iterator dir = monitor_dirs.begin();
			dir != monitor_dirs.end(); ++ dir)
		{
			if (!dirExists(*dir))
				continue;
			valid_monitor_dir = true;
			if (process(*dir, recurseMonitor, extract_dir))
				return 0;
		}
		thread_sleep(1);
	}
	return -1;
}
Esempio n. 2
0
//PangooFS MigrateThreshold METADIR DATADIR FuseMount LogFile
int main(int argc, char *argv[]) {
    if (argc < 2) {
      usage(); 
    }
    Properties prop;
    parseOpts(argc, argv, prop);
    Test(prop);
    return 0;
}
Esempio n. 3
0
int wmain(int argc, wchar_t *argv[])
{
	Options opts = {0};
	FILE *fp;
	int i;

	atexit(debug);

	if (argc < 2) {
		printUsage(argv);
		return 1;
	} else if ((i = parseOpts(argc, argv, &opts)) >= 0) {
		printf("Invalid parameter specified in '%S'.\n", argv[i]);
		printUsage(argv);
		return 2;
	} else if (opts.font_name == NULL || opts.text_file == NULL) {
		printf("No font name or input text file specified.\n");
		printUsage(argv);
		return 3;
	} else if (wcslen(opts.font_name) >= 32) {
		printf("The font name is too long (max 31 characters).\n");
		return 4;
	}

	printf("Specified options:\n");
	printf("  Font: '%S' [%s%s]\n", opts.font_name, 
		   opts.bold ? "Bold" : "Regular",
		   opts.italic ? " Italic" : "");
	printf("  Input file: '%S'%s\n", opts.text_file,
		   opts.isRange ? " (range)" : "");
	
	if (_wfopen_s(&fp, opts.text_file, L"r,ccs=UTF-8")) {
		perror("Could not open input file");
		printUsage(argv);
		return 5;
	}
	
	getGlyphIds(fp, &opts);

	fclose(fp);
}
Esempio n. 4
0
int main(int argc, char** argv)
{
	static_cast<void>(testReadingInput); // suppress unused warning

 	// read benchmark
	try {
		auto opts = parseOpts(argc, argv);
		auto problem = readRoutingInstFromPath(opts.inputBenchmark);
		RoutingSolver rst(problem);

		rst.useNetDecomposition = opts.useNetDecomposition;
		rst.useNetOrdering = opts.useNetOrdering;
		rst.timeLimit = std::chrono::minutes(13);
		rst.emitSVG = opts.emitSVG;
		rst.costFunction = opts.costFunction;

		if (opts.useNetOrdering)
			rst.reorderNets(problem.nets);
		else
			printf("Not using ordering\n");

		// run actual routing
		rst.solveRouting();

		if(opts.useNetOrdering || opts.useNetDecomposition)
			rst.rrr();

		// write the result
		writeToPath(opts.outputFile, problem);
		return 0;
	}
	catch (std::exception& ex) {
		printf("Error: %s\n", ex.what());
		return 1;
	}
}
Esempio n. 5
0
int main( int argc , char **argv )
{
		parseOpts( argc, argv );
		
    // Nuke +1 1012: Loop counter
    int counter1 = 0;
    
    int counter2 = 0;
    
    int counter3 = 0;
    
    int counter4 = 0;

    signal(SIGUSR1, sigusr1);

    log_rotate_interval = 3600 * 24 * 7;

    Lock_Init();	// Arminius 7.17 memory lock

		UNlockM_Init();
    
    if(readConfig( "acserv.cf" )<0){
        log( "ÎÞ·¨ÔÚµ±Ç°Ä¿Â¼Àï¶ÁÈ¡ acserv.cf .\n" );
        exit(1);
    }

#ifdef _SASQL
    sasql_init();
#endif	
    log( "¶ÁÈ¡Êý¾ÝĿ¼\n" );
    dbRead( dbdir );
#ifdef	_FAMILY
    log("¶ÁÈ¡ ¼Ò×åׯ԰\n");
    readFMSMemo(fmsmemodir);
    log("¶ÁÈ¡ ¼Ò×åÁôÑÔ\n");
    readFMPoint(fmpointdir);
    log("¶ÁÈ¡ ¼Ò×åĿ¼\n");
    readFamily(familydir);
#endif
    log( "×¼±¸ µµ°¸Ä¿Â¼\n" );
    prepareDirectories( chardir );
    log( "×¼±¸ ÈÕ־Ŀ¼\n" );
    prepareDirectories( logdir );
    log( "×¼±¸ ÓʼþĿ¼\n" );
    prepareDirectories( maildir );

#ifdef _SLEEP_CHAR
    prepareDirectories( sleepchardir );
    log( "×¼±¸ ˯Ãßµµ°¸Ä¿Â¼\n" );
#endif

    /* Ð×ÒýÔÈ»¯Ô¶ª¡õ»ïë  Ðijð¸ê */
    if( readMail(maildir) < 0 ){
        log( "²»Äܳõʼ»¯Óʼþ\n" );
        exit(1);
		}

    /* TCPSTRUCT ëâÙÓå¼À */
    {
        int tcpr;
        if( ( tcpr = tcpstruct_init( NULL , port , 0 ,
						CHARDATASIZE * 16 * MAXCONNECTION , 1 /* DEBUG */ ) ) < 0 ){
            log( "²»ÄÜ¿ªÆôTCP: %d\n", tcpr );
            return 1;
        }
    }
    saacproto_InitServer( netWrite , CHARDATASIZE );

    {
        struct sigaction s,os;
        
        bzero( &s, sizeof(s));
        s.sa_handler = sighandle;
        s.sa_flags = SA_NOMASK;
        sigaction( SIGTERM,  &s, &os );

        bzero( &s, sizeof(s));
        s.sa_handler = sighandle;
        s.sa_flags = SA_NOMASK;
        sigaction( SIGINT,  &s, &os );

        bzero( &s, sizeof( s ));
        s.sa_handler = SIG_IGN;
        s.sa_flags = SA_NOMASK;
        sigaction( SIGPIPE, &s, &os );

    }

#ifdef _AC_SEND_FM_PK		 // WON ADD ׯ԰¶ÔÕ½ÁÐ±í´¢´æÔÚAC
	load_fm_pk_list();
#endif

#ifdef _ACFMPK_LIST
	FMPK_LoadList();
#endif
#ifdef _ALLDOMAN
	LOAD_herolist();  // Syu ADD ÅÅÐаñNPC
#endif

#ifdef _ANGEL_SUMMON
	initMissionTable();
#endif

#ifdef _VIP
		log( "\n·þÎñ¶Ë°æ±¾: <%s »áÔ±°æ>\n" , SERVER_VERSION );
#else
		log( "\n·þÎñ¶Ë°æ±¾: <%s ÆÕͨ°æ>\n" , SERVER_VERSION );
#endif
		log( "\n·þÎñ¶Ë±àÒëÍê³Éʱ¼ä:%s %s by 17CSA¹¤×÷ÊÒ\n" , __DATE__ , __TIME__ );
		
    log( "\n¿ªÊ¼¹¤×÷...\n" );

    signal(SIGUSR1,sigusr1);	// Arminius 7.20 memory lock
	int itime=0;
	while(1){
		itime++;
		if(itime>cpuuse){
			itime=0;
			usleep(1);
		}
    int newti,i;
    static time_t main_loop_time;
		
		sys_time = time(NULL);

		if( main_loop_time != sys_time){
            main_loop_time = time(NULL);
            counter1++;
            counter2++;
            counter3++;
            counter4++;
			//andy add 2002/06/20
			UNlockM_UnlockPlayer();

#ifdef _ANGEL_SUMMON
			checkMissionTimelimit();
#endif
            // Nuke *1 1012
            if( counter1 > Total_Charlist ){
            		counter1=0;
                char *c = ctime( &main_loop_time );
                if( c ){
                    struct timeval st,et;
                    log( "\nTIME:%s\n",c );
                    gettimeofday( &st,NULL);
                    dbFlush(dbdir);
                    gettimeofday( &et,NULL);
                    log( "Flushed db(%fsec)\n", time_diff(et,st) );
                    log( "µµ°¸±íÁÐ×ÜÊý:%d NG:%d\n",
                         total_ok_charlist, total_ng_charlist );
                }
            }
            // Nuke **1 1012
            //if( ( counter % 600 ) == 0 ){
            if( counter2 > Expired_mail ){
            		counter2=0;
                struct timeval st,et;
                gettimeofday( &st,NULL);
                expireMail();
                gettimeofday( &et,NULL);
                log( "¹ýÆÚÓʼþ(%fsec)\n", time_diff(et,st) );
            }
#ifdef	_FAMILY
            //if ((counter % 300) == 0) // 300( -> 60)
      if( counter4 > Write_Family ) // 300( -> 60)
      {
      	  counter4=0;
         	struct timeval st, et;
         	gettimeofday(&st, NULL);
         	writeFamily(familydir);
         	writeFMPoint(fmpointdir);
         	writeFMSMemo(fmsmemodir);
         	gettimeofday(&et, NULL);
         	log("¼Ç¼¼Ò×å(%fsec)\n", time_diff(et, st));
      }
#endif
        }
    newti = tcpstruct_accept1();
    if( newti >= 0 ){
			log( "ͬÒâ: %d\n" , newti );
			gs[newti].use = 1;
    }

        for(i=0;i<MAXCONNECTION;i++){
//        	char buf[CHARDATASIZE * 16;
            char buf[CHARDATASIZE];
            int l;
            l = tcpstruct_readline_chop( i , buf , sizeof( buf )- 1);
						{
                if( !gs[i].use )continue;
                if( l > 0 ){
									char debugfun[256];
                    buf[l]=0;
                    if( saacproto_ServerDispatchMessage( i , buf, debugfun)<0){
                        // Nuke start
                        //tcpstruct_close(i);// avoid the shutdown the gmsv ttom
                        log( "GMSV(%s) ÏûÏ¢:%s\n", gs[i].name, debugfun);
                        FILE *fp;
                        if( (fp=fopen( "badgmsv.txt", "a+")) != NULL ){
													fprintf( fp, "GMSV(%s) ÏûÏ¢:%s\n", gs[i].name, debugfun);
													fclose( fp);
												}
                    }
                } else if( l == TCPSTRUCT_ETOOLONG ){
                    log( "ºÜ³¤:%d ·þÎñÆ÷Ãû::%s\n", i , gs[i].name );
                    FILE *fp;
                        if( (fp=fopen( "badgmsv.txt", "a+")) != NULL ){
													fprintf( fp, "ºÜ³¤:%d ·þÎñÆ÷Ãû::%s\n", i , gs[i].name);
													fclose( fp);
												}
                    logout_game_server( i );
                } else if( l < 0 ){
                    log( "¹Ø±Õ:%d ·þÎñÆ÷Ãû:%s\n", i , gs[i].name );
                    FILE *fp;
                        if( (fp=fopen( "badgmsv.txt", "a+")) != NULL ){
													fprintf( fp, "¹Ø±Õ:%d ·þÎñÆ÷Ãû:%s\n", i , gs[i].name);
													fclose( fp);
												}
                    logout_game_server(i);
                } else if( l == 0 ){
                    ;
                }
            }
        }
        {
            static struct timeval tv_loop_store ;
            struct timeval now;
            double dif;
            gettimeofday( &now , NULL );
            dif = time_diff( now, tv_loop_store );
            if( dif > 0.5 ){ // CoolFish 0.1 -> 0.5 2001/5/19
                //log( "Sl:%f" , dif );
            }
            tv_loop_store = now;
        }

        /* ·¥¡õÊСõ¼°ÕýÄÌةʧËüÐþëƩÍÍÔ£Û
           ÕýÄÌةʧËüÐþØÆÐ×ÈÕ·òºëë·ÖØÆ»¯·¥¡õÊСõëڽØÆ»¯ØÆÒýµ¤£Û
           Æ¥±Ø¡õØ©ÈÓ¡õÌï¡õ±å  ±Î¶Á±å·´É§ôÅÔÊÔ           */
    }
    return 0;       
}
Esempio n. 6
0
File: cmdline.c Progetto: nu-dev/nu
int main(int argc, char **argv) {
    return fprintf(stderr, parseOpts(argc, argv) == 0? "" : "["KRED"ERR"RESET"] Errors occured. Please check them and run again.\n");
}
Esempio n. 7
0
int
main(int argc, char **argv) {

    int         iStatus,
              iGetCount,
                 retVal; // error checking
    char       cGetData,
               *cBufPtr,
               *cBufPtr2;
    char  sDataPath_old[ 256 ],
          sDataPath_now[ 256 ],
                    tty[ C_ARRAYSIZE ];

    FILE    *fWriteData = NULL;
    time_t      timeNow;
    long        nanosec;

    struct  tm         *stTm;
    struct  termio  stTermio;
    struct  timespec   stNow;


    memset( sDataPath_old, '\0', sizeof( sDataPath_old ) );
    memset( tty, '\0', sizeof tty  );

    signal( SIGINT, sd_hook );

    cBufPtr2 = tty;
    parseOpts(argc,argv,cBufPtr2);
    if ( 0 == strcmp(tty,"") ) {
        /* no tty specified */
        strncpy(tty,SERIAL_DEVICE,sizeof tty ) ;
        printf("[Notice] Serial device not specified, using default: %s\n",tty);
    }

    /* open serial port */
    sprintf( sBuffer, "Opening serial device: %s\n", tty );
    printf(sBuffer);
    iSerialFD = open( SERIAL_DEVICE, O_RDWR );
    if ( iSerialFD < 0 ) {
        sprintf( sBuffer, "[Error] open of %s failed... ", tty );
        perror( sBuffer );
        exit( 0 );
    }
    printf("Opening serial device: success\n");


    iStatus = ioctl( iSerialFD, TCGETA, &stTermio );
    if ( iStatus < 0 ) {
        perror( "[Error] ioctl (TCGETA) failed...");
        sd_hook();
    }

    stTermio.c_cflag |=  B9600;
    stTermio.c_lflag &= ~ECHO;
    stTermio.c_lflag &= ~ICANON;

    stTermio.c_cc[  VMIN ] = 1;
    stTermio.c_cc[ VTIME ] = 0;

    iStatus = ioctl( iSerialFD, TCSETA, &stTermio );
    if ( iStatus < 0 ) {
        perror( "[Error] ioctl (TCSETA) failed..." );
        sd_hook();
    } 
    printf("Setting port I/O parameters: success\n");

  /************************************************************/
  /*     SR620 パラメータ設定 (設定値の反映確認は省略)      */
  /*                                                          */

    /* リセット */
    strcpy( sBuffer, "*RST;*CLS\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* timebase = internal */
    strcpy( sBuffer, "CLCK0\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* mode = time */
    strcpy( sBuffer, "MODE0\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* trigger mode = +time (not +/- time) */
    strcpy( sBuffer, "ARMM1\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* display = mean */
    strcpy( sBuffer, "DISP0\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* Set the measurement source...  [ 0:A , 1:B ] */
    strcpy( sBuffer, "SRCE0\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* Set the number of samples... */
    strcpy( sBuffer, "SIZE1\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* Set the trigger slope...  [ 0:positive , 1:negative ] */
    strcpy( sBuffer, "TSLP1,0;TSLP2,0\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* Set the trigger level... */
    strcpy( sBuffer, "LEVL1,1.2;LEVL2,1.2\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* Set the trigger ac/dc coupling...  [ 0:DC , 1:AC ] */
    strcpy( sBuffer, "TCPL1,0;TCPL2,0\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* Set the trigger impedance...  [ 0:50ohm , 1:1meg ] */
    strcpy( sBuffer, "TERM1,0;TERM2,0\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* local/remote = remote */
    strcpy( sBuffer, "LOCL1\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

    /* auto measure */
    strcpy( sBuffer, "AUTM1\n" );
    write( iSerialFD, sBuffer, strlen( sBuffer ) );

  /*                                                          */
  /*     SR620 パラメータ設定 (設定値の反映確認は省略)      */
  /************************************************************/


    while ( 1 ) {

        strcpy( sBuffer, "*WAI;XAVG?\n" );
        write( iSerialFD, sBuffer, strlen( sBuffer ) );

        cBufPtr = sBuffer;

        while ( 1 ) {

            // read results
            iGetCount = read( iSerialFD, &cGetData, 1 );
            if ( iGetCount < 0 ) {
                perror( "[Error] read failed..." );
                sd_hook();
            }

            *cBufPtr = cGetData;
            cBufPtr++;
            if (cBufPtr>=sBuffer+sizeof(sBuffer))
              {
              fprintf(stderr,"Answer exeeds bounds.\n\n");
              return 0;
              }

            if ( ( cGetData == '\n' ) || ( cGetData == '\0' ) ) {
                /* get new timestamp */
                retVal = clock_gettime( CLOCK_REALTIME, &stNow );
                if ( retVal != 0 ) {
                    perror("[Error] clock_gettime() failed..." );
                }

                tcflush( iSerialFD, TCIFLUSH );

                *cBufPtr = '\0';

                /* pull 'time_t' type (aka UNIXtime) from 'timespec' type variable 'stNow' */
                retVal = clock_gettime( CLOCK_REALTIME, &stNow );
                timeNow = stNow.tv_sec ;
                /* second part of struct 'timespec' contains nanosecond part */
                nanosec = stNow.tv_nsec ;
                stTm = gmtime( &timeNow );

                /* Pick log file */
                sprintf( sDataPath_now, "%s%d%02d%02d.dat"
                                      , DATA_DIR, ( stTm->tm_year + 1900 ), ( stTm->tm_mon + 1 ), stTm->tm_mday );
                if ( strcmp( sDataPath_now, sDataPath_old ) != 0 ) {
                    if ( fWriteData != NULL ) {
                        fclose( fWriteData );
                    }
                    fWriteData = fopen( sDataPath_now, "aw" );
                    strcpy( sDataPath_old, sDataPath_now );
                }

                /* write data to log */
                strftime(sISO8601, sizeof(sISO8601),"%Y-%m-%dT%H:%M:%S", stTm);
                fprintf( fWriteData, "%s %12.12lf %ju %09li\n"
                                   , sISO8601
                                   , atof( sBuffer )
                                   , (uintmax_t)timeNow
                                   , nanosec
                                       );
                fflush( fWriteData );

                break;

            }

        }

    }

}
Esempio n. 8
0
int main( int argc , char **argv )
{
		parseOpts( argc, argv );
		
    // Nuke +1 1012: Loop counter
    int counter1 = 0;
    
    int counter2 = 0;
    
    int counter3 = 0;
    
    int counter4 = 0;

    signal(SIGUSR1, sigusr1);

    log_rotate_interval = 3600 * 24 * 7;

    Lock_Init();	// Arminius 7.17 memory lock

		UNlockM_Init();
    
    if(readConfig( "acserv.cf" )<0){
        log( "�޷��ڵ�ǰĿ¼���ȡ acserv.cf .\n" );
        exit(1);
    }

#ifdef _SASQL
    sasql_init();
#endif	
    log( "��ȡ����Ŀ¼\n" );
    dbRead( dbdir );
#ifdef	_FAMILY
    log("��ȡ ����ׯ԰\n");
    readFMSMemo(fmsmemodir);
    log("��ȡ ��������\n");
    readFMPoint(fmpointdir);
    log("��ȡ ����Ŀ¼\n");
    readFamily(familydir);
#endif
    log( "׼�� ����Ŀ¼\n" );
    prepareDirectories( chardir );
    log( "׼�� ��־Ŀ¼\n" );
    prepareDirectories( logdir );
    log( "׼�� �ʼ�Ŀ¼\n" );
    prepareDirectories( maildir );

#ifdef _SLEEP_CHAR
    prepareDirectories( sleepchardir );
    log( "׼�� ˯�ߵ���Ŀ¼\n" );
#endif

    /* �����Ȼ��¶�����ë  �ij�� */
    if( readMail(maildir) < 0 ){
        log( "���ܳ�ʼ���ʼ�\n" );
        exit(1);
		}

    /* TCPSTRUCT ���� */
    {
        int tcpr;
        if( ( tcpr = tcpstruct_init( NULL , port , 0 ,
						CHARDATASIZE * 16 * MAXCONNECTION , 1 /* DEBUG */ ) ) < 0 ){
            log( "���ܿ���TCP: %d\n", tcpr );
            return 1;
        }
    }
    saacproto_InitServer( netWrite , CHARDATASIZE );

    {
        struct sigaction s,os;
        
        bzero( &s, sizeof(s));
        s.sa_handler = sighandle;
        s.sa_flags = SA_NOMASK;
        sigaction( SIGTERM,  &s, &os );

        bzero( &s, sizeof(s));
        s.sa_handler = sighandle;
        s.sa_flags = SA_NOMASK;
        sigaction( SIGINT,  &s, &os );

        bzero( &s, sizeof( s ));
        s.sa_handler = SIG_IGN;
        s.sa_flags = SA_NOMASK;
        sigaction( SIGPIPE, &s, &os );

    }

#ifdef _AC_SEND_FM_PK		 // WON ADD ׯ԰��ս�б�����AC
	load_fm_pk_list();
#endif

#ifdef _ACFMPK_LIST
	FMPK_LoadList();
#endif
#ifdef _ALLDOMAN
	LOAD_herolist();  // Syu ADD ���а�NPC
#endif

#ifdef _VIP
		log( "\n����˰汾: <%s ��Ա��>\n" , SERVER_VERSION );
#else
		log( "\n����˰汾: <%s ��ͨ��>\n" , SERVER_VERSION );
#endif
		log( "\n����˱������ʱ��:%s %s by ��zoro������\n" , __DATE__ , __TIME__ );
		
    log( "\n��ʼ����...\n" );

    signal(SIGUSR1,sigusr1);	// Arminius 7.20 memory lock
	int itime=0;
	while(1){
		itime++;
		if(itime>cpuuse){
			itime=0;
			usleep(1);
		}
    int newti,i;
    static time_t main_loop_time;
		
		sys_time = time(NULL);

		if( main_loop_time != sys_time){
            main_loop_time = time(NULL);
            counter1++;
            counter2++;
            counter3++;
            counter4++;
			//andy add 2002/06/20
			UNlockM_UnlockPlayer();

#ifdef _ANGEL_SUMMON
			checkMissionTimelimit();
#endif
            // Nuke *1 1012
            if( counter1 > Total_Charlist ){
            		counter1=0;
                char *c = ctime( &main_loop_time );
                if( c ){
                    struct timeval st,et;
                    log( "\nTIME:%s\n",c );
                    gettimeofday( &st,NULL);
                    dbFlush(dbdir);
                    gettimeofday( &et,NULL);
                    log( "Flushed db(%fsec)\n", time_diff(et,st) );
                    log( "������������:%d NG:%d\n",
                         total_ok_charlist, total_ng_charlist );
                }
            }
            // Nuke **1 1012
            //if( ( counter % 600 ) == 0 ){
            if( counter2 > Expired_mail ){
            		counter2=0;
                struct timeval st,et;
                gettimeofday( &st,NULL);
                expireMail();
                gettimeofday( &et,NULL);
                log( "�����ʼ�(%fsec)\n", time_diff(et,st) );
            }
#ifdef	_FAMILY
            //if ((counter % 300) == 0) // 300( -> 60)
      if( counter4 > Write_Family ) // 300( -> 60)
      {
      	  counter4=0;
         	struct timeval st, et;
         	gettimeofday(&st, NULL);
         	writeFamily(familydir);
         	writeFMPoint(fmpointdir);
         	writeFMSMemo(fmsmemodir);
         	gettimeofday(&et, NULL);
         	log("��¼����(%fsec)\n", time_diff(et, st));
      }
#endif
        }
    newti = tcpstruct_accept1();
    if( newti >= 0 ){
			log( "ͬ��: %d\n" , newti );
			gs[newti].use = 1;
    }

        for(i=0;i<MAXCONNECTION;i++){
//        	char buf[CHARDATASIZE * 16;
            char buf[CHARDATASIZE];
            int l;
            l = tcpstruct_readline_chop( i , buf , sizeof( buf )- 1);
						{
                if( !gs[i].use )continue;
                if( l > 0 ){
									char debugfun[256];
                    buf[l]=0;
                    if( saacproto_ServerDispatchMessage( i , buf, debugfun)<0){
                        // Nuke start
                        tcpstruct_close(i);// avoid the shutdown the gmsv ttom
                        log( "GMSV(%s) ��Ϣ:%s\n", gs[i].name, debugfun);
                    }
                } else if( l == TCPSTRUCT_ETOOLONG ){
                    log( "�ܳ�:%d ��������::%s\n", i , gs[i].name );
                    logout_game_server( i );
                } else if( l < 0 ){
                    log( "�ر�:%d ��������:%s\n", i , gs[i].name );
                    logout_game_server(i);
                } else if( l == 0 ){
                    ;
                }
            }
        }
        {
            static struct timeval tv_loop_store ;
            struct timeval now;
            double dif;
            gettimeofday( &now , NULL );
            dif = time_diff( now, tv_loop_store );
            if( dif > 0.5 ){ // CoolFish 0.1 -> 0.5 2001/5/19
                //log( "Sl:%f" , dif );
            }
            tv_loop_store = now;
        }

        /* �����С�������ةʧ����ëƩ���£�
           ����ةʧ���������շ��ë���ƻ������С�ëڽ�ƻ���������
           ƥ�ء�ة�ӡ������  �ζ��巴ɧ������           */
    }
    return 0;       
}
Esempio n. 9
0
int main(int argc, char** argv) {
  initOpts(&Opts::opts);
  parseOpts(argc, argv, &Opts::opts);

  // Begin by setting up our usage environment:
  TaskScheduler* scheduler = BasicTaskScheduler::createNew();
  env = BasicUsageEnvironment::createNew(*scheduler);

  // Create 'groupsocks' for RTP and RTCP:
  struct in_addr destinationAddress;
  destinationAddress.s_addr = chooseRandomIPv4SSMAddress(*env);
  // Note: This is a multicast address.  If you wish instead to stream
  // using unicast, then you should use the "testOnDemandRTSPServer"
  // test program - not this test program - as a model.

  const unsigned short rtpPortNum = 18888;
  const unsigned short rtcpPortNum = rtpPortNum+1;
  const unsigned char ttl = 255;

  char socks[1000] = { 0 };
  sprintf(socks, "GroupSocket: %d.%d.%d.%d:%d",
	(destinationAddress.s_addr >> 24) & 0xff,
	(destinationAddress.s_addr >> 16) & 0xff,
	(destinationAddress.s_addr >> 8) & 0xff,
	destinationAddress.s_addr & 0xff,
	rtpPortNum);

  *env << socks << "\n";

  const Port rtpPort(rtpPortNum);
  const Port rtcpPort(rtcpPortNum);

  Groupsock rtpGroupsock(*env, destinationAddress, rtpPort, ttl);
  rtpGroupsock.multicastSendOnly(); // we're a SSM source
  Groupsock rtcpGroupsock(*env, destinationAddress, rtcpPort, ttl);
  rtcpGroupsock.multicastSendOnly(); // we're a SSM source

  // Create a 'H264 Video RTP' sink from the RTP 'groupsock':
  OutPacketBuffer::maxSize = 200000;
  videoSink = H264VideoRTPSink::createNew(*env, &rtpGroupsock, 96);

  // Create (and start) a 'RTCP instance' for this RTP sink:
  const unsigned estimatedSessionBandwidth = 500; // in kbps; for RTCP b/w share
  const unsigned maxCNAMElen = 100;
  unsigned char CNAME[maxCNAMElen+1];
  gethostname((char*)CNAME, maxCNAMElen);
  CNAME[maxCNAMElen] = '\0'; // just in case
  RTCPInstance* rtcp
  = RTCPInstance::createNew(*env, &rtcpGroupsock,
			    estimatedSessionBandwidth, CNAME,
			    videoSink, NULL /* we're a server */,
			    True /* we're a SSM source */);
  // Note: This starts RTCP running automatically

  RTSPServer* rtspServer = RTSPServer::createNew(*env, 8554);
  if (rtspServer == NULL) {
    *env << "Failed to create RTSP server: " << env->getResultMsg() << "\n";
    exit(1);
  }
  ServerMediaSession* sms
    = ServerMediaSession::createNew(*env, "source", inputFileName,
		   "Session streamed by \"testH264VideoStreamer\"",
					   True /*SSM*/);
  sms->addSubsession(PassiveServerMediaSubsession::createNew(*videoSink, rtcp));
  rtspServer->addServerMediaSession(sms);

  char* url = rtspServer->rtspURL(sms);
  *env << "Play this stream using the URL \"" << url << "\"\n";
  delete[] url;

  // Start the streaming:
  *env << "Beginning streaming...\n";
  play();

  env->taskScheduler().doEventLoop(); // does not return

  return 0; // only to prevent compiler warning
}