[Positioner] Fix calibration-requests-timeout

Fixes Stock::delete_calibration_requests_older_than(), by calling the
new function ReferencePoint::delete_request().
This commit is contained in:
Matteo Cypriani 2012-05-27 22:45:28 +02:00
parent 038c24da05
commit f54426c3bb
3 changed files with 25 additions and 3 deletions

View File

@ -28,7 +28,7 @@ ReferencePoint::~ReferencePoint()
/* *** Accessors *** */
/* *** Read accessors *** */
double ReferencePoint::
@ -114,6 +114,22 @@ get_requests(const string &mac_transmitter) const
}
/* *** Write accessors *** */
void ReferencePoint::delete_request(const CalibrationRequest *r)
{
for (vector<CalibrationRequest*>::iterator i = requests.begin() ;
i != requests.end() ; ++i)
if (*i == r)
{
requests.erase(i) ;
return ;
}
}
/**
* Note that the requests pointed by the elements of #requests are
* actually deleted from the Stock.

View File

@ -65,6 +65,8 @@ public:
//@{
/// Adds a Request to the \link #requests request list\endlink
void add_request(const CalibrationRequest *r) ;
/// Deletes a Request from the \link #requests request list\endlink
void delete_request(const CalibrationRequest *r) ;
/// Deletes all the requests contained in #requests
void delete_requests(void) ;
/// Deletes the requests that are not sent by an AP

View File

@ -526,9 +526,13 @@ void Stock::delete_calibration_requests_older_than(int timeout)
if (elapsed_sec >= static_cast<unsigned int>(timeout))
{
ReferencePoint *rp = cr->get_reference_point() ;
if (rp)
{
rp->delete_request(&*cr) ;
if (rp->get_requests().empty())
reference_points.erase(*rp) ;
}
cr = calibration_requests.erase(cr) ;
if (rp && rp->get_requests().empty())
reference_points.erase(*rp) ;
}
else
++cr ;