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; }
//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); } }