diff --git a/libretroshare/src/gxs/rsgenexchange.cc b/libretroshare/src/gxs/rsgenexchange.cc index 68b4eba41..940c3a591 100644 --- a/libretroshare/src/gxs/rsgenexchange.cc +++ b/libretroshare/src/gxs/rsgenexchange.cc @@ -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; } } diff --git a/libretroshare/src/gxs/rsgxsutil.cc b/libretroshare/src/gxs/rsgxsutil.cc index 22e2e8661..a61e77529 100644 --- a/libretroshare/src/gxs/rsgxsutil.cc +++ b/libretroshare/src/gxs/rsgxsutil.cc @@ -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 grpMeta; @@ -72,6 +72,8 @@ bool RsGxsMessageCleanUp::clean() req.clear(); + uint32_t store_period = mGenExchangeClient->getStoragePeriod(grpId) ; + for(; mit != result.end(); ++mit) { std::vector& 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); diff --git a/libretroshare/src/gxs/rsgxsutil.h b/libretroshare/src/gxs/rsgxsutil.h index 5a05eb23d..b662acfc9 100644 --- a/libretroshare/src/gxs/rsgxsutil.h +++ b/libretroshare/src/gxs/rsgxsutil.h @@ -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 mGrpMeta; };