Hybrid Query Processing Engine for Coprocessing in Database Systems
HyPE
|
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