void CEventRateBucketGatherer::featureData()

in lib/model/CEventRateBucketGatherer.cc [1036:1129]


void CEventRateBucketGatherer::featureData(core_t::TTime time,
                                           core_t::TTime /*bucketLength*/,
                                           TFeatureAnyPrVec& result) const {
    result.clear();

    if (!this->dataAvailable(time) ||
        time >= this->currentBucketStartTime() + this->bucketLength()) {
        LOG_DEBUG(<< "No data available at " << time
                  << ", current bucket = " << this->printCurrentBucket()
                  << ", bucket length = " << this->bucketLength());
        return;
    }

    for (std::size_t i = 0, n = m_DataGatherer.numberFeatures(); i < n; ++i) {
        const model_t::EFeature feature = m_DataGatherer.feature(i);

        switch (feature) {
        case model_t::E_IndividualCountByBucketAndPerson:
            this->personCounts(feature, time, result);
            break;
        case model_t::E_IndividualNonZeroCountByBucketAndPerson:
        case model_t::E_IndividualTotalBucketCountByPerson:
            this->nonZeroPersonCounts(feature, time, result);
            break;
        case model_t::E_IndividualIndicatorOfBucketPerson:
            this->personIndicator(feature, time, result);
            break;
        case model_t::E_IndividualLowCountsByBucketAndPerson:
        case model_t::E_IndividualHighCountsByBucketAndPerson:
            this->personCounts(feature, time, result);
            break;
        case model_t::E_IndividualArrivalTimesByPerson:
        case model_t::E_IndividualLongArrivalTimesByPerson:
        case model_t::E_IndividualShortArrivalTimesByPerson:
            this->personArrivalTimes(feature, time, result);
            break;
        case model_t::E_IndividualLowNonZeroCountByBucketAndPerson:
        case model_t::E_IndividualHighNonZeroCountByBucketAndPerson:
            this->nonZeroPersonCounts(feature, time, result);
            break;
        case model_t::E_IndividualUniqueCountByBucketAndPerson:
        case model_t::E_IndividualLowUniqueCountByBucketAndPerson:
        case model_t::E_IndividualHighUniqueCountByBucketAndPerson:
            this->bucketUniqueValuesPerPerson(feature, time, result);
            break;
        case model_t::E_IndividualInfoContentByBucketAndPerson:
        case model_t::E_IndividualHighInfoContentByBucketAndPerson:
        case model_t::E_IndividualLowInfoContentByBucketAndPerson:
            this->bucketCompressedLengthPerPerson(feature, time, result);
            break;
        case model_t::E_IndividualTimeOfDayByBucketAndPerson:
        case model_t::E_IndividualTimeOfWeekByBucketAndPerson:
            this->bucketMeanTimesPerPerson(feature, time, result);
            break;

        CASE_INDIVIDUAL_METRIC:
            LOG_ERROR(<< "Unexpected feature = " << model_t::print(feature));
            break;

        case model_t::E_PopulationAttributeTotalCountByPerson:
        case model_t::E_PopulationCountByBucketPersonAndAttribute:
            this->nonZeroAttributeCounts(feature, time, result);
            break;
        case model_t::E_PopulationIndicatorOfBucketPersonAndAttribute:
            this->attributeIndicator(feature, time, result);
            break;
        case model_t::E_PopulationUniquePersonCountByAttribute:
            this->peoplePerAttribute(feature, result);
            break;
        case model_t::E_PopulationUniqueCountByBucketPersonAndAttribute:
        case model_t::E_PopulationLowUniqueCountByBucketPersonAndAttribute:
        case model_t::E_PopulationHighUniqueCountByBucketPersonAndAttribute:
            this->bucketUniqueValuesPerPersonAttribute(feature, time, result);
            break;
        case model_t::E_PopulationLowCountsByBucketPersonAndAttribute:
        case model_t::E_PopulationHighCountsByBucketPersonAndAttribute:
            this->nonZeroAttributeCounts(feature, time, result);
            break;
        case model_t::E_PopulationInfoContentByBucketPersonAndAttribute:
        case model_t::E_PopulationLowInfoContentByBucketPersonAndAttribute:
        case model_t::E_PopulationHighInfoContentByBucketPersonAndAttribute:
            this->bucketCompressedLengthPerPersonAttribute(feature, time, result);
            break;
        case model_t::E_PopulationTimeOfDayByBucketPersonAndAttribute:
        case model_t::E_PopulationTimeOfWeekByBucketPersonAndAttribute:
            this->bucketMeanTimesPerPersonAttribute(feature, time, result);
            break;

        CASE_POPULATION_METRIC:
            LOG_ERROR(<< "Unexpected feature = " << model_t::print(feature));
            break;
        }
    }
}