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
This commit is contained in:
chrisparker126 2014-03-03 22:22:04 +00:00
parent 886a8974db
commit ad1602d701
9 changed files with 49 additions and 32 deletions

View file

@ -309,9 +309,11 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c)
grpMeta->mLastPost = c.getInt32(COL_GRP_LAST_POST); grpMeta->mLastPost = c.getInt32(COL_GRP_LAST_POST);
grpMeta->mGroupStatus = c.getInt32(COL_GRP_STATUS); 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); 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) ; std::string s ; c.getString(COL_GRP_ORIGINATOR, s) ;
grpMeta->mOriginator = RsPeerId(s); grpMeta->mOriginator = RsPeerId(s);
@ -632,9 +634,9 @@ int RsDataService::storeGroup(std::map<RsNxsGrp *, RsGxsGrpMetaData *> &grp)
cv.put(KEY_NXS_FLAGS, (int32_t)grpMetaPtr->mGroupFlags); cv.put(KEY_NXS_FLAGS, (int32_t)grpMetaPtr->mGroupFlags);
cv.put(KEY_TIME_STAMP, (int32_t)grpMetaPtr->mPublishTs); cv.put(KEY_TIME_STAMP, (int32_t)grpMetaPtr->mPublishTs);
cv.put(KEY_GRP_SIGN_FLAGS, (int32_t)grpMetaPtr->mSignFlags); 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_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_ORIGINATOR, grpMetaPtr->mOriginator.toStdString());
cv.put(KEY_GRP_AUTHEN_FLAGS, (int32_t)grpMetaPtr->mAuthenFlags); cv.put(KEY_GRP_AUTHEN_FLAGS, (int32_t)grpMetaPtr->mAuthenFlags);
cv.put(KEY_PARENT_GRP_ID, grpMetaPtr->mParentGrpId.toStdString()); cv.put(KEY_PARENT_GRP_ID, grpMetaPtr->mParentGrpId.toStdString());
@ -725,9 +727,9 @@ int RsDataService::updateGroup(std::map<RsNxsGrp *, RsGxsGrpMetaData *> &grp)
cv.put(KEY_NXS_FLAGS, (int32_t)grpMetaPtr->mGroupFlags); cv.put(KEY_NXS_FLAGS, (int32_t)grpMetaPtr->mGroupFlags);
cv.put(KEY_TIME_STAMP, (int32_t)grpMetaPtr->mPublishTs); cv.put(KEY_TIME_STAMP, (int32_t)grpMetaPtr->mPublishTs);
cv.put(KEY_GRP_SIGN_FLAGS, (int32_t)grpMetaPtr->mSignFlags); 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_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_ORIGINATOR, grpMetaPtr->mOriginator.toStdString());
cv.put(KEY_GRP_AUTHEN_FLAGS, (int32_t)grpMetaPtr->mAuthenFlags); cv.put(KEY_GRP_AUTHEN_FLAGS, (int32_t)grpMetaPtr->mAuthenFlags);
cv.put(KEY_NXS_HASH, grpMetaPtr->mHash.toStdString()); cv.put(KEY_NXS_HASH, grpMetaPtr->mHash.toStdString());

View file

@ -47,7 +47,7 @@ uint32_t RsGxsGrpMetaData::serial_size()
s += signSet.TlvSize(); s += signSet.TlvSize();
s += keys.TlvSize(); s += keys.TlvSize();
s += 4; // for mCircleType s += 4; // for mCircleType
s += GetTlvStringSize(mCircleId); s += mCircleId.serial_size();
s += 4; // mAuthenFlag s += 4; // mAuthenFlag
s += mParentGrpId.serial_size(); s += mParentGrpId.serial_size();
@ -114,7 +114,7 @@ bool RsGxsGrpMetaData::serialise(void *data, uint32_t &pktsize)
ok &= setRawUInt32(data, tlvsize, &offset, mAuthenFlags); ok &= setRawUInt32(data, tlvsize, &offset, mAuthenFlags);
ok &= mAuthorId.serialise(data, tlvsize, offset); ok &= mAuthorId.serialise(data, tlvsize, offset);
ok &= SetTlvString(data, tlvsize, &offset, 0, mServiceString); 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 &= signSet.SetTlv(data, tlvsize, &offset);
ok &= keys.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 &= getRawUInt32(data, pktsize, &offset, &mAuthenFlags);
ok &= mAuthorId.deserialise(data, pktsize, offset); ok &= mAuthorId.deserialise(data, pktsize, offset);
ok &= GetTlvString(data, pktsize, &offset, 0, mServiceString); 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 &= signSet.GetTlv(data, pktsize, &offset);
ok &= keys.GetTlv(data, pktsize, &offset); ok &= keys.GetTlv(data, pktsize, &offset);

View file

