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; }
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; }
/// \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; }
/// \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; }
static int getStreamCount() { return dyad_getStreamCount(); }