Пример #1
0
int main(int argc, char * argv[]) {

   // init

   util_init();
   my_random_init(); // for opening book

   printf("Toga II 1.2.1a UCI based on Fruit 2.1 by Thomas Gaksch and Fabien Letouzey. Settings by Dieter Eberle\n");

   // early initialisation (the rest is done after UCI options are parsed in protocol.cpp)

   option_init();

   square_init();
   piece_init();
   pawn_init_bit();
   value_init();
   vector_init();
   attack_init();
   move_do_init();

   random_init();
   hash_init();

   trans_init(Trans);
   book_init();

   // loop

   loop();

   return EXIT_SUCCESS;
}
Пример #2
0
int main(int argc, char *argv[]) {

	// init

	util_init();
	my_random_init(); // for opening book

	printf(
		"Gambit Fruit based on Fruit 2.1 and Toga by Ryan Benitez, Thomas Gaksch and Fabien Letouzey\nEdit by Evgeniy Zheltonozhskiy\n");

	// early initialisation (the rest is done after UCI options are parsed in protocol.cpp)

	option_init();

	square_init();
	piece_init();
	pawn_init_bit();
	value_init();
	vector_init();
	attack_init();
	move_do_init();

	random_init();
	hash_init();

	trans_init(Trans);
	book_init();

	// loop
	loop();

	return EXIT_SUCCESS;
}
Пример #3
0
DWORD WINAPI  ThreadFunc(LPVOID lpParam)
{
	if(WaitForSingleObject(Engine_ready_ok,INFINITE)!= WAIT_OBJECT_0){
		my_log("what happened?\n");//i have no idea!
		return 0;
	}
	//seed the random number generator!
	my_random_init();
	//got a "readyok" so we are done done initializing the engine
	my_log("Started xboard_step() thread \n");
	xboard_step();//runs in a loop
	return 0;//
}
Пример #4
0
TEngine::TEngine(AnsiString FileName)
{
   util_init();
   my_random_init();
   square_init();
   piece_init();
   pawn_init_bit();
   value_init();
   vector_init();
   attack_init();
   move_do_init();
   random_init();
   hash_init();

   Reversed = true;
   board_from_fen(&StartBoard,StartFen);
   board_from_fen(&Board,StartFen);
   GameStarted = false;

   StateNewGame = false;
   LastCommitMove[0] = 0;
   Process = new TProcess(FileName);
   Process->Send("uci");
   char buf[10000];
   do {
      Sleep(10);
      if (Process->Get(buf)) {
        char *next_line = buf;
        while (true) {
           char *cur_line = next_line;
           if (cur_line[0] == 0)
             break;
           char *end = strstr(cur_line,"\r\n");
           end[0] = 0;
           end[1] = 0;
           next_line = end + 2;
           char *cur_word;
           while (cur_line) {
             cur_word = get_cur_word_str(&cur_line);
             int pos;
             if (string_equal(cur_word,"id")) {
               cur_word = get_cur_word_str(&cur_line);
               if (string_equal(cur_word,"name")) {
                   AnsiString EngineName = cur_line;
                   MainForm->lbEngineName->Caption = EngineName;
               }
             }
             if (string_equal(cur_word,"uciok")) {
                if (MainForm->MultiPV > 1) {
                   Process->Send("setoption name MultiPV value " + IntToStr(MainForm->MultiPV));
                   Sleep(100);
                   Process->Get(buf);
                }
                Process->Send("setoption name Hash value " + IntToStr(MainForm->HashSize));
                return;
             }
           }
        }
      }
   }
   while (true);
}
Пример #5
0
int main(int argc, char * argv[]) {

	//   board_t board[1];

	// init

	Init = false;
#ifdef _WIN32
	signal(SIGINT,SIG_IGN);
	signal(SIGTERM,SIG_IGN);
#ifdef SIGPIPE
	signal(SIGPIPE,SIG_IGN);
#endif
#endif

	util_init();
	printf("PolyGlot %s by Fabien Letouzey\n",Version);

	option_init();
	uci_options_init();
	square_init();
	piece_init();
	attack_init();

	hash_init();

	my_random_init();

	// build book

	if (argc >= 2 && my_string_equal(argv[1],"make-book")) {
		book_make(argc,argv);
		return EXIT_SUCCESS;
	}

	if (argc >= 2 && my_string_equal(argv[1],"merge-book")) {
		book_merge(argc,argv);
		return EXIT_SUCCESS;
	}

	// read options

	if (argc == 2) option_set("OptionFile",argv[1]); // HACK for compatibility

	parse_option(); // HACK: also launches the engine

	// EPD test

	if (argc >= 2 && my_string_equal(argv[1],"epd-test")) {
		epd_test(argc,argv);
		return EXIT_SUCCESS;
	}

	// opening book

	book_clear();
	if (option_get_bool("Book")){
		if (book_open(option_get_string("BookFile")))
			option_set("Book","false");//some error,set to false
	}
	//adapter_loop();
#ifdef _WIN32
	Engine_ready_ok=CreateEvent(NULL,FALSE,FALSE,NULL);
	Engine_sync_stop = CreateEvent(NULL,FALSE,FALSE,NULL);
	// all set and done.lets open a thread for fun
	DWORD dwThreadID;
	HANDLE hThread;
	hThread= CreateThread(
		NULL,	//default security attributes
		0,	//default stacksize
		ThreadFunc,	//The thread function!
		&sCommand,	//the commands for the thread function
		0,			//default creation flags
		&dwThreadID);	//the thread identifier
	Idle500msecs();//
	if(hThread==NULL){
		my_log("CreateThread failed\n");
	}

#endif
	adapter_loop();
	engine_send(Engine,"quit");
	engine_close(Engine);
#ifdef _WIN32
	CloseHandle(hThread); //close the thread;
#endif
	return EXIT_SUCCESS;
}
Пример #6
0
int main(int argc, char **argv)
{
    int do_fork = 1;
    char *config_fn = DEFAULT_CONFIG_FILE;
    char *pid_fn = DEFAULT_PID_FILE;
    int c;

    evloop = EV_DEFAULT;
    ev_started_at = ev_time();

    opterr = 0;

    while ((c = getopt (argc, argv, "vhdfc:p:s:l:")) != -1) {
	switch (c) {
	case 'v':
	    verbose++;
	    break;
	case 'h':
	    usage(0);
	    return 0;
	case 'd':
	    debug = 1;
	    do_fork = 0;
	    break;
	case 'f':
	    do_fork = 0;
	    break;
	case 'c':
	    config_fn = optarg;
	    break;
	case 'p':
	    pid_fn = optarg;
	    break;
	case 's':
	    server_str_id = strdup(optarg);
	    break;
	case 'l':
	    server_listen_port = atoi(optarg);
	    if (server_listen_port < 1 || server_listen_port > 65534){
		fprintf (stderr, "Invalid listen port: %s.\n", optarg);
		return 1;
	    }
	    break;
	case '?':
	    if ((optopt == 'c') || (optopt == 'p') || (optopt == 's') || (optopt == 'l'))
		fprintf (stderr, "Option -%c requires an argument.\n", optopt);
	    else if (isprint (optopt))
		fprintf (stderr, "Unknown option `-%c'.\n", optopt);
	    else
		fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt);

	    return 1;

	default:
	    usage();
	    return 1;
	}
    }

    if (optind < argc) {
	fprintf (stderr, "Unknown option: %s.\n", argv[optind]);
	return 1;
    }


    rtsp_server = rtsp_alloc();
    if (!rtsp_server){
	return 0;
    }

    log_to_stderr = !do_fork;

    if (!log_to_stderr)
	openlog(PROGRAM_NAME, LOG_PID, LOG_DAEMON);

    if (load_config(config_fn)) {
	fprintf (stderr, "Error loading config file.\n");
	return 2;
    }

    my_random_init();

    if (do_fork){
	log_debug("forking...");
	if (daemon(0, 0)){
	    log_error("daemonize failed: %s", strerror(errno));
	    return -1;
	}
	if (write_pid_file(pid_fn)){
	    log_warning("failed to create pid file");
	}
	ev_loop_fork(evloop);
    }


    if (!do_fork) {
	ev_signal_init (&signal_watcher1, sig_term_cb, SIGINT);
	ev_signal_start (evloop, &signal_watcher1);
    }

    ev_signal_init (&signal_watcher2, sig_term_cb, SIGTERM);
    ev_signal_start (evloop, &signal_watcher2);

    ev_signal_init (&signal_watcher3, sig_ignore_cb, SIGHUP);
    ev_signal_start (evloop, &signal_watcher3);

    ev_signal_init (&signal_watcher4, sig_ignore_cb, SIGPIPE);
    ev_signal_start (evloop, &signal_watcher4);


    if (csconv_init()){
	return 0;
    }
    if (rtsp_init(rtsp_server)){
	csconv_cleanup();
	return 0;
    }

    elevate_privileges();

    setup_io_prio();

    drop_privileges();

    log_info("starting...");

    ev_run(evloop, 0);

    log_info("cleaning up...");

    rtsp_cleanup(rtsp_server);

    csconv_cleanup();

    if (server_str_id)
	free(server_str_id);

    log_info("exiting...");

    if (!log_to_stderr)
	closelog();

    return 0;
}