Beispiel #1
0
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;
}
Beispiel #2
0
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;
		}
	}
}
Beispiel #3
0
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;
}
Beispiel #4
0
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 */
}
Beispiel #5
0
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 */
}
Beispiel #6
0
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;
	}
}
Beispiel #7
0
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;}
}
Beispiel #8
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 */
}
Beispiel #9
0
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;}
}
Beispiel #10
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);
}   
Beispiel #11
0
inline bool G1CMBitMap::parMark(HeapWord* addr) {
  check_mark(addr);
  return _bm.par_set_bit(heapWordToOffset(addr));
}
Beispiel #12
0
inline void G1CMBitMap::clear(HeapWord* addr) {
  check_mark(addr);
  _bm.clear_bit(heapWordToOffset(addr));
}
Beispiel #13
0
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");
  }
}
Beispiel #15
0
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;
		}
	}
}
Beispiel #16
0
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
}