int coro_test_2( co_t *co_p ) { static int i; if ( *co_p ) goto **co_p; /* begin */ for ( i = 0; i < CYCLE_COUNT; i++ ) { do { /* acquire */ do { /* wait */ *co_p = &&L__1; L__1: if (!( b_empty > 0 )) { /* cond */ return CO_WAIT; } } while ( 0 ); --b_empty; } while ( 0 ); check_mark( b_get()); do { /* release */ ++b_full; } while ( 0 ); } /* end */ *co_p = &&L__END_test_2; L__END_test_2: return CO_END; }
int wait(int sockfd,User_List play_list[]){ printf("\nDoi nguoi choi khac...(hoac an 1 phim de vao MENU)"); printf("\n"); int rv,t,x,n; char mesg[LEN],nick_name[LEN],buff[LEN]; fd_set readSet; struct timeval tv; while(1){ tv.tv_sec = 5; tv.tv_usec =0; FD_SET(sockfd, &readSet); FD_SET(fileno(stdin), &readSet); select(sockfd +1, &readSet, NULL, NULL, &tv); if (FD_ISSET(fileno(stdin), &readSet)){ fgets(buff,LEN,stdin); return 0; }else if(FD_ISSET(sockfd, &readSet)){ strcpy(mesg,""); n=recv(sockfd,mesg,LEN,0); if(n==0) return 3; t=check_mark(mesg); if(t == 3) x = answer_request(sockfd,mesg,play_list); return 1; } } }
void * MEM_realloc_func(MEM_Controller controller, char *filename, int line, void *ptr, size_t size) { void *new_ptr; size_t alloc_size; void *real_ptr; #ifdef DEBUG Header old_header; int old_size; alloc_size = size + sizeof(Header) + MARK_SIZE; if (ptr != NULL) { real_ptr = (char *)ptr - sizeof(Header); check_mark((Header *)real_ptr); old_header = *((Header *)real_ptr); old_size = old_header.s.size; unchain_block(controller, real_ptr); } else { real_ptr = NULL; old_size = 0; } #else alloc_size = size; real_ptr = ptr; #endif new_ptr = realloc(real_ptr, alloc_size); if (new_ptr == NULL) { if (ptr == NULL) { error_handler(controller, filename, line, "realloc(malloc)"); } else { error_handler(controller, filename, line, "realloc"); free(real_ptr); } } #ifdef DEBUG if (ptr) { *((Header *)new_ptr) = old_header; ((Header *)new_ptr)->s.size = size; rechain_block(controller, (Header *)new_ptr); set_tail(new_ptr, alloc_size); } else { set_header(new_ptr, size, filename, line); set_tail(new_ptr, alloc_size); chain_block(controller, (Header *)new_ptr); } new_ptr = (char *)new_ptr + sizeof(Header); if (size > old_size) { memset((char *)new_ptr + old_size, oxCC, size-old_size); } #endif return new_ptr; }
void MEM_check_block_func(MEM_Controller controller, char *filename, int line, void *p) { #ifdef DEBUG void *real_ptr = ((char*)p) - sizeof(Header); check_mark(real_ptr); #endif /* DEBUG */ }
void MEM_check_all_blocks_func(MEM_Controller controller, char *filename, int line) { #ifdef DEBUG Header *pos; for (pos = controller->block_header; pos; pos = pos->s.next) { check_mark(pos); } #endif /* DEBUG */ }
void choose_user(int sockfd,User_List play_list[]){ int i,t,a,x,y; User_List user_list[100]; char mesg[LEN],buff[LEN],buff2[LEN]="0",buff3[LEN]; strcpy(buff,"2|0|0|0|0"); send(sockfd,buff,strlen(buff),0); strcpy(mesg,""); recv(sockfd,mesg,LEN,0); t=check_mark(mesg); if(t == 2) a = take_user_list(mesg,user_list); //Lay danh sach user tu server if(a==0) { printf("\nKhong co user khac online!!"); return;} for ( i = 0; i < a; i++){ printf("\n%d.@%s",i+1,user_list[i].nick_name); } while(1){ printf("\nBan dung quan trang. Chon user de choi. "); scanf("%d",&y); fgets(buff3,LEN,stdin); if(0<y&&y<=a) break; } strcpy(mesg,""); creat_mesg(3,user_list[y-1].nick_name,buff2,buff2,buff2,mesg); send(sockfd,mesg,strlen(mesg),0); strcpy(mesg,""); recv(sockfd,mesg,LEN,0); t = check_mark(mesg); if(t == 4){ printf("\n@%s da dong y play\n",user_list[y-1].nick_name); add_partner(user_list[y-1].nick_name,play_list); // fgets(buff,LEN,stdin); playing(sockfd,play_list); return; }else if(t == 5){ printf("\nUser khong dong y play!!\n"); return; } }
int sign_up(int sockfd){ char mesg[LEN]; char partner[]="0"; char account[LEN]; char pass[LEN]; char nick_name[LEN]; int mark; char str_mark; while(1){ printf("\nNhap ten tai khoan: "); strcpy(account,""); fgets(account,LEN,stdin); account[strlen(account)-1]='\0'; if(check_xau(account) == 0 || check_input(account) == 0){ printf("\nMoi nhap lai!!"); }else break; } while(1){ printf("Nhap mat khau: "); strcpy(pass,""); fgets(pass,LEN,stdin); pass[strlen(pass)-1]='\0'; if(check_xau(pass) == 0 || check_input(pass) == 0){ printf("\nMoi nhap lai!!\n"); }else break; } while(1){ printf("Nhap nick name: "); strcpy(nick_name,""); fgets(nick_name,LEN,stdin); nick_name[strlen(nick_name)-1]='\0'; if(check_xau(nick_name) == 0 || check_input(nick_name) == 0){ printf("\nMoi nhap lai!!\n"); }else break; } creat_mesg(0,partner,account,pass,nick_name,mesg); send(sockfd, mesg,strlen(mesg), 0); strcpy(mesg,""); recv(sockfd, mesg, LEN, 0); mark= check_mark(mesg); if(mark == 1) { printf("\nDang ki thanh cong"); return 1;} else { printf("\nTai khoan da ton tai!!"); return 0;} }
void MEM_dump_blocks_func(MEM_Controller controller, FILE *fp) { #ifdef DEBUG Header *pos; int counter = 0; for (pos = controller->block_header; pos; pos = pos->s.next) { check_mark(pos); fprintf(fp, "[%04d]%p********************\n", counter, (char*)pos + sizeof(Header)); fprintf(fp, "%s line %d size..%d\n", pos->s.filename, pos->s.line, pos->s.size); counter++; } #endif /* DEBUG */ }
int login(int sockfd){ char mesg[LEN]; char partner[]="0"; char pass[LEN]; char account[LEN]; char nick_name[]="0"; int mark,n; char str_mark; while(1){ printf("\nNhap ten tai khoan: "); strcpy(account,""); fgets(account,LEN,stdin); account[strlen(account)-1]='\0'; if(check_xau(account) == 0 || check_input(account) == 0){ printf("\nMoi nhap lai!!"); }else break; } while(1){ printf("Nhap mat khau: "); strcpy(pass,""); fgets(pass,LEN,stdin); pass[strlen(pass)-1]='\0'; if(check_xau(pass) == 0 || check_input(pass) == 0){ printf("\nMoi nhap lai!!\n"); }else break; } strcpy(mesg,""); creat_mesg(1,partner,account,pass,nick_name,mesg); send(sockfd, mesg,strlen(mesg), 0); strcpy(mesg,""); n=recv(sockfd, mesg, LEN, 0); mark= check_mark(mesg); if(mark == 1) { printf("\nDang nhap thanh cong"); return 1;} else { printf("\nTai khoan hoac mat khau khong dung!!"); return 0;} }
void MEM_free_func(MEM_Controller controller, void *ptr) { void *real_ptr; #ifdef DEBUG int size; #endif if (ptr == NULL) return ; #ifdef DEBUG real_ptr = (char *)ptr - sizeof(Header); check_mark((Header *)real_ptr); size = ((Header *)real_ptr)->s.size; unchain_block(controller, real_ptr); memset(real_ptr, 0xCC, size + sizeof(Header)); #else real_ptr = ptr; #endif free(real_ptr); }
inline bool G1CMBitMap::parMark(HeapWord* addr) { check_mark(addr); return _bm.par_set_bit(heapWordToOffset(addr)); }
inline void G1CMBitMap::clear(HeapWord* addr) { check_mark(addr); _bm.clear_bit(heapWordToOffset(addr)); }
inline void G1CMBitMap::mark(HeapWord* addr) { check_mark(addr); _bm.set_bit(heapWordToOffset(addr)); }
int main(int argc, char** argv) { int sizes[] = {qbytes_iobuf_size, 1, 2, 0}; qbytes_iobuf_size = 2; check_mark("aaaa", "MaaaaRaaaa"); for( int i = 0; sizes[i] != 0; i++ ) { qbytes_iobuf_size = sizes[i]; check_mark_easy(); check_mark("aMbRc", "ac"); check_mark("aMbCc", "abc"); check_mark("MMaaRRb", "b"); check_mark("MMMaaRRRb", "b"); check_mark("MMMMMaaRRRRRb", "b"); check_mark("MMMMaaRbbRccRddRx", "x"); check_mark("MMMMMMaaRRRbbRccRddRx", "x"); check_mark("abc", "aMbRMbCc"); check_mark("abc", "MabcRabc"); check_mark("abc", "MabcC"); check_mark("abc", "MMabRabCc"); check_mark("abc", "MabMcRcC"); check_mark("a", "MaRa"); check_mark("aa", "MaaRaa"); check_mark("aaaa", "MaaaaRaaaa"); check_mark("aaaaaaaa", "MaaaaaaaaRaaaaaaaa"); check_mark("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "MaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); check_mark("abcdefjhijklmnopqrstuvwxyz", "MabCMMcdCCefMjhijCklmnoMpqrstuCvwxyz"); } }
void playing(int sockfd,User_List play_list[]){ point t1,t2; int i,j,t,a=0,x,y,rv; int luot,moved,predone; char *pch; char nick_name[LEN]; char mesg[LEN],mesg2[LEN]; char buff[LEN],buff1[LEN]="0",buff2[LEN]="0",buff3[LEN]="0"; fd_set readSet; struct timeval tv; if (blwh==1) luot=0; else luot=1; a=1; strcpy(you,play_list[0].nick_name); inboard(); while(1){ predone=0; tv.tv_sec = 0; tv.tv_usec =10000; FD_SET(sockfd, &readSet); FD_SET(fileno(stdin), &readSet); select(sockfd +1, &readSet, NULL, NULL, &tv); if(a>0){ // if (FD_ISSET(fileno(stdin), &readSet)) if (luot==0) {//Gui nuoc di if (blwh==1) { printf("Quan trang.\n"); } else printf("Quan den.\n"); printf("Hay nhap nuoc di (dang A3:B3): "); if(a==1){ while(1){ fgets(buff,LEN,stdin); if(buff[0]!='\n') break; } buff[strlen(buff)-1]='\0'; if(strlen(buff)==1 && ((buff[0]=='q') || (buff[0]=='Q'))) { strcpy(mesg,""); strcpy(mesg,"7|"); strcat(mesg,play_list[0].nick_name); strcpy(nick_name,play_list[0].nick_name); strcat(mesg,"|0|0|0|"); send(sockfd,mesg,strlen(mesg),0); printf("%s\n",you_lost); a = del_partner(nick_name,play_list); }else{ //Xu ly nuoc co trong buff moved=0; do{ t1.i=changenu(buff[1]); t1.j=changech(buff[0]); t2.i=changenu(buff[4]); t2.j=changech(buff[3]); // if (abs(board[t2.i][t2.j])==king) // { // predone=1; // } if ((blwh*board[t1.i][t1.j]>0)&(move(t1,t2)==1)) moved=1; else { printf("Nuoc di khong hop le.\n"); fgets(buff,LEN,stdin); if((buff[0]=='q') || (buff[0]=='Q')) { strcpy(mesg,""); strcpy(mesg,"7|"); strcat(mesg,play_list[0].nick_name); strcpy(nick_name,play_list[0].nick_name); strcat(mesg,"|0|0|0|"); send(sockfd,mesg,strlen(mesg),0); a = del_partner(nick_name,play_list); break; } } }while(moved==0); if (blwh==-1) strcpy(buff1,"-1"); else strcpy(buff1,"1"); inboard(); creat_mesg(6,play_list[0].nick_name,buff,buff1,buff2,mesg); send(sockfd,mesg,strlen(mesg),0); // //Thong bao ket thuc van co // if (predone && moved==1) // { // strcpy(mesg,""); // strcpy(mesg,"7|"); // strcat(mesg,play_list[0].nick_name); // strcpy(nick_name,play_list[0].nick_name); // strcat(mesg,"|1|0|0|"); // send(sockfd,mesg,strlen(mesg),0); // printf("%s\n",you_won); // a = del_partner(nick_name,play_list); // } } } FD_CLR(fileno(stdin), &readSet); } if (luot==1) // if (FD_ISSET(sockfd, &readSet)) {//Nhan duoc nuoc di predone=0; printf("Xin cho doi phuong di....\n"); strcpy(mesg,""); recv(sockfd,mesg,LEN,0); t=check_mark(mesg); if(t == 6){ strcpy(mesg2,mesg); pch=strtok(mesg2,"|"); pch=strtok(NULL,"|"); strcpy(nick_name,pch); pch=strtok(NULL,"|"); t1.i=changenu(pch[1]); t1.j=changech(pch[0]); t2.i=changenu(pch[4]); t2.j=changech(pch[3]); if (abs(board[t2.i][t2.j])==king) { predone=1; } if ((predone & move(t1,t2))==1) { inboard(); strcpy(mesg,""); strcpy(mesg,"7|"); strcat(mesg,play_list[0].nick_name); strcpy(nick_name,play_list[0].nick_name); strcat(mesg,"|1|0|0|"); send(sockfd,mesg,strlen(mesg),0); printf("%s\n",you_lost); a = del_partner(nick_name,play_list); } else inboard(); } if(t == 7) { strcpy(mesg2,mesg); pch=strtok(mesg2,"|"); pch=strtok(NULL,"|"); strcpy(nick_name,pch); a=del_partner(nick_name,play_list); strcpy(mesg2,mesg); pch=strtok(mesg2,"|"); pch=strtok(NULL,"|"); strcpy(nick_name,pch); pch=strtok(NULL,"|"); printf("%s\n",you_won); if (strcmp(pch,"0")==0) { printf("\n@%s da dung choi voi ban!!",nick_name); } } // if(t == 3){ // answer_request(sockfd,mesg,play_list); // a=0; // while(strcmp(play_list[a].nick_name,"") != 0 ){ // a++; // } // } FD_CLR(sockfd, &readSet); } luot=1 - luot; }else { printf("\nKet thuc!"); return; } } }
void main(){ int listenSock, connSock; struct sockaddr_in serv_addr, client_addr; int clientAddrLenght; User user[100]; char tmp[100]; int max_user; char mesg[LEN]; char mesg2[LEN]; char buff[LEN]="11|"; int t,n; int recvBytes,sentBytes; fd_set readfds,allset; int i, maxi,sockfd; int rv; struct pollfd client[30]; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(5556); if((listenSock = socket(AF_INET, SOCK_STREAM, 0)) == -1){ printf("\nTao socket loi!!\n"); return; } if(bind(listenSock, (struct sockaddr *) &serv_addr,sizeof(serv_addr))<0) { printf("\nBind loi!!\n"); return; } if(listen(listenSock, 10) == -1) { printf("\nListen loi!!\n"); return; } for ( i = 1; i < 30; i++){ client[i].fd=-1; } client[0].fd = listenSock; client[0].events = POLLRDNORM; max_user= take_user(user); while(1){ rv = poll(client, 30,3); //Number of client = 30, time out=3 if(client[0].revents & POLLRDNORM){ clientAddrLenght=sizeof(client_addr); connSock = accept(listenSock, (struct sockaddr *) &client_addr, (socklen_t*)&clientAddrLenght); for(i=1;i < 30;i++){ if(client[i].fd < 0){ client[i].fd = connSock; break; } }//end for client[i].events = POLLRDNORM; if(--rv <= 0) //no more readable descriptor. Decrement before return continue; }//end if for(i=1;i<30;i++){ if((sockfd = client[i].fd) <0) continue; if(client[i].revents & (POLLRDNORM | POLLERR)){ strcpy(mesg,""); n=recv(sockfd, mesg, LEN, 0); printf("\nXau nhan tu Client: %s",mesg ); mesg[n]='\0'; if((n)==0){ close(sockfd); client[i].fd = -1; for ( i = 0; i < max_user; i++){ if(user[i].sockfd==sockfd){ user[i].status=0; break; } } }else{ // printf("\nXau nhan tu Client: %s",mesg ); t=check_mark(mesg); if(t == 0) max_user = sign_up(sockfd,mesg,user,max_user); if(t == 1) { login(sockfd,mesg,user,max_user); } if(t == 2) show_user_list(sockfd,user,max_user); if(t == 3) play_request(sockfd,mesg,user,max_user); if(t == 4) accept_request(sockfd,mesg,user,max_user); if(t == 5) not_accept_request(sockfd,mesg,user,max_user); if(t == 6) playing(sockfd,mesg,user,max_user); if(t == 7) stop_play(sockfd,mesg,user,max_user); if(t == 8) log_out(sockfd,user,max_user); } if(--rv <= 0) break; } } }//end while }