added proper use of storage time parameter in group msg cleanup

This commit is contained in:
csoler 2016-12-07 22:00:50 +01:00
parent b03fe3d4c5
commit d9416d3e3d
3 changed files with 12 additions and 7 deletions

View File

@ -181,9 +181,10 @@ void RsGenExchange::tick()
mLastClean = time(NULL);
}
}else
}
else
{
mMsgCleanUp = new RsGxsMessageCleanUp(mDataStore, MESSAGE_STORE_PERIOD, 1);
mMsgCleanUp = new RsGxsMessageCleanUp(mDataStore, this, 1);
mCleaning = true;
}
}

View File

@ -35,8 +35,8 @@ static const uint32_t MAX_GXS_IDS_REQUESTS_NET = 10 ; // max number of reques
//#define GXSUTIL_DEBUG 1
RsGxsMessageCleanUp::RsGxsMessageCleanUp(RsGeneralDataService* const dataService, uint32_t messageStorePeriod, uint32_t chunkSize)
: mDs(dataService), MESSAGE_STORE_PERIOD(messageStorePeriod), CHUNK_SIZE(chunkSize)
RsGxsMessageCleanUp::RsGxsMessageCleanUp(RsGeneralDataService* const dataService, RsGenExchange *genex, uint32_t chunkSize)
: mDs(dataService), mGenExchangeClient(genex), CHUNK_SIZE(chunkSize)
{
std::map<RsGxsGroupId, RsGxsGrpMetaData*> grpMeta;
@ -72,6 +72,8 @@ bool RsGxsMessageCleanUp::clean()
req.clear();
uint32_t store_period = mGenExchangeClient->getStoragePeriod(grpId) ;
for(; mit != result.end(); ++mit)
{
std::vector<RsGxsMsgMetaData*>& metaV = mit->second;
@ -82,7 +84,7 @@ bool RsGxsMessageCleanUp::clean()
RsGxsMsgMetaData* meta = *vit;
// check if expired
bool remove = (meta->mPublishTs + MESSAGE_STORE_PERIOD) < now;
bool remove = (meta->mPublishTs + store_period) < now;
// check client does not want the message kept regardless of age
remove &= !(meta->mMsgStatus & GXS_SERV::GXS_MSG_STATUS_KEEP);

View File

@ -31,6 +31,7 @@
#include "rsgds.h"
class RsGixs ;
class RsGenExchange ;
/*!
* Handy function for cleaning out meta result containers
@ -73,7 +74,7 @@ public:
* @param chunkSize
* @param sleepPeriod
*/
RsGxsMessageCleanUp(RsGeneralDataService* const dataService, uint32_t messageStorePeriod, uint32_t chunkSize);
RsGxsMessageCleanUp(RsGeneralDataService* const dataService, RsGenExchange *genex, uint32_t chunkSize);
/*!
* On construction this should be called to progress deletions
@ -90,7 +91,8 @@ public:
private:
RsGeneralDataService* const mDs;
const uint32_t MESSAGE_STORE_PERIOD, CHUNK_SIZE;
RsGenExchange *mGenExchangeClient;
uint32_t CHUNK_SIZE;
std::vector<RsGxsGrpMetaData*> mGrpMeta;
};