From c98416dc285e9b36b33157719fdd6ec584cdd7c1 Mon Sep 17 00:00:00 2001 From: csoler Date: Sun, 3 Jul 2016 18:59:30 -0400 Subject: [PATCH] added auto-cleaning of reputation info for outdated/removed identities --- libretroshare/src/retroshare/rsidentity.h | 59 +++--- libretroshare/src/services/p3gxsreputation.cc | 69 ++++--- libretroshare/src/services/p3idservice.cc | 6 + libretroshare/src/services/p3idservice.h | 193 +++++++++--------- 4 files changed, 174 insertions(+), 153 deletions(-) diff --git a/libretroshare/src/retroshare/rsidentity.h b/libretroshare/src/retroshare/rsidentity.h index b36133d0b..bf6a80724 100644 --- a/libretroshare/src/retroshare/rsidentity.h +++ b/libretroshare/src/retroshare/rsidentity.h @@ -221,47 +221,48 @@ public: RsIdentity(RsGxsIface *gxs): RsGxsIfaceHelper(gxs) { return; } virtual ~RsIdentity() { return; } -/********************************************************************************************/ -/********************************************************************************************/ - - // For Other Services.... - // It should be impossible for them to get a message which we don't have the identity. - // Its a major error if we don't have the identity. + /********************************************************************************************/ + /********************************************************************************************/ - // We cache all identities, and provide alternative (instantaneous) - // functions to extract info, rather than the standard Token system. + // For Other Services.... + // It should be impossible for them to get a message which we don't have the identity. + // Its a major error if we don't have the identity. -//virtual bool getNickname(const RsGxsId &id, std::string &nickname) = 0; -virtual bool getIdDetails(const RsGxsId &id, RsIdentityDetails &details) = 0; + // We cache all identities, and provide alternative (instantaneous) + // functions to extract info, rather than the standard Token system. -// Fills up list of all own ids. Returns false if ids are not yet loaded. -virtual bool getOwnIds(std::list &ownIds) = 0; -virtual bool isOwnId(const RsGxsId& id) = 0; + //virtual bool getNickname(const RsGxsId &id, std::string &nickname) = 0; + virtual bool getIdDetails(const RsGxsId &id, RsIdentityDetails &details) = 0; - // -virtual bool submitOpinion(uint32_t& token, const RsGxsId &id, - bool absOpinion, int score) = 0; -virtual bool createIdentity(uint32_t& token, RsIdentityParameters ¶ms) = 0; + // Fills up list of all own ids. Returns false if ids are not yet loaded. + virtual bool getOwnIds(std::list &ownIds) = 0; + virtual bool isOwnId(const RsGxsId& id) = 0; -virtual bool updateIdentity(uint32_t& token, RsGxsIdGroup &group) = 0; -virtual bool deleteIdentity(uint32_t& token, RsGxsIdGroup &group) = 0; + // + virtual bool submitOpinion(uint32_t& token, const RsGxsId &id, + bool absOpinion, int score) = 0; + virtual bool createIdentity(uint32_t& token, RsIdentityParameters ¶ms) = 0; -virtual bool parseRecognTag(const RsGxsId &id, const std::string &nickname, - const std::string &tag, RsRecognTagDetails &details) = 0; -virtual bool getRecognTagRequest(const RsGxsId &id, const std::string &comment, - uint16_t tag_class, uint16_t tag_type, std::string &tag) = 0; + virtual bool updateIdentity(uint32_t& token, RsGxsIdGroup &group) = 0; + virtual bool deleteIdentity(uint32_t& token, RsGxsIdGroup &group) = 0; + + virtual bool parseRecognTag(const RsGxsId &id, const std::string &nickname, + const std::string &tag, RsRecognTagDetails &details) = 0; + virtual bool getRecognTagRequest(const RsGxsId &id, const std::string &comment, + uint16_t tag_class, uint16_t tag_type, std::string &tag) = 0; virtual bool setAsRegularContact(const RsGxsId& id,bool is_a_contact) = 0 ; virtual bool isARegularContact(const RsGxsId& id) = 0 ; virtual bool isBanned(const RsGxsId& id) =0; - - // Specific RsIdentity Functions.... - /* Specific Service Data */ - /* We expose these initially for testing / GUI purposes. + virtual time_t getLastUsageTS(const RsGxsId &id) =0; + + // Specific RsIdentity Functions.... + /* Specific Service Data */ + /* We expose these initially for testing / GUI purposes. */ -virtual bool getGroupData(const uint32_t &token, std::vector &groups) = 0; -//virtual bool getMsgData(const uint32_t &token, std::vector &opinions) = 0; + virtual bool getGroupData(const uint32_t &token, std::vector &groups) = 0; + //virtual bool getMsgData(const uint32_t &token, std::vector &opinions) = 0; }; diff --git a/libretroshare/src/services/p3gxsreputation.cc b/libretroshare/src/services/p3gxsreputation.cc index ce3b43ca5..f40beb145 100644 --- a/libretroshare/src/services/p3gxsreputation.cc +++ b/libretroshare/src/services/p3gxsreputation.cc @@ -117,13 +117,13 @@ * 10 | 1.0 | 0 | 0.25 | 1.0 * * To check: - * [ ] Opinions are saved/loaded accross restart - * [ ] Opinions are transmitted to friends - * [ ] Opinions are transmitted to friends when updated + * [X] Opinions are saved/loaded accross restart + * [X] Opinions are transmitted to friends + * [X] Opinions are transmitted to friends when updated * * To do: - * [ ] Add debug info - * [ ] Test the whole thing + * [X] Add debug info + * [X] Test the whole thing * [X] Implement a system to allow not storing info when we don't have it */ @@ -139,6 +139,7 @@ static const float REPUTATION_ASSESSMENT_THRESHOLD_X1 = 0.5f ; // reputat static const uint32_t PGP_AUTO_BAN_THRESHOLD_DEFAULT = 2 ; // above this, auto ban any GXS id signed by this node static const uint32_t IDENTITY_FLAGS_UPDATE_DELAY = 100 ; // static const uint32_t BANNED_NODES_UPDATE_DELAY = 313 ; // update approx every 5 mins. Chosen to not be a multiple of IDENTITY_FLAGS_UPDATE_DELAY +static const uint32_t REPUTATION_INFO_KEEP_DELAY = 86400*35; // remove old reputation info 5 days after last usage limit, in case the ID would come back.. p3GxsReputation::p3GxsReputation(p3LinkMgr *lm) :p3Service(), p3Config(), @@ -343,26 +344,38 @@ void p3GxsReputation::cleanup() // identities, which would cause an excess of hits to the database. bool updated = false ; + time_t now = time(NULL) ; RsStackMutex stack(mReputationMtx); /****** LOCKED MUTEX *******/ for(std::map::iterator it(mReputations.begin());it!=mReputations.end();) - if(it->second.mOpinions.empty() && it->second.mOwnOpinion == RsReputations::OPINION_NEUTRAL) - { - std::map::iterator tmp(it) ; - ++tmp ; - mReputations.erase(it) ; - it = tmp ; + if(it->second.mOpinions.empty() && it->second.mOwnOpinion == RsReputations::OPINION_NEUTRAL) + { + std::map::iterator tmp(it) ; + ++tmp ; + mReputations.erase(it) ; + it = tmp ; #ifdef DEBUG_REPUTATION - std::cerr << " ID " << it->first << ": own is neutral and no opinions from friends => remove entry" << std::endl; + std::cerr << " ID " << it->first << ": own is neutral and no opinions from friends => remove entry" << std::endl; #endif - updated = true ; - } - else - ++it ; + updated = true ; + } + else if(rsIdentity->getLastUsageTS(it->first) + REPUTATION_INFO_KEEP_DELAY < now) + { +#ifdef DEBUG_REPUTATION + std::cerr << " Identity " << it->first << " has a last usage TS of " << now - rsIdentity->getLastUsageTS(it->first) << " secs ago: deleting it." << std::endl; +#endif + std::map::iterator tmp(it) ; + ++tmp ; + mReputations.erase(it) ; + it = tmp ; + updated = true ; + } + else + ++it ; if(updated) - IndicateConfigChanged() ; + IndicateConfigChanged() ; } void p3GxsReputation::updateActiveFriends() @@ -709,28 +722,28 @@ bool p3GxsReputation::getReputationInfo(const RsGxsId& gxsid, const RsPgpId& own { info.mOwnOpinion = RsReputations::OPINION_NEUTRAL ; info.mOverallReputationScore = RsReputations::REPUTATION_THRESHOLD_DEFAULT ; - info.mFriendAverage = REPUTATION_THRESHOLD_DEFAULT ; + info.mFriendAverage = REPUTATION_THRESHOLD_DEFAULT ; } else { - const Reputation& rep(it->second) ; + const Reputation& rep(it->second) ; - info.mOwnOpinion = RsReputations::Opinion(rep.mOwnOpinion) ; - info.mOverallReputationScore = rep.mReputation ; - info.mFriendAverage = rep.mFriendAverage ; + info.mOwnOpinion = RsReputations::Opinion(rep.mOwnOpinion) ; + info.mOverallReputationScore = rep.mReputation ; + info.mFriendAverage = rep.mFriendAverage ; } - + if(!owner_id.isNull() && (mBannedPgpIds.find(owner_id) != mBannedPgpIds.end())) { #ifdef DEBUG_REPUTATION - std::cerr << "p3GxsReputations: identity " << gxsid << " is banned because owner node ID " << owner_id << " is banned." << std::endl; + std::cerr << "p3GxsReputations: identity " << gxsid << " is banned because owner node ID " << owner_id << " is banned." << std::endl; #endif - info.mAssessment = RsReputations::ASSESSMENT_BAD ; + info.mAssessment = RsReputations::ASSESSMENT_BAD ; } else if(info.mOverallReputationScore <= REPUTATION_ASSESSMENT_THRESHOLD_X1) - info.mAssessment = RsReputations::ASSESSMENT_BAD ; + info.mAssessment = RsReputations::ASSESSMENT_BAD ; else - info.mAssessment = RsReputations::ASSESSMENT_OK ; + info.mAssessment = RsReputations::ASSESSMENT_OK ; #ifdef DEBUG_REPUTATION std::cerr << " information present. OwnOp = " << info.mOwnOpinion << ", overall score=" << info.mAssessment << std::endl; @@ -745,7 +758,7 @@ bool p3GxsReputation::isIdentityBanned(const RsGxsId &id,const RsPgpId& owner_no if(!getReputationInfo(id,owner_node,info)) return false ; - + #ifdef DEBUG_REPUTATION std::cerr << "isIdentityBanned(): returning " << (info.mAssessment == RsReputations::ASSESSMENT_BAD) << " for GXS id " << id << std::endl; #endif diff --git a/libretroshare/src/services/p3idservice.cc b/libretroshare/src/services/p3idservice.cc index 1abecd8f5..f521f38be 100644 --- a/libretroshare/src/services/p3idservice.cc +++ b/libretroshare/src/services/p3idservice.cc @@ -503,6 +503,12 @@ bool p3IdService:: getNickname(const RsGxsId &id, std::string &nickname) } #endif +time_t p3IdService::getLastUsageTS(const RsGxsId &id) +{ + RsStackMutex stack(mIdMtx); /********** STACK LOCKED MTX ******/ + return locked_getLastUsageTS(id) ; +} + bool p3IdService::getIdDetails(const RsGxsId &id, RsIdentityDetails &details) { #ifdef DEBUG_IDS diff --git a/libretroshare/src/services/p3idservice.h b/libretroshare/src/services/p3idservice.h index 3c39e0a2d..8efc3aea8 100644 --- a/libretroshare/src/services/p3idservice.h +++ b/libretroshare/src/services/p3idservice.h @@ -218,34 +218,34 @@ private: class p3IdService: public RsGxsIdExchange, public RsIdentity, public GxsTokenQueue, public RsTickEvent, public p3Config { - public: +public: p3IdService(RsGeneralDataService* gds, RsNetworkExchangeService* nes, PgpAuxUtils *pgpUtils); -virtual RsServiceInfo getServiceInfo(); -static uint32_t idAuthenPolicy(); + virtual RsServiceInfo getServiceInfo(); + static uint32_t idAuthenPolicy(); virtual void service_tick(); // needed for background processing. - /*! - * Design hack, id service must be constructed first as it - * is need for construction of subsequent net services - */ - void setNes(RsNetworkExchangeService* nes); + /*! + * Design hack, id service must be constructed first as it + * is need for construction of subsequent net services + */ + void setNes(RsNetworkExchangeService* nes); /* General Interface is provided by RsIdentity / RsGxsIfaceImpl. */ /* Data Specific Interface */ // These are exposed via RsIdentity. -virtual bool getGroupData(const uint32_t &token, std::vector &groups); -//virtual bool getMsgData(const uint32_t &token, std::vector &opinions); + virtual bool getGroupData(const uint32_t &token, std::vector &groups); + //virtual bool getMsgData(const uint32_t &token, std::vector &opinions); // These are local - and not exposed via RsIdentity. -virtual bool createGroup(uint32_t& token, RsGxsIdGroup &group); -virtual bool updateGroup(uint32_t& token, RsGxsIdGroup &group); -virtual bool deleteGroup(uint32_t& token, RsGxsIdGroup &group); -//virtual bool createMsg(uint32_t& token, RsGxsIdOpinion &opinion); + virtual bool createGroup(uint32_t& token, RsGxsIdGroup &group); + virtual bool updateGroup(uint32_t& token, RsGxsIdGroup &group); + virtual bool deleteGroup(uint32_t& token, RsGxsIdGroup &group); + //virtual bool createMsg(uint32_t& token, RsGxsIdOpinion &opinion); /**************** RsIdentity External Interface. * Notes: @@ -256,87 +256,88 @@ virtual bool deleteGroup(uint32_t& token, RsGxsIdGroup &group); * Also need to handle Cache updates / invalidation from internal changes. * */ -//virtual bool getNickname(const RsGxsId &id, std::string &nickname); -virtual bool getIdDetails(const RsGxsId &id, RsIdentityDetails &details); + //virtual bool getNickname(const RsGxsId &id, std::string &nickname); + virtual bool getIdDetails(const RsGxsId &id, RsIdentityDetails &details); - // -virtual bool submitOpinion(uint32_t& token, const RsGxsId &id, - bool absOpinion, int score); -virtual bool createIdentity(uint32_t& token, RsIdentityParameters ¶ms); + // + virtual bool submitOpinion(uint32_t& token, const RsGxsId &id, + bool absOpinion, int score); + virtual bool createIdentity(uint32_t& token, RsIdentityParameters ¶ms); -virtual bool updateIdentity(uint32_t& token, RsGxsIdGroup &group); -virtual bool deleteIdentity(uint32_t& token, RsGxsIdGroup &group); + virtual bool updateIdentity(uint32_t& token, RsGxsIdGroup &group); + virtual bool deleteIdentity(uint32_t& token, RsGxsIdGroup &group); -virtual bool parseRecognTag(const RsGxsId &id, const std::string &nickname, - const std::string &tag, RsRecognTagDetails &details); -virtual bool getRecognTagRequest(const RsGxsId &id, const std::string &comment, - uint16_t tag_class, uint16_t tag_type, std::string &tag); + virtual bool parseRecognTag(const RsGxsId &id, const std::string &nickname, + const std::string &tag, RsRecognTagDetails &details); + virtual bool getRecognTagRequest(const RsGxsId &id, const std::string &comment, + uint16_t tag_class, uint16_t tag_type, std::string &tag); -virtual bool setAsRegularContact(const RsGxsId& id,bool is_a_contact) ; - virtual bool isARegularContact(const RsGxsId& id) ; - virtual bool isBanned(const RsGxsId& id) ; - - /**************** RsGixs Implementation ***************/ + virtual bool setAsRegularContact(const RsGxsId& id,bool is_a_contact) ; + virtual bool isARegularContact(const RsGxsId& id) ; + virtual bool isBanned(const RsGxsId& id) ; + virtual time_t getLastUsageTS(const RsGxsId &id) ; - virtual bool getOwnIds(std::list &ownIds); + /**************** RsGixs Implementation ***************/ - //virtual bool getPublicKey(const RsGxsId &id, RsTlvSecurityKey &key) ; - //virtual void networkRequestPublicKey(const RsGxsId& key_id,const std::list& peer_ids) ; + virtual bool getOwnIds(std::list &ownIds); - virtual bool isOwnId(const RsGxsId& key_id) ; + //virtual bool getPublicKey(const RsGxsId &id, RsTlvSecurityKey &key) ; + //virtual void networkRequestPublicKey(const RsGxsId& key_id,const std::list& peer_ids) ; - virtual bool signData(const uint8_t *data,uint32_t data_size,const RsGxsId& signer_id,RsTlvKeySignature& signature,uint32_t& signing_error) ; - virtual bool validateData(const uint8_t *data,uint32_t data_size,const RsTlvKeySignature& signature,bool force_load,uint32_t& signing_error) ; + virtual bool isOwnId(const RsGxsId& key_id) ; - virtual bool encryptData(const uint8_t *decrypted_data,uint32_t decrypted_data_size,uint8_t *& encrypted_data,uint32_t& encrypted_data_size,const RsGxsId& encryption_key_id,bool force_load,uint32_t& encryption_error) ; - virtual bool decryptData(const uint8_t *encrypted_data,uint32_t encrypted_data_size,uint8_t *& decrypted_data,uint32_t& decrypted_data_size,const RsGxsId& encryption_key_id,uint32_t& encryption_error) ; + virtual bool signData(const uint8_t *data,uint32_t data_size,const RsGxsId& signer_id,RsTlvKeySignature& signature,uint32_t& signing_error) ; + virtual bool validateData(const uint8_t *data,uint32_t data_size,const RsTlvKeySignature& signature,bool force_load,uint32_t& signing_error) ; - virtual bool haveKey(const RsGxsId &id); - virtual bool havePrivateKey(const RsGxsId &id); + virtual bool encryptData(const uint8_t *decrypted_data,uint32_t decrypted_data_size,uint8_t *& encrypted_data,uint32_t& encrypted_data_size,const RsGxsId& encryption_key_id,bool force_load,uint32_t& encryption_error) ; + virtual bool decryptData(const uint8_t *encrypted_data,uint32_t encrypted_data_size,uint8_t *& decrypted_data,uint32_t& decrypted_data_size,const RsGxsId& encryption_key_id,uint32_t& encryption_error) ; - virtual bool getKey(const RsGxsId &id, RsTlvPublicRSAKey &key); - virtual bool getPrivateKey(const RsGxsId &id, RsTlvPrivateRSAKey &key); + virtual bool haveKey(const RsGxsId &id); + virtual bool havePrivateKey(const RsGxsId &id); - virtual bool requestKey(const RsGxsId &id, const std::list &peers); - virtual bool requestPrivateKey(const RsGxsId &id); + virtual bool getKey(const RsGxsId &id, RsTlvPublicRSAKey &key); + virtual bool getPrivateKey(const RsGxsId &id, RsTlvPrivateRSAKey &key); + + virtual bool requestKey(const RsGxsId &id, const std::list &peers); + virtual bool requestPrivateKey(const RsGxsId &id); - /**************** RsGixsReputation Implementation ****************/ + /**************** RsGixsReputation Implementation ****************/ - // get Reputation. -virtual bool haveReputation(const RsGxsId &id); -virtual bool loadReputation(const RsGxsId &id, const std::list& peers); -virtual bool getReputation(const RsGxsId &id, GixsReputation &rep); + // get Reputation. + virtual bool haveReputation(const RsGxsId &id); + virtual bool loadReputation(const RsGxsId &id, const std::list& peers); + virtual bool getReputation(const RsGxsId &id, GixsReputation &rep); - protected: - /** Notifications **/ -virtual void notifyChanges(std::vector& changes); +protected: + /** Notifications **/ + virtual void notifyChanges(std::vector& changes); /** Overloaded to add PgpIdHash to Group Definition **/ -virtual ServiceCreate_Return service_CreateGroup(RsGxsGrpItem* grpItem, RsTlvSecurityKeySet& keySet); + virtual ServiceCreate_Return service_CreateGroup(RsGxsGrpItem* grpItem, RsTlvSecurityKeySet& keySet); - // Overloaded from GxsTokenQueue for Request callbacks. -virtual void handleResponse(uint32_t token, uint32_t req_type); + // Overloaded from GxsTokenQueue for Request callbacks. + virtual void handleResponse(uint32_t token, uint32_t req_type); - // Overloaded from RsTickEvent. -virtual void handle_event(uint32_t event_type, const std::string &elabel); + // Overloaded from RsTickEvent. + virtual void handle_event(uint32_t event_type, const std::string &elabel); - //===================================================// - // p3Config methods // - //===================================================// + //===================================================// + // p3Config methods // + //===================================================// - // Load/save the routing info, the pending items in transit, and the config variables. - // - virtual bool loadList(std::list& items) ; - virtual bool saveList(bool& cleanup,std::list& items) ; + // Load/save the routing info, the pending items in transit, and the config variables. + // + virtual bool loadList(std::list& items) ; + virtual bool saveList(bool& cleanup,std::list& items) ; - virtual RsSerialiser *setupSerialiser() ; + virtual RsSerialiser *setupSerialiser() ; - private: +private: -/************************************************************************ + /************************************************************************ * This is the Cache for minimising calls to the DataStore. * */ @@ -349,7 +350,7 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); bool cache_store(const RsGxsIdGroupItem *item); bool cache_update_if_cached(const RsGxsId &id, std::string serviceString); - bool isPendingNetworkRequest(const RsGxsId& gxsId); + bool isPendingNetworkRequest(const RsGxsId& gxsId); void requestIdsFromNet(); // Mutex protected. @@ -360,7 +361,7 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); // Switching to RsMemCache for Key Caching. RsMemCache mKeyCache; -/************************************************************************ + /************************************************************************ * Refreshing own Ids. * */ @@ -369,7 +370,7 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); std::list mOwnIds; -/************************************************************************ + /************************************************************************ * Test fns for Caching. * */ @@ -377,7 +378,7 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); bool cachetest_getlist(); bool cachetest_handlerequest(uint32_t token); -/************************************************************************ + /************************************************************************ * for processing background tasks that use the serviceString. * - must be mutually exclusive to avoid clashes. */ @@ -387,7 +388,7 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); bool mBgSchedule_Active; uint32_t mBgSchedule_Mode; -/************************************************************************ + /************************************************************************ * pgphash processing. * */ @@ -395,7 +396,7 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); bool pgphash_handlerequest(uint32_t token); bool pgphash_process(); - bool checkId(const RsGxsIdGroup &grp, RsPgpId &pgp_id, bool &error); + bool checkId(const RsGxsIdGroup &grp, RsPgpId &pgp_id, bool &error); void getPgpIdList(); /* MUTEX PROTECTED DATA (mIdMtx - maybe should use a 2nd?) */ @@ -403,7 +404,7 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); std::map mPgpFingerprintMap; std::list mGroupsToProcess; -/************************************************************************ + /************************************************************************ * recogn processing. * */ @@ -421,7 +422,7 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); void loadRecognKeys(); -/************************************************************************ + /************************************************************************ * opinion processing. * */ @@ -449,24 +450,24 @@ virtual void handle_event(uint32_t event_type, const std::string &elabel); std::map mRecognSignKeys; std::map mRecognOldSignKeys; -/************************************************************************ + /************************************************************************ * Below is the background task for processing opinions => reputations * */ -virtual void generateDummyData(); + virtual void generateDummyData(); void generateDummy_OwnIds(); void generateDummy_FriendPGP(); void generateDummy_UnknownPGP(); void generateDummy_UnknownPseudo(); - void cleanUnusedKeys() ; - void slowIndicateConfigChanged() ; + void cleanUnusedKeys() ; + void slowIndicateConfigChanged() ; - virtual void timeStampKey(const RsGxsId& id) ; - time_t locked_getLastUsageTS(const RsGxsId& gxs_id); + virtual void timeStampKey(const RsGxsId& id) ; + time_t locked_getLastUsageTS(const RsGxsId& gxs_id); -std::string genRandomId(int len = 20); + std::string genRandomId(int len = 20); #if 0 bool reputation_start(); @@ -479,7 +480,7 @@ std::string genRandomId(int len = 20); bool background_processNewMessages(); bool background_FullCalcRequest(); bool background_processFullCalc(); - + bool background_cleanup(); #endif @@ -489,40 +490,40 @@ std::string genRandomId(int len = 20); /***** below here is locked *****/ bool mLastBgCheck; bool mBgProcessing; - + uint32_t mBgToken; uint32_t mBgPhase; - + std::map mBgGroupMap; std::list mBgFullCalcGroups; #endif -/************************************************************************ + /************************************************************************ * Other Data that is protected by the Mutex. */ - private: +private: std::map > mIdsPendingCache; std::map > mGroupNotPresent; std::map > mIdsNotPresent; std::map mKeysTS ; - - // keep a list of regular contacts. This is useful to sort IDs, and allow some services to priviledged ids only. - std::set mContacts; + + // keep a list of regular contacts. This is useful to sort IDs, and allow some services to priviledged ids only. + std::set mContacts; RsNetworkExchangeService* mNes; /************************** - * AuxUtils provides interface to Security Function (e.g. GPGAuth(), notify etc.) + * AuxUtils provides interface to Security Function (e.g. GPGAuth(), notify etc.) * without depending directly on all these classes. */ - PgpAuxUtils *mPgpUtils; + PgpAuxUtils *mPgpUtils; - time_t mLastKeyCleaningTime ; - time_t mLastConfigUpdate ; + time_t mLastKeyCleaningTime ; + time_t mLastConfigUpdate ; - bool mOwnIdsLoaded ; + bool mOwnIdsLoaded ; }; #endif // P3_IDENTITY_SERVICE_HEADER