示例#1
0
void selectTables(TableManager *tm) {
	BinaryFile *bf = newBinaryFile(tm->fileName);
	if(getBinaryFileSize(bf) > 0) {
		BinaryFileReader *bfr = newBinaryFileReader(bf, DELIMITER);
		seekBinaryFile(bf, 0L);
		long offset = getStreamOffset(bf);
		while(offset < getBinaryFileSize(bf)) {
			char *fileName = readString(bfr, offset);
			setArrayListObject(tm->names, fileName, tm->names->length);
			offset += (sizeof(char)*(strlen(fileName) + 1));
		}
		deleteBinaryFileReader(bfr);
	}
	deleteBinaryFile(bf);
}
示例#2
0
void saveTables(TableManager *tm) {
	if(tm->names->length > 0) {
		BinaryFile *bf = newBinaryFile(tm->fileName);
		BinaryFileWriter *bfw = newBinaryFileWriter(bf, DELIMITER);
		overwriteBinaryFile(bf);
		int i;
		for(i = 0 ; i < tm->names->length ; i++) {
			char *fileName = (char *) getArrayListObject(tm->names, i);
			writeString(bfw, fileName, getBinaryFileSize(bf));
		}
		deleteBinaryFileWriter(bfw);
		deleteBinaryFile(bf);
	}
}
示例#3
0
static enum err_code regpmTransferSlices(char * file_name)
{
    // Constants
    static const uint8_t SLICE_MAX_TX_ATTEMPTS = 2;
    static const uint16_t SLICE_N_BYTES        = 2112;
    static const uint16_t SLICE_N_BATCHES      = 17;
    static const uint16_t SLICE_TIME_PROG_MS   = 150;

    enum err_code e_code; 
	uint32_t binary_size_bytes  = getBinaryFileSize(file_name); 
    printf("%-5s - File %s size: %lu\n", "DEBUG", file_name, binary_size_bytes);

    uint32_t number_slices = ceil( (double) binary_size_bytes / (double) SLICE_N_BYTES);
    printf("%-5s - Number of slices: %lu\n", "DEBUG", number_slices);    

    uint8_t j;

    for (uint32_t i = 0; i < number_slices; i++)
    {          
        for (j = 0; j < SLICE_MAX_TX_ATTEMPTS; j++)
        {
            printf("%-5s - transfer slice %d, attempt %d\n", "DEBUG", i, j);
            if ((e_code = regpmTransferSingle(i)) == SCIVS_OK)
            {
                break;
            }
        }

        if (j != 0)
        {
            printf("%-5s - Failed in slice %d transfer\n", "WARN", i);
        }

        if (j == SLICE_MAX_TX_ATTEMPTS)
        {
            printf("%-5s - max attempts reached in slice %d transfer\n", "ERROR", i);
            printf("%-5s - sending abort task...\n", "INFO");
            exit(2);
        }

        if ( (e_code = regpmProgramSlice(i, SLICE_TIME_PROG_MS)) != SCIVS_OK)
        {
            return e_code;
        }

    }
    
    return SCIVS_OK;
}