From ad1602d701eaf4a80709416d2a9736f890f337f0 Mon Sep 17 00:00:00 2001 From: chrisparker126 Date: Mon, 3 Mar 2014 22:22:04 +0000 Subject: [PATCH] refactoring circle id for librs git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-IdCleaning@7164 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/gxs/rsdataservice.cc | 14 ++++++---- libretroshare/src/gxs/rsgxsdata.cc | 6 ++-- libretroshare/src/gxs/rsgxsdata.h | 4 +-- libretroshare/src/gxs/rsgxsnetservice.cc | 4 +-- libretroshare/src/retroshare/rsgxscircles.h | 1 - .../src/retroshare/rsgxsifacetypes.h | 5 ++-- .../src/serialiser/rsgxscircleitems.cc | 17 +++++++++-- libretroshare/src/services/p3gxscircles.cc | 28 ++++++++++--------- libretroshare/src/services/p3gxscircles.h | 2 +- 9 files changed, 49 insertions(+), 32 deletions(-) diff --git a/libretroshare/src/gxs/rsdataservice.cc b/libretroshare/src/gxs/rsdataservice.cc index d3685b79f..b9d5b955b 100644 --- a/libretroshare/src/gxs/rsdataservice.cc +++ b/libretroshare/src/gxs/rsdataservice.cc @@ -309,9 +309,11 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c) grpMeta->mLastPost = c.getInt32(COL_GRP_LAST_POST); grpMeta->mGroupStatus = c.getInt32(COL_GRP_STATUS); - c.getString(COL_GRP_CIRCLE_ID, grpMeta->mCircleId); + c.getString(COL_GRP_CIRCLE_ID, tempId); + grpMeta->mCircleId = tempId; grpMeta->mCircleType = c.getInt32(COL_GRP_CIRCL_TYPE); - c.getString(COL_GRP_INTERN_CIRCLE, grpMeta->mInternalCircle); + c.getString(COL_GRP_INTERN_CIRCLE, tempId); + grpMeta->mInternalCircle = tempId; std::string s ; c.getString(COL_GRP_ORIGINATOR, s) ; grpMeta->mOriginator = RsPeerId(s); @@ -632,9 +634,9 @@ int RsDataService::storeGroup(std::map &grp) cv.put(KEY_NXS_FLAGS, (int32_t)grpMetaPtr->mGroupFlags); cv.put(KEY_TIME_STAMP, (int32_t)grpMetaPtr->mPublishTs); cv.put(KEY_GRP_SIGN_FLAGS, (int32_t)grpMetaPtr->mSignFlags); - cv.put(KEY_GRP_CIRCLE_ID, grpMetaPtr->mCircleId); + cv.put(KEY_GRP_CIRCLE_ID, grpMetaPtr->mCircleId.toStdString()); cv.put(KEY_GRP_CIRCLE_TYPE, (int32_t)grpMetaPtr->mCircleType); - cv.put(KEY_GRP_INTERNAL_CIRCLE, grpMetaPtr->mInternalCircle); + cv.put(KEY_GRP_INTERNAL_CIRCLE, grpMetaPtr->mInternalCircle.toStdString()); cv.put(KEY_GRP_ORIGINATOR, grpMetaPtr->mOriginator.toStdString()); cv.put(KEY_GRP_AUTHEN_FLAGS, (int32_t)grpMetaPtr->mAuthenFlags); cv.put(KEY_PARENT_GRP_ID, grpMetaPtr->mParentGrpId.toStdString()); @@ -725,9 +727,9 @@ int RsDataService::updateGroup(std::map &grp) cv.put(KEY_NXS_FLAGS, (int32_t)grpMetaPtr->mGroupFlags); cv.put(KEY_TIME_STAMP, (int32_t)grpMetaPtr->mPublishTs); cv.put(KEY_GRP_SIGN_FLAGS, (int32_t)grpMetaPtr->mSignFlags); - cv.put(KEY_GRP_CIRCLE_ID, grpMetaPtr->mCircleId); + cv.put(KEY_GRP_CIRCLE_ID, grpMetaPtr->mCircleId.toStdString()); cv.put(KEY_GRP_CIRCLE_TYPE, (int32_t)grpMetaPtr->mCircleType); - cv.put(KEY_GRP_INTERNAL_CIRCLE, grpMetaPtr->mInternalCircle); + cv.put(KEY_GRP_INTERNAL_CIRCLE, grpMetaPtr->mInternalCircle.toStdString()); cv.put(KEY_GRP_ORIGINATOR, grpMetaPtr->mOriginator.toStdString()); cv.put(KEY_GRP_AUTHEN_FLAGS, (int32_t)grpMetaPtr->mAuthenFlags); cv.put(KEY_NXS_HASH, grpMetaPtr->mHash.toStdString()); diff --git a/libretroshare/src/gxs/rsgxsdata.cc b/libretroshare/src/gxs/rsgxsdata.cc index 5d0b9673f..94c67ff15 100644 --- a/libretroshare/src/gxs/rsgxsdata.cc +++ b/libretroshare/src/gxs/rsgxsdata.cc @@ -47,7 +47,7 @@ uint32_t RsGxsGrpMetaData::serial_size() s += signSet.TlvSize(); s += keys.TlvSize(); s += 4; // for mCircleType - s += GetTlvStringSize(mCircleId); + s += mCircleId.serial_size(); s += 4; // mAuthenFlag s += mParentGrpId.serial_size(); @@ -114,7 +114,7 @@ bool RsGxsGrpMetaData::serialise(void *data, uint32_t &pktsize) ok &= setRawUInt32(data, tlvsize, &offset, mAuthenFlags); ok &= mAuthorId.serialise(data, tlvsize, offset); ok &= SetTlvString(data, tlvsize, &offset, 0, mServiceString); - ok &= SetTlvString(data, tlvsize, &offset, 0, mCircleId); + ok &= mCircleId.serialise(data, tlvsize, offset); ok &= signSet.SetTlv(data, tlvsize, &offset); ok &= keys.SetTlv(data, tlvsize, &offset); @@ -145,7 +145,7 @@ bool RsGxsGrpMetaData::deserialise(void *data, uint32_t &pktsize) ok &= getRawUInt32(data, pktsize, &offset, &mAuthenFlags); ok &= mAuthorId.deserialise(data, pktsize, offset); ok &= GetTlvString(data, pktsize, &offset, 0, mServiceString); - ok &= GetTlvString(data, pktsize, &offset, 0, mCircleId); + ok &= mCircleId.deserialise(data, pktsize, offset); ok &= signSet.GetTlv(data, pktsize, &offset); ok &= keys.GetTlv(data, pktsize, &offset); diff --git a/libretroshare/src/gxs/rsgxsdata.h b/libretroshare/src/gxs/rsgxsdata.h index c94096ff7..d134a7a22 100644 --- a/libretroshare/src/gxs/rsgxsdata.h +++ b/libretroshare/src/gxs/rsgxsdata.h @@ -54,7 +54,7 @@ public: uint32_t mSignFlags; RsGxsId mAuthorId; - std::string mCircleId; + RsGxsCircleId mCircleId; uint32_t mCircleType; @@ -76,7 +76,7 @@ public: uint32_t mGroupStatus; uint32_t mRecvTS; RsPeerId mOriginator; - std::string mInternalCircle; + RsGxsCircleId mInternalCircle; RsFileHash mHash; }; diff --git a/libretroshare/src/gxs/rsgxsnetservice.cc b/libretroshare/src/gxs/rsgxsnetservice.cc index e151c9dc4..93a59529c 100644 --- a/libretroshare/src/gxs/rsgxsnetservice.cc +++ b/libretroshare/src/gxs/rsgxsnetservice.cc @@ -2157,7 +2157,7 @@ bool RsGxsNetService::canSendGrpId(const RsPeerId& sslId, RsGxsGrpMetaData& grpM { // a non empty internal circle id means this // is the personal circle owner - if(!grpMeta.mInternalCircle.empty()) + if(!grpMeta.mInternalCircle.isNull()) { const RsGxsCircleId& internalCircleId = grpMeta.mCircleId; if(mCircles->isLoaded(internalCircleId)) @@ -2337,7 +2337,7 @@ bool RsGxsNetService::canSendMsgIds(const std::vector& msgMet { // a non empty internal circle id means this // is the personal circle owner - if(!grpMeta.mInternalCircle.empty()) + if(!grpMeta.mInternalCircle.isNull()) { const RsGxsCircleId& internalCircleId = grpMeta.mCircleId; if(mCircles->isLoaded(internalCircleId)) diff --git a/libretroshare/src/retroshare/rsgxscircles.h b/libretroshare/src/retroshare/rsgxscircles.h index 2e8697e19..991f229c6 100644 --- a/libretroshare/src/retroshare/rsgxscircles.h +++ b/libretroshare/src/retroshare/rsgxscircles.h @@ -43,7 +43,6 @@ class RsGxsCircles; extern RsGxsCircles *rsGxsCircles; -typedef std::string RsGxsCircleId; typedef RsPgpId RsPgpId; typedef std::string RsCircleInternalId; diff --git a/libretroshare/src/retroshare/rsgxsifacetypes.h b/libretroshare/src/retroshare/rsgxsifacetypes.h index 6b891cbbd..f1b979178 100644 --- a/libretroshare/src/retroshare/rsgxsifacetypes.h +++ b/libretroshare/src/retroshare/rsgxsifacetypes.h @@ -18,6 +18,7 @@ typedef GXSGroupId RsGxsGroupId; typedef Sha1CheckSum RsGxsMessageId; typedef GXSId RsGxsId; +typedef GXSCircleId RsGxsCircleId; typedef std::map > GxsMsgIdResult; typedef std::pair RsGxsGrpMsgIdPair; @@ -64,7 +65,7 @@ public: RsGxsId mAuthorId; // Optional. // for circles - std::string mCircleId; + RsGxsCircleId mCircleId; uint32_t mCircleType; uint32_t mAuthenFlags; RsGxsGroupId mParentGrpId; @@ -80,7 +81,7 @@ public: uint32_t mGroupStatus; std::string mServiceString; // Service Specific Free-Form extra storage. RsPeerId mOriginator; - std::string mInternalCircle; + RsGxsCircleId mInternalCircle; }; diff --git a/libretroshare/src/serialiser/rsgxscircleitems.cc b/libretroshare/src/serialiser/rsgxscircleitems.cc index 0eef017f4..c649493ba 100644 --- a/libretroshare/src/serialiser/rsgxscircleitems.cc +++ b/libretroshare/src/serialiser/rsgxscircleitems.cc @@ -134,7 +134,13 @@ bool RsGxsCircleGroupItem::convertFrom(const RsGxsCircleGroup &group) gxsIdSet.ids.push_back(it->toStdString()); } } - subCircleSet.ids = group.mSubCircles; + const std::list& scl = group.mSubCircles; + + std::list::const_iterator cit = scl.begin(); + subCircleSet.ids.clear(); + for(; cit != scl.end(); cit++) + subCircleSet.ids.push_back(cit->toStdString()); + return true; } @@ -158,7 +164,14 @@ bool RsGxsCircleGroupItem::convertTo(RsGxsCircleGroup &group) const group.mInvitedMembers.push_back((RsGxsId(*cit))); } - group.mSubCircles = subCircleSet.ids; + + const std::list scs = subCircleSet.ids; + std::list::const_iterator cit = scs.begin(); + + group.mSubCircles.clear(); + + for(; cit != scs.end(); cit++) + group.mSubCircles.push_back(RsGxsCircleId(*cit)); return true; } diff --git a/libretroshare/src/services/p3gxscircles.cc b/libretroshare/src/services/p3gxscircles.cc index 7e81f3804..e8916dfa4 100644 --- a/libretroshare/src/services/p3gxscircles.cc +++ b/libretroshare/src/services/p3gxscircles.cc @@ -199,7 +199,8 @@ void p3GxsCircles::notifyChanges(std::vector &changes) // for new circles we need to add them to the list. RsStackMutex stack(mCircleMtx); /********** STACK LOCKED MTX ******/ - mCircleExternalIdList.push_back(git->toStdString()); + RsGxsCircleId tempId(git->toStdString()); + mCircleExternalIdList.push_back(tempId); } } } @@ -435,11 +436,11 @@ RsGenExchange::ServiceCreate_Return p3GxsCircles::service_CreateGroup(RsGxsGrpIt if (item->meta.mCircleType == GXS_CIRCLE_TYPE_LOCAL) { - mCirclePersonalIdList.push_back(item->meta.mGroupId.toStdString()); + mCirclePersonalIdList.push_back(RsGxsCircleId(item->meta.mGroupId.toStdString())); } else { - mCircleExternalIdList.push_back(item->meta.mGroupId.toStdString()); + mCircleExternalIdList.push_back(RsGxsCircleId(item->meta.mGroupId.toStdString())); } } @@ -583,13 +584,14 @@ bool p3GxsCircles::load_CircleIdList(uint32_t token) for(it = groups.begin(); it != groups.end(); it++) { + RsGxsCircleId tempId(it->mGroupId.toStdString()); if (it->mCircleType == GXS_CIRCLE_TYPE_LOCAL) { - mCirclePersonalIdList.push_back(it->mGroupId.toStdString()); + mCirclePersonalIdList.push_back(tempId); } else { - mCircleExternalIdList.push_back(it->mGroupId.toStdString()); + mCircleExternalIdList.push_back(tempId); } } } @@ -798,7 +800,7 @@ bool p3GxsCircles::cache_start_load() std::cerr << std::endl; #endif // DEBUG_CIRCLES - groupIds.push_back(RsGxsGroupId(*it)); // might need conversion? + groupIds.push_back(RsGxsGroupId(it->toStdString())); // might need conversion? } mCacheLoad_ToCache.clear(); @@ -859,7 +861,7 @@ bool p3GxsCircles::cache_load_for_token(uint32_t token) RsStackMutex stack(mCircleMtx); /********** STACK LOCKED MTX ******/ /* should already have a LoadingCache entry */ - RsGxsCircleId id = item->meta.mGroupId.toStdString(); + RsGxsCircleId id = RsGxsCircleId(item->meta.mGroupId.toStdString()); std::map::iterator it; it = mLoadingCache.find(id); if (it == mLoadingCache.end()) @@ -1013,7 +1015,7 @@ bool p3GxsCircles::cache_load_for_token(uint32_t token) if (isUnprocessedPeers) { /* schedule event to try reload gxsIds */ - RsTickEvent::schedule_in(CIRCLE_EVENT_RELOADIDS, GXSID_LOAD_CYCLE, id); + RsTickEvent::schedule_in(CIRCLE_EVENT_RELOADIDS, GXSID_LOAD_CYCLE, id.toStdString()); } } } @@ -1039,7 +1041,7 @@ bool p3GxsCircles::cache_load_for_token(uint32_t token) } -bool p3GxsCircles::cache_reloadids(const std::string &circleId) +bool p3GxsCircles::cache_reloadids(const RsGxsCircleId &circleId) { #ifdef DEBUG_CIRCLES std::cerr << "p3GxsCircles::cache_reloadids()"; @@ -1181,8 +1183,8 @@ bool p3GxsCircles::checkCircleCacheForAutoSubscribe(RsGxsCircleCache &cache) uint32_t token, token2; - RsGenExchange::subscribeToGroup(token, RsGxsGroupId(cache.mCircleId), true); - RsGenExchange::setGroupStatusFlags(token2, RsGxsGroupId(cache.mCircleId), 0, GXS_SERV::GXS_GRP_STATUS_UNPROCESSED); + RsGenExchange::subscribeToGroup(token, RsGxsGroupId(cache.mCircleId.toStdString()), true); + RsGenExchange::setGroupStatusFlags(token2, RsGxsGroupId(cache.mCircleId.toStdString()), 0, GXS_SERV::GXS_GRP_STATUS_UNPROCESSED); cache.mGroupStatus ^= GXS_SERV::GXS_GRP_STATUS_UNPROCESSED; return true; } @@ -1193,7 +1195,7 @@ bool p3GxsCircles::checkCircleCacheForAutoSubscribe(RsGxsCircleCache &cache) /* we know all the peers - we are not part - we can flag as PROCESSED. */ uint32_t token; - RsGenExchange::setGroupStatusFlags(token, RsGxsGroupId(cache.mCircleId), 0, GXS_SERV::GXS_GRP_STATUS_UNPROCESSED); + RsGenExchange::setGroupStatusFlags(token, RsGxsGroupId(cache.mCircleId.toStdString()), 0, GXS_SERV::GXS_GRP_STATUS_UNPROCESSED); cache.mGroupStatus ^= GXS_SERV::GXS_GRP_STATUS_UNPROCESSED; } else @@ -1647,7 +1649,7 @@ void p3GxsCircles::handle_event(uint32_t event_type, const std::string &elabel) break; case CIRCLE_EVENT_RELOADIDS: - cache_reloadids(elabel); + cache_reloadids(RsGxsCircleId(elabel)); break; #if 0 diff --git a/libretroshare/src/services/p3gxscircles.h b/libretroshare/src/services/p3gxscircles.h index 719e89480..4fc79e774 100644 --- a/libretroshare/src/services/p3gxscircles.h +++ b/libretroshare/src/services/p3gxscircles.h @@ -188,7 +188,7 @@ class p3GxsCircles: public RsGxsCircleExchange, public RsGxsCircles, bool cache_request_load(const RsGxsCircleId &id); bool cache_start_load(); bool cache_load_for_token(uint32_t token); - bool cache_reloadids(const std::string &circleId); + bool cache_reloadids(const RsGxsCircleId &circleId); bool checkCircleCacheForAutoSubscribe(RsGxsCircleCache &cache);