@ -54,7 +54,7 @@ public:
uint32_t mSignFlags; uint32_t mSignFlags;
RsGxsId mAuthorId; RsGxsId mAuthorId;
std::string mCircleId; RsGxsCircleId mCircleId;
uint32_t mCircleType; uint32_t mCircleType;
@ -76,7 +76,7 @@ public:
uint32_t mGroupStatus; uint32_t mGroupStatus;
uint32_t mRecvTS; uint32_t mRecvTS;
RsPeerId mOriginator; RsPeerId mOriginator;
std::string mInternalCircle; RsGxsCircleId mInternalCircle;
RsFileHash mHash; RsFileHash mHash;
}; };

View file

@ -2157,7 +2157,7 @@ bool RsGxsNetService::canSendGrpId(const RsPeerId& sslId, RsGxsGrpMetaData& grpM
{ {
// a non empty internal circle id means this // a non empty internal circle id means this
// is the personal circle owner // is the personal circle owner
if(!grpMeta.mInternalCircle.empty()) if(!grpMeta.mInternalCircle.isNull())
{ {
const RsGxsCircleId& internalCircleId = grpMeta.mCircleId; const RsGxsCircleId& internalCircleId = grpMeta.mCircleId;
if(mCircles->isLoaded(internalCircleId)) if(mCircles->isLoaded(internalCircleId))
@ -2337,7 +2337,7 @@ bool RsGxsNetService::canSendMsgIds(const std::vector<RsGxsMsgMetaData*>& msgMet
{ {
// a non empty internal circle id means this // a non empty internal circle id means this
// is the personal circle owner // is the personal circle owner
if(!grpMeta.mInternalCircle.empty()) if(!grpMeta.mInternalCircle.isNull())
{ {
const RsGxsCircleId& internalCircleId = grpMeta.mCircleId; const RsGxsCircleId& internalCircleId = grpMeta.mCircleId;
if(mCircles->isLoaded(internalCircleId)) if(mCircles->isLoaded(internalCircleId))

View file

@ -43,7 +43,6 @@ class RsGxsCircles;
extern RsGxsCircles *rsGxsCircles; extern RsGxsCircles *rsGxsCircles;
typedef std::string RsGxsCircleId;
typedef RsPgpId RsPgpId; typedef RsPgpId RsPgpId;
typedef std::string RsCircleInternalId; typedef std::string RsCircleInternalId;

View file

@ -18,6 +18,7 @@
typedef GXSGroupId RsGxsGroupId; typedef GXSGroupId RsGxsGroupId;
typedef Sha1CheckSum RsGxsMessageId; typedef Sha1CheckSum RsGxsMessageId;
typedef GXSId RsGxsId; typedef GXSId RsGxsId;
typedef GXSCircleId RsGxsCircleId;
typedef std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > GxsMsgIdResult; typedef std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > GxsMsgIdResult;
typedef std::pair<RsGxsGroupId, RsGxsMessageId> RsGxsGrpMsgIdPair; typedef std::pair<RsGxsGroupId, RsGxsMessageId> RsGxsGrpMsgIdPair;
@ -64,7 +65,7 @@ public:
RsGxsId mAuthorId; // Optional. RsGxsId mAuthorId; // Optional.
// for circles // for circles
std::string mCircleId; RsGxsCircleId mCircleId;
uint32_t mCircleType; uint32_t mCircleType;
uint32_t mAuthenFlags; uint32_t mAuthenFlags;
RsGxsGroupId mParentGrpId; RsGxsGroupId mParentGrpId;
@ -80,7 +81,7 @@ public:
uint32_t mGroupStatus; uint32_t mGroupStatus;
std::string mServiceString; // Service Specific Free-Form extra storage. std::string mServiceString; // Service Specific Free-Form extra storage.
RsPeerId mOriginator; RsPeerId mOriginator;
std::string mInternalCircle; RsGxsCircleId mInternalCircle;
}; };

View file

@ -134,7 +134,13 @@ bool RsGxsCircleGroupItem::convertFrom(const RsGxsCircleGroup &group)
gxsIdSet.ids.push_back(it->toStdString()); gxsIdSet.ids.push_back(it->toStdString());
} }
} }
subCircleSet.ids = group.mSubCircles; const std::list<RsGxsCircleId>& scl = group.mSubCircles;
std::list<RsGxsCircleId>::const_iterator cit = scl.begin();
subCircleSet.ids.clear();
for(; cit != scl.end(); cit++)
subCircleSet.ids.push_back(cit->toStdString());
return true; return true;
} }
@ -158,7 +164,14 @@ bool RsGxsCircleGroupItem::convertTo(RsGxsCircleGroup &group) const
group.mInvitedMembers.push_back((RsGxsId(*cit))); group.mInvitedMembers.push_back((RsGxsId(*cit)));
} }
group.mSubCircles = subCircleSet.ids;
const std::list<std::string> scs = subCircleSet.ids;
std::list<std::string>::const_iterator cit = scs.begin();
group.mSubCircles.clear();
for(; cit != scs.end(); cit++)
group.mSubCircles.push_back(RsGxsCircleId(*cit));
return true; return true;
} }

View file

