예제 #1
0
파일: LTdecoder.c 프로젝트: day7th/libLT
Tbool decodingProcess(LTdecoder* decoder) {

    Tbool one_decoded = True;
    unsigned int k = ((Bucket *) decoder->bucketList->data)->matrix.conf.k;

    if (decoder == NULL) {
        print_error("Error: decodingProcess - No decoder!\n");
        exit(EXIT_FAILURE);
    }

    if (decoder->bucketList == NULL) {
        print_error("Error: decodingProcess - No bucket.\n");
        exit(EXIT_FAILURE);
    }

    while ((decoder->RXsymbList != NULL)&&(one_decoded == True)) {
        one_decoded = processReceived(decoder);
    }

    // Important only for LT codes
    if (decoder->NumDecSymbols == k)
        return True;

    return False;
}
예제 #2
0
//METHOD TO HANDLE ONE CONNECTION.
void handleConnection(int fd, int id, int user){
	char received, mode;
	char * fname;
	int flag, n;
	FILE * fp;

	/*Keep reading from the client and handle the commands sent*/
	flag = 1;
	n = 0;
	fname = (char *)malloc(MAX_PATH_LEN+1);
	memset(fname, '\0', MAX_PATH_LEN);
	while(read(fd, &received, sizeof(char)) > 0){
		if(isCmd(received)){
			if(flag == -1){
				if(mode != FILE_CONTENT){
					processReceived(mode, fname, fd, id, user);
					memset(fname, '\0', MAX_PATH_LEN);
					n = 0;
					flag = 1;
				}
				else
					fclose(fp);
				mode = SIGNAL;
			}
			else{
				mode = received;
				if(mode == FILE_CONTENT)
					fp = fopen(fname, "a");
				flag = -1;
			}
		}
		else if(flag == -1)
			fname[n++] = received;
		else if(mode == FILE_CONTENT)
			fprintf(fp, "%c", received);
	}
}