Exemplo n.º 1
0
void row_t::free_row() {
  DEBUG_M("row_t::free_row free\n");
#if SIM_FULL
	mem_allocator.free(data, sizeof(char) * get_tuple_size());
#else
	mem_allocator.free(data, sizeof(uint64_t) * 1);
#endif
}
Exemplo n.º 2
0
std::tuple<aku_Status, size_t> SeriesOrderAggregateMaterializer::read(u8 *dest, size_t dest_size) {
    aku_Status status = AKU_ENO_DATA;
    size_t ressz = 0;  // current size
    size_t accsz = 0;  // accumulated size
    size_t sample_size = get_tuple_size(tuple_);
    size_t size = dest_size / sample_size;
    std::vector<aku_Timestamp> destts_vec(size, 0);
    std::vector<AggregationResult> destval_vec(size, INIT_AGGRES);
    std::vector<aku_ParamId> outids(size, 0);
    aku_Timestamp* destts = destts_vec.data();
    AggregationResult* destval = destval_vec.data();
    while(pos_ < iters_.size()) {
        aku_ParamId curr = ids_[pos_];
        std::tie(status, ressz) = iters_[pos_]->read(destts, destval, size);
        for (size_t i = accsz; i < accsz+ressz; i++) {
            outids[i] = curr;
        }
        destts += ressz;
        destval += ressz;
        size -= ressz;
        accsz += ressz;
        if (size == 0) {
            break;
        }
        pos_++;
        if (status == AKU_ENO_DATA) {
            // this iterator is done, continue with next
            continue;
        }
        if (status != AKU_SUCCESS) {
            // Stop iteration on error!
            break;
        }
    }
    // Convert vectors to series of samples
    for (size_t i = 0; i < accsz; i++) {
        double* tup;
        aku_Sample* sample;
        std::tie(sample, tup)   = cast(dest);
        dest                   += sample_size;
        sample->payload.type    = AKU_PAYLOAD_TUPLE|aku_PData::REGULLAR;
        sample->payload.size    = static_cast<u16>(sample_size);
        sample->paramid         = outids[i];
        sample->timestamp       = destts_vec[i];
        sample->payload.float64 = get_flags(tuple_);
        set_tuple(tup, tuple_, destval_vec[i]);
    }
    return std::make_tuple(status, accsz*sample_size);

}
Exemplo n.º 3
0
void row_t::free_row() {
	mem_allocator.free(data, sizeof(char) * get_tuple_size());
}