@ -199,7 +199,8 @@ void p3GxsCircles::notifyChanges(std::vector<RsGxsNotify *> &changes)
// for new circles we need to add them to the list. // for new circles we need to add them to the list.
RsStackMutex stack(mCircleMtx); /********** STACK LOCKED MTX ******/ 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) if (item->meta.mCircleType == GXS_CIRCLE_TYPE_LOCAL)
{ {
mCirclePersonalIdList.push_back(item->meta.mGroupId.toStdString()); mCirclePersonalIdList.push_back(RsGxsCircleId(item->meta.mGroupId.toStdString()));
} }
else 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++) for(it = groups.begin(); it != groups.end(); it++)
{ {
RsGxsCircleId tempId(it->mGroupId.toStdString());
if (it->mCircleType == GXS_CIRCLE_TYPE_LOCAL) if (it->mCircleType == GXS_CIRCLE_TYPE_LOCAL)
{ {
mCirclePersonalIdList.push_back(it->mGroupId.toStdString()); mCirclePersonalIdList.push_back(tempId);
} }
else else
{ {
mCircleExternalIdList.push_back(it->mGroupId.toStdString()); mCircleExternalIdList.push_back(tempId);
} }
} }
} }
@ -798,7 +800,7 @@ bool p3GxsCircles::cache_start_load()
std::cerr << std::endl; std::cerr << std::endl;
#endif // DEBUG_CIRCLES #endif // DEBUG_CIRCLES
groupIds.push_back(RsGxsGroupId(*it)); // might need conversion? groupIds.push_back(RsGxsGroupId(it->toStdString())); // might need conversion?
} }
mCacheLoad_ToCache.clear(); mCacheLoad_ToCache.clear();
@ -859,7 +861,7 @@ bool p3GxsCircles::cache_load_for_token(uint32_t token)
RsStackMutex stack(mCircleMtx); /********** STACK LOCKED MTX ******/ RsStackMutex stack(mCircleMtx); /********** STACK LOCKED MTX ******/
/* should already have a LoadingCache entry */ /* should already have a LoadingCache entry */
RsGxsCircleId id = item->meta.mGroupId.toStdString(); RsGxsCircleId id = RsGxsCircleId(item->meta.mGroupId.toStdString());
std::map<RsGxsCircleId, RsGxsCircleCache>::iterator it; std::map<RsGxsCircleId, RsGxsCircleCache>::iterator it;
it = mLoadingCache.find(id); it = mLoadingCache.find(id);
if (it == mLoadingCache.end()) if (it == mLoadingCache.end())
@ -1013,7 +1015,7 @@ bool p3GxsCircles::cache_load_for_token(uint32_t token)
if (isUnprocessedPeers) if (isUnprocessedPeers)
{ {
/* schedule event to try reload gxsIds */ /* 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 #ifdef DEBUG_CIRCLES
std::cerr << "p3GxsCircles::cache_reloadids()"; std::cerr << "p3GxsCircles::cache_reloadids()";
@ -1181,8 +1183,8 @@ bool p3GxsCircles::checkCircleCacheForAutoSubscribe(RsGxsCircleCache &cache)
uint32_t token, token2; uint32_t token, token2;
RsGenExchange::subscribeToGroup(token, RsGxsGroupId(cache.mCircleId), true); RsGenExchange::subscribeToGroup(token, RsGxsGroupId(cache.mCircleId.toStdString()), true);
RsGenExchange::setGroupStatusFlags(token2, RsGxsGroupId(cache.mCircleId), 0, GXS_SERV::GXS_GRP_STATUS_UNPROCESSED); RsGenExchange::setGroupStatusFlags(token2, RsGxsGroupId(cache.mCircleId.toStdString()), 0, GXS_SERV::GXS_GRP_STATUS_UNPROCESSED);
cache.mGroupStatus ^= GXS_SERV::GXS_GRP_STATUS_UNPROCESSED; cache.mGroupStatus ^= GXS_SERV::GXS_GRP_STATUS_UNPROCESSED;
return true; 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. */ /* we know all the peers - we are not part - we can flag as PROCESSED. */
uint32_t token; 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; cache.mGroupStatus ^= GXS_SERV::GXS_GRP_STATUS_UNPROCESSED;
} }
else else
@ -1647,7 +1649,7 @@ void p3GxsCircles::handle_event(uint32_t event_type, const std::string &elabel)
break; break;
case CIRCLE_EVENT_RELOADIDS: case CIRCLE_EVENT_RELOADIDS:
cache_reloadids(elabel); cache_reloadids(RsGxsCircleId(elabel));
break; break;
#if 0 #if 0

View file

@ -188,7 +188,7 @@ class p3GxsCircles: public RsGxsCircleExchange, public RsGxsCircles,
bool cache_request_load(const RsGxsCircleId &id); bool cache_request_load(const RsGxsCircleId &id);
bool cache_start_load(); bool cache_start_load();
bool cache_load_for_token(uint32_t token); 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); bool checkCircleCacheForAutoSubscribe(RsGxsCircleCache &cache);