updatemanager.cpp
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                     //check if list already contains that update number
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         //if the latest value is smaller then the value before, i need to sort my list
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    // ROS_DEBUG("Returning list of updates, size of list:%lu",updateInformation->at(indexOfMap)->size());
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 }


map_merger
Author(s): Peter Kohout , Torsten Andre
autogenerated on Thu Aug 27 2015 11:56:48