Go to the documentation of this file.00001 #include "updatemanager.h"
00002
00003 updateManager::updateManager()
00004 {
00005 updateInformation = new std::vector< std::vector < int > *>();
00006 }
00007
00008 void updateManager::addNewUpdateList()
00009 {
00010 updateInformation->push_back(new std::vector<int>);
00011 }
00012
00013 void updateManager::addToupdateList(int indexOfMap, std::vector < int > values)
00014 {
00015 ROS_DEBUG("in addToupdateList,indexOfMap:%i,size of values:%lu",indexOfMap,values.size());
00016 std::vector<int>* tmp = updateInformation->at(indexOfMap);
00017 ROS_DEBUG("in addToupdateList size tmp:%lu",tmp->size());
00018 bool add = true;
00019 if(values.size() == 1 && tmp->size() > 1)
00020 {
00021 int i = tmp->at(tmp->size()-1)+1;
00022 int j = values.at(0);
00023 if(i == j)
00024 {
00025 ROS_DEBUG("FAST %i == %i",i,j);
00026 tmp->push_back(values.at(0));
00027 ROS_DEBUG("adding revision number %i, to list at index:%i",values.at(0),indexOfMap);
00028 add = false;
00029 }
00030 }
00031
00032 if(add)
00033 {
00034 {
00035 for(int i = 0; i < values.size(); i++)
00036 {
00037 for(int j = 0; j < tmp->size();j++)
00038 {
00039
00040 if(tmp->at(j) == values.at(i))
00041 {
00042 add= false;
00043 ROS_DEBUG("%i == %i",tmp->at(j),values.at(i));
00044 break;
00045 }
00046 else
00047 {
00048 ROS_DEBUG("%i !! %i",tmp->at(j),values.at(i));
00049 }
00050
00051 }
00052 if(add)
00053 {
00054 tmp->push_back(values.at(i));
00055 ROS_DEBUG("adding revision number %i, to list at index:%i",values.at(i),indexOfMap);
00056 }
00057 add = true;
00058 }
00059 }
00060 }
00061 if(tmp->size() > 1)
00062 {
00063
00064 if(tmp->at(tmp->size() - 1) > tmp->at(tmp->size() - 2))
00065 {
00066 std::sort(tmp->begin(),tmp->end());
00067 }
00068 }
00069 }
00070 std::vector<int>* updateManager::getUpdateListOfrobot(int indexOfMap)
00071 {
00072
00073 return updateInformation->at(indexOfMap);
00074 }
00075 int updateManager::getLatestUpdateVersionOfRobot(int indexOfMap)
00076 {
00077 return getUpdateListOfrobot(indexOfMap)->at(getUpdateListOfrobot(indexOfMap)->size()-1);
00078 }
00079
00080 std::vector<int>* updateManager::getMissingUpdateOfRobot(int indexOfMap)
00081 {
00082 std::vector<int>* missingUpdates = new std::vector<int>();
00083 int indexInCurrentList = 0;
00084 std::vector<int>* tmp = getUpdateListOfrobot(indexOfMap);
00085
00086 for(int i = 0; i < getLatestUpdateVersionOfRobot(indexOfMap);i++)
00087 {
00088 if(tmp->at(indexInCurrentList) == i)
00089 {
00090 indexInCurrentList++;
00091 }
00092 else
00093 {
00094 missingUpdates->push_back(i);
00095 }
00096 }
00097 return missingUpdates;
00098 }
00099
00100 bool updateManager::isUpdatesMissing(int indexOfMap)
00101 {
00102 if(getUpdateListOfrobot(indexOfMap)->size() == getLatestUpdateVersionOfRobot(indexOfMap) +1)
00103 return false;
00104 else return true;
00105 }