Пример #1
0
int main(void) {
  dyad_Stream *s;
  dyad_init();

  s = dyad_newStream();
  dyad_addListener(s, DYAD_EVENT_ERROR,  onError,  NULL);
  dyad_addListener(s, DYAD_EVENT_ACCEPT, onAccept, NULL);
  dyad_listen(s, 8000);

  while (dyad_getStreamCount() > 0) {
    dyad_update();
  }

  return 0;
}
Пример #2
0
int main(void) {
  dyad_Stream *s;
  dyad_init();

  s = dyad_newStream();
  dyad_addListener(s, DYAD_EVENT_CONNECT, onConnect, NULL);
  dyad_addListener(s, DYAD_EVENT_ERROR,   onError,   NULL);
  dyad_addListener(s, DYAD_EVENT_DATA,    onData,    NULL);
  dyad_connect(s, "time-nw.nist.gov", 13);

  while (dyad_getStreamCount() > 0) {
    dyad_update();
  }
  
  dyad_shutdown();
  return 0;
}
Пример #3
0
/// \brief  Main executable
/// \return 0
int main()
{
    srand((int)time(0));
    initscr();
    clear();
    curs_set(0);
    noecho();
    raw();
    if(has_colors())start_color();
    settings();
    dyad_init();
    pthread_attr_init (&AThread);
    pthread_attr_setdetachstate (&AThread, PTHREAD_CREATE_JOINABLE);
    bool cho=true;
    while(cho){
        pthread_mutex_init (&MBoard, NULL);
        pthread_cond_init (&CBoard, NULL);
        pthread_mutex_init (&MInfo, NULL);
        pthread_cond_init (&CInfo, NULL);
        pthread_mutex_init (&MScr, NULL);
        pthread_mutex_init (&MNet, NULL);
        pthread_mutex_init (&MNetC, NULL);
        pthread_cond_init (&CNet, NULL);
        Clrboard(curs);
        welcome();
        if(isnetworking){
            dyad_setUpdateTimeout(0.05);
            pthread_create (&TNetworkPlay, &AThread, t_NetworkPlay, NULL);
            while (dyad_getStreamCount() > 0 && isconnected) {
                pthread_mutex_lock(&MNet);
                dyad_update();
                pthread_mutex_unlock(&MNet);
                usleep(10000);
            }
            if(result){
                if(score[0]>score[1])
					c_info("You Win!");
				else if(score[0]<score[1])
					c_info("You Lost!");
				else
					c_info("Neck and neck!");
                pthread_cancel(TNetworkPlay);
                pthread_join(TNetworkPlay, NULL);
                pthread_cancel(TNetworkSend);
                pthread_cancel(TNetworkShow);
                pthread_cond_signal (&CBoard);
                pthread_cond_signal (&CNet);
                pthread_join(TNetworkSend, NULL);
                pthread_join(TNetworkShow, NULL);
                pthread_cancel(TInfo);
                pthread_cond_signal (&CInfo);
                pthread_join(TInfo, NULL);
                getch();
            }
            cho=0;
        }else{
            cho=play();
        }
        if(result){
            pthread_mutex_destroy (&MScr);
            pthread_mutex_destroy (&MInfo);
            pthread_cond_destroy (&CInfo);
            pthread_mutex_destroy (&MBoard);
            pthread_cond_destroy (&CBoard);
            pthread_mutex_destroy (&MNet);
            pthread_mutex_destroy (&MNetC);
            pthread_cond_destroy (&CNet);
        }
    }
    if(result){c_forceQuit();}
    return 0;
}
Пример #4
0
/// \brief  The thread to print Board to screen
/// \param  arg Void
/// \return void* NULL
void* t_NetworkPlay(void* arg){
    pthread_mutex_lock(&MNetC);
    pthread_mutex_lock(&MBoard);
    curs=0;
    if(boardseed[curs]==NA){
        boardseed[curs]=Rando(RAND_MAX);
    }
    srand(boardseed[curs]);
    Clrboard(curs);
    clear();
    pthread_create (&TNetworkShow, &AThread, t_NetworkShow , NULL);
    pthread_create (&TNetworkSend, &AThread, t_NetworkSend , NULL);
    keypad(stdscr, TRUE);
    int ch=0;
    int res=NA,lastres=NA;GetRandNums();
    pthread_mutex_unlock(&MBoard);
    usleep(100000);
    pthread_cond_signal(&CNet);
    pthread_cond_signal(&CBoard);
    usleep(100000);
    pthread_cond_signal(&CNet);
    pthread_cond_signal (&CBoard);
    while((ch = getch())&&dyad_getStreamCount()>0){
        pthread_testcancel();
        move(0,0);
        clrtoeol();
        pthread_mutex_lock(&MInfo);
        pthread_mutex_lock(&MScr);
        wclear(MenuWin);
        pthread_mutex_unlock(&MScr);
        memset(sinfo,0,sizeof(sinfo));
        pthread_mutex_unlock(&MInfo);
        pthread_cond_signal(&CInfo);
        lastres=res;
        pthread_mutex_lock(&MBoard);
        curs=0;
        switch(ch)
        {
            case KEY_LEFT:case 'H':case 'h':
                res=Eat(ELEFT);GetRandNums();
                break;
            case KEY_RIGHT:case 'L':case 'l':
                res=Eat(ERIGHT);GetRandNums();
                break;
            case KEY_UP:case 'K':case 'k':
                res=Eat(EUP);GetRandNums();
                break;
            case KEY_DOWN:case 'J':case 'j':
                res=Eat(EDOWN);GetRandNums();
                break;
            case 3:case KEY_F(1):
                pthread_mutex_unlock(&MBoard);
                c_tryQuit();
                pthread_mutex_lock(&MBoard);
                break;
			case ':':
				pthread_mutex_unlock(&MBoard);
				x_netCommand();
			    pthread_mutex_lock(&MBoard);
                break;
        }
        pthread_mutex_unlock(&MBoard);
        pthread_cond_signal (&CBoard);
        pthread_cond_signal (&CNet);
        if(res==lastres&&res==0){
			if(score[0]>score[1])
				c_info("You Win!");
			else if(score[0]<score[1])
				c_info("You Lost!");
			else
				c_info("Neck and neck!");
            result=0;
            break;
        }
    }
    getch();
    dyad_end(SGaming);
    dyad_end(SServ);
    dyad_end(SClient);
    usleep(100000);
    pthread_cancel(TNetworkSend);
    pthread_cancel(TNetworkShow);
    pthread_cond_signal (&CBoard);
    pthread_cond_signal (&CNet);
    pthread_join(TNetworkSend, NULL);
    pthread_join(TNetworkShow, NULL);
    pthread_cancel(TInfo);
    pthread_cond_signal (&CInfo);
    pthread_join(TInfo, NULL);
    usleep(100000);
    wclear(BoardWin);
    wclear(MenuWin);
    delwin(BoardWin);
    delwin(MenuWin);
    BoardWin=NULL;
    MenuWin=NULL;
    pthread_mutex_unlock(&MNetC);
    pthread_mutex_destroy (&MScr);
    pthread_mutex_destroy (&MInfo);
    pthread_cond_destroy (&CInfo);
    pthread_mutex_destroy (&MBoard);
    pthread_cond_destroy (&CBoard);
    pthread_mutex_destroy (&MNet);
    pthread_mutex_destroy (&MNetC);
    pthread_cond_destroy (&CNet);
    c_forceQuit();
    return NULL;
}
Пример #5
0
		static int getStreamCount() {
			return dyad_getStreamCount();
		}