Hybrid Query Processing Engine for Coprocessing in Database Systems
HyPE
measurementpair_ringbuffer.cpp
Go to the documentation of this file.
00001 
00002 #include <core/measurementpair_ringbuffer.hpp>
00003 
00004 namespace hype{
00005    namespace core{
00006 
00007       
00008          
00009       
00010    MeasurementPairRingbuffer::MeasurementPairRingbuffer() : feature_values_(), measured_times_(), estimated_times_(){
00011 
00012       set_maximal_number_of_measurement_pairs(1000);
00013 
00014    }
00015 
00016    MeasurementPairRingbuffer::MeasurementPairRingbuffer(size_t size) : feature_values_(), measured_times_(), estimated_times_(){
00017 
00018       set_maximal_number_of_measurement_pairs(size);
00019 
00020    }
00021 
00022 
00023    unsigned int MeasurementPairRingbuffer::size() const throw(){
00024       assert(feature_values_.size()==measured_times_.size());
00025       assert(feature_values_.size()==estimated_times_.size());
00026       return feature_values_.size();
00027    }
00028       
00029    bool MeasurementPairRingbuffer::store(std::ostream &out) const{
00030       for(unsigned int i=0;i<this->size();i++){
00031          MeasurementPair mp(feature_values_[i],measured_times_[i],estimated_times_[i]);
00032          out << mp << std::endl;
00033       }
00034       return true;
00035    }
00036 
00037    void MeasurementPairRingbuffer::set_maximal_number_of_measurement_pairs(size_t size){
00038       feature_values_.set_capacity(size);
00039       measured_times_.set_capacity(size);
00040       estimated_times_.set_capacity(size);
00041    }
00042 
00043    const std::vector<EstimatedTime> MeasurementPairRingbuffer::getColumnEstimations(){
00044       /*
00045       //liniarisiert den ringpuffer und gibt zeiger auf das resultierende array zurück, für C APIs gedacht
00046       EstimatedTime* estimatedtimes_array=estimated_times_.linearize(); 
00047       // int myints[] = {16,2,77,29};
00048       //vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );
00049       std::vector<EstimatedTime> return_value(estimatedtimes_array,estimatedtimes_array + estimated_times_.size() );
00050       */
00051       std::vector<EstimatedTime> return_value(estimated_times_.begin(),estimated_times_.end());
00052       return return_value;
00053    }
00054 
00055    const std::vector<MeasuredTime> MeasurementPairRingbuffer::getColumnMeasurements(){
00056       //MeasuredTime* measured_times_array=measured_times_.linearize(); 
00057       //std::vector<MeasuredTime> return_value(measured_times_array, measured_times_array + measured_times_.size() );
00058       std::vector<MeasuredTime> return_value(measured_times_.begin(),measured_times_.end());
00059       return return_value;
00060    }
00061 
00062    const std::vector<Tuple> MeasurementPairRingbuffer::getColumnFeatureValues(){
00063       //Tuple* feature_values_array=feature_values_.linearize(); 
00064       //std::vector<Tuple> return_value(feature_values_array, feature_values_array + feature_values_.size() );
00065       std::vector<Tuple> return_value(feature_values_.begin(),feature_values_.end());
00066       return return_value;
00067    }
00068 
00069    bool MeasurementPairRingbuffer::addMeasurementPair(const MeasurementPair& mp){
00070        feature_values_.push_back(mp.getFeatureValues()); 
00071        measured_times_.push_back(mp.getMeasuredTime()); 
00072        estimated_times_.push_back(mp.getEstimatedTime());   
00073        return true;
00074    }
00075 
00076    void MeasurementPairRingbuffer::clear() throw(){
00077        feature_values_.clear(); 
00078        measured_times_.clear(); 
00079        estimated_times_.clear();
00080    }
00081 
00082    }; //end namespace core
00083 }; //end namespace hype
00084 
00085 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines