From 2aed4ac0474bccc41de694d2e0c266f58c49ab2d Mon Sep 17 00:00:00 2001 From: chrisparker126 Date: Mon, 17 Feb 2014 22:39:41 +0000 Subject: [PATCH] saving RsGxsGroupId refactor progress git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-IdCleaning@7128 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/gxs/rsdataservice.cc | 111 +++++++++--------- libretroshare/src/gxs/rsdataservice.h | 6 +- libretroshare/src/gxs/rsgenexchange.cc | 8 +- libretroshare/src/gxs/rsgxsdataaccess.h | 2 +- .../src/retroshare/rsgxsifacetypes.h | 6 +- libretroshare/src/retroshare/rsids.h | 8 ++ .../src/serialiser/rsgxsupdateitems.cc | 6 +- libretroshare/src/serialiser/rsnxsitems.cc | 12 +- libretroshare/src/serialiser/rsnxsitems.h | 4 +- libretroshare/src/util/retrodb.h | 7 ++ 10 files changed, 94 insertions(+), 76 deletions(-) diff --git a/libretroshare/src/gxs/rsdataservice.cc b/libretroshare/src/gxs/rsdataservice.cc index 4c2021bbb..79b065d50 100644 --- a/libretroshare/src/gxs/rsdataservice.cc +++ b/libretroshare/src/gxs/rsdataservice.cc @@ -273,15 +273,15 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c) uint32_t data_len = 0; // grpId - c.getString(COL_GRP_ID, grpMeta->mGroupId); - - // required definition of a group - ok &= !grpMeta->mGroupId.empty(); + std::string tempId; + c.getString(COL_GRP_ID, tempId); + grpMeta->mGroupId = tempId; c.getString(COL_IDENTITY, grpMeta->mAuthorId); c.getString(COL_GRP_NAME, grpMeta->mGroupName); - c.getString(COL_ORIG_GRP_ID, grpMeta->mOrigGrpId); + c.getString(COL_ORIG_GRP_ID, tempId); + grpMeta->mOrigGrpId = tempId; c.getString(COL_GRP_SERV_STRING, grpMeta->mServiceString); c.getString(COL_HASH, grpMeta->mHash); grpMeta->mSignFlags = c.getInt32(COL_GRP_SIGN_FLAGS); @@ -315,7 +315,8 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c) grpMeta->mRecvTS = c.getInt32(COL_GRP_RECV_TS); - c.getString(COL_PARENT_GRP_ID, grpMeta->mParentGrpId); + c.getString(COL_PARENT_GRP_ID, tempId); + grpMeta->mParentGrpId = tempId; if(ok) return grpMeta; @@ -340,8 +341,8 @@ RsNxsGrp* RsDataService::locked_getGroup(RetroCursor &c) uint32_t data_len = 0; // grpId - c.getString(COL_ACT_GROUP_ID, grp->grpId); - ok &= !grp->grpId.empty(); + c.getStringT(COL_ACT_GROUP_ID, grp->grpId); + ok &= !grp->grpId.isNull(); offset = 0; data_len = 0; if(ok){ @@ -390,11 +391,13 @@ RsGxsMsgMetaData* RsDataService::locked_getMsgMeta(RetroCursor &c) char* data = NULL; - c.getString(COL_GRP_ID, msgMeta->mGroupId); + std::string gId; + c.getString(COL_GRP_ID, gId); + msgMeta->mGroupId = RsGxsGroupId(gId); c.getString(COL_MSG_ID, msgMeta->mMsgId); // without these, a msg is meaningless - ok &= (!msgMeta->mGroupId.empty()) && (!msgMeta->mMsgId.empty()); + ok &= (!msgMeta->mGroupId.isNull()) && (!msgMeta->mMsgId.empty()); c.getString(COL_ORIG_MSG_ID, msgMeta->mOrigMsgId); c.getString(COL_IDENTITY, msgMeta->mAuthorId); @@ -440,10 +443,10 @@ RsNxsMsg* RsDataService::locked_getMessage(RetroCursor &c) uint32_t data_len = 0, offset = 0; char* data = NULL; - c.getString(COL_ACT_GROUP_ID, msg->grpId); + c.getStringT(COL_ACT_GROUP_ID, msg->grpId); c.getString(COL_ACT_MSG_ID, msg->msgId); - ok &= (!msg->grpId.empty()) && (!msg->msgId.empty()); + ok &= (!msg->grpId.isNull()) && (!msg->msgId.empty()); offset = 0; data_len = 0; if(ok){ @@ -500,7 +503,7 @@ int RsDataService::storeMessage(std::map &msg) if(!validSize(msgPtr)) continue; // create or access file in binary - std::string msgFile = mServiceDir + "/" + msgPtr->grpId + "-msgs"; + std::string msgFile = mServiceDir + "/" + msgPtr->grpId.toStdString() + "-msgs"; std::fstream ostrm(msgFile.c_str(), std::ios::binary | std::ios::app | std::ios::out); ostrm.seekg(0, std::ios::end); // go to end to append uint32_t offset = ostrm.tellg(); // get fill offset @@ -511,7 +514,7 @@ int RsDataService::storeMessage(std::map &msg) cv.put(KEY_NXS_FILE, msgFile); cv.put(KEY_NXS_FILE_LEN, (int32_t)msgPtr->msg.TlvSize()); cv.put(KEY_MSG_ID, msgMetaPtr->mMsgId); - cv.put(KEY_GRP_ID, msgMetaPtr->mGroupId); + cv.put(KEY_GRP_ID, msgMetaPtr->mGroupId.toStdString()); cv.put(KEY_NXS_SERV_STRING, msgMetaPtr->mServiceString); cv.put(KEY_NXS_HASH, msgMetaPtr->mHash); cv.put(KEY_RECV_TS, (int32_t)msgMetaPtr->recvTS); @@ -594,7 +597,7 @@ int RsDataService::storeGroup(std::map &grp) // if data is larger than max item size do not add if(!validSize(grpPtr)) continue; - std::string grpFile = mServiceDir + "/" + grpPtr->grpId; + std::string grpFile = mServiceDir + "/" + grpPtr->grpId.toStdString(); std::fstream ostrm(grpFile.c_str(), std::ios::binary | std::ios::app | std::ios::out); ostrm.seekg(0, std::ios::end); // go to end to append uint32_t offset = ostrm.tellg(); // get fill offset @@ -609,9 +612,9 @@ int RsDataService::storeGroup(std::map &grp) cv.put(KEY_NXS_FILE_OFFSET, (int32_t)offset); cv.put(KEY_NXS_FILE_LEN, (int32_t)grpPtr->grp.TlvSize()); cv.put(KEY_NXS_FILE, grpFile); - cv.put(KEY_GRP_ID, grpPtr->grpId); + cv.put(KEY_GRP_ID, grpPtr->grpId.toStdString()); cv.put(KEY_GRP_NAME, grpMetaPtr->mGroupName); - cv.put(KEY_ORIG_GRP_ID, grpMetaPtr->mOrigGrpId); + cv.put(KEY_ORIG_GRP_ID, grpMetaPtr->mOrigGrpId.toStdString()); cv.put(KEY_NXS_SERV_STRING, grpMetaPtr->mServiceString); cv.put(KEY_NXS_FLAGS, (int32_t)grpMetaPtr->mGroupFlags); cv.put(KEY_TIME_STAMP, (int32_t)grpMetaPtr->mPublishTs); @@ -621,7 +624,7 @@ int RsDataService::storeGroup(std::map &grp) cv.put(KEY_GRP_INTERNAL_CIRCLE, grpMetaPtr->mInternalCircle); 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); + cv.put(KEY_PARENT_GRP_ID, grpMetaPtr->mParentGrpId.toStdString()); cv.put(KEY_NXS_HASH, grpMetaPtr->mHash); cv.put(KEY_RECV_TS, (int32_t)grpMetaPtr->mRecvTS); @@ -688,7 +691,7 @@ int RsDataService::updateGroup(std::map &grp) // if data is larger than max item size do not add if(!validSize(grpPtr)) continue; - std::string grpFile = mServiceDir + "/" + grpPtr->grpId; + std::string grpFile = mServiceDir + "/" + grpPtr->grpId.toStdString(); std::ofstream ostrm(grpFile.c_str(), std::ios::binary | std::ios::trunc); uint32_t offset = 0; // get file offset @@ -702,9 +705,9 @@ int RsDataService::updateGroup(std::map &grp) cv.put(KEY_NXS_FILE_OFFSET, (int32_t)offset); cv.put(KEY_NXS_FILE_LEN, (int32_t)grpPtr->grp.TlvSize()); cv.put(KEY_NXS_FILE, grpFile); - cv.put(KEY_GRP_ID, grpPtr->grpId); + cv.put(KEY_GRP_ID, grpPtr->grpId.toStdString()); cv.put(KEY_GRP_NAME, grpMetaPtr->mGroupName); - cv.put(KEY_ORIG_GRP_ID, grpMetaPtr->mOrigGrpId); + cv.put(KEY_ORIG_GRP_ID, grpMetaPtr->mOrigGrpId.toStdString()); cv.put(KEY_NXS_SERV_STRING, grpMetaPtr->mServiceString); cv.put(KEY_NXS_FLAGS, (int32_t)grpMetaPtr->mGroupFlags); cv.put(KEY_TIME_STAMP, (int32_t)grpMetaPtr->mPublishTs); @@ -743,7 +746,7 @@ int RsDataService::updateGroup(std::map &grp) ostrm.write(grpData, grpPtr->grp.TlvSize()); ostrm.close(); - mDb->sqlUpdate(GRP_TABLE_NAME, "grpId='" + grpPtr->grpId + "'", cv); + mDb->sqlUpdate(GRP_TABLE_NAME, "grpId='" + grpPtr->grpId.toStdString() + "'", cv); } // finish transaction bool ret = mDb->execSQL("COMMIT;"); @@ -767,7 +770,7 @@ bool RsDataService::validSize(RsNxsGrp* grp) const return false; } -int RsDataService::retrieveNxsGrps(std::map &grp, bool withMeta, bool cache){ +int RsDataService::retrieveNxsGrps(std::map &grp, bool withMeta, bool cache){ if(grp.empty()){ @@ -792,14 +795,14 @@ int RsDataService::retrieveNxsGrps(std::map &grp, bool }else{ RsStackMutex stack(mDbMutex); - std::map::iterator mit = grp.begin(); + std::map::iterator mit = grp.begin(); - std::list toRemove; + std::list toRemove; for(; mit != grp.end(); mit++) { - const std::string& grpId = mit->first; - RetroCursor* c = mDb->sqlQuery(GRP_TABLE_NAME, grpColumns, "grpId='" + grpId + "'", ""); + const RsGxsGroupId& grpId = mit->first; + RetroCursor* c = mDb->sqlQuery(GRP_TABLE_NAME, grpColumns, "grpId='" + grpId.toStdString() + "'", ""); if(c) { @@ -818,7 +821,7 @@ int RsDataService::retrieveNxsGrps(std::map &grp, bool } } - std::list::iterator grpIdIt; + std::list::iterator grpIdIt; for (grpIdIt = toRemove.begin(); grpIdIt != toRemove.end(); ++grpIdIt) { grp.erase(*grpIdIt); @@ -828,7 +831,7 @@ int RsDataService::retrieveNxsGrps(std::map &grp, bool if(withMeta && !grp.empty()) { std::map metaMap; - std::map::iterator mit = grp.begin(); + std::map::iterator mit = grp.begin(); for(; mit != grp.end(); mit++) metaMap.insert(std::make_pair(mit->first, (RsGxsGrpMetaData*)(NULL))); @@ -873,7 +876,7 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, b for(; mit != reqIds.end(); mit++) { - const std::string& grpId = mit->first; + const RsGxsGroupId& grpId = mit->first; // if vector empty then request all messages const std::vector& msgIdV = mit->second; @@ -883,7 +886,7 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, b RsStackMutex stack(mDbMutex); - RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, msgColumns, KEY_GRP_ID+ "='" + grpId + "'", ""); + RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, msgColumns, KEY_GRP_ID+ "='" + grpId.toStdString() + "'", ""); if(c) locked_retrieveMessages(c, msgSet); @@ -899,7 +902,7 @@ int RsDataService::retrieveNxsMsgs(const GxsMsgReq &reqIds, GxsMsgResult &msg, b RsStackMutex stack(mDbMutex); - RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, msgColumns, KEY_GRP_ID+ "='" + grpId + RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, msgColumns, KEY_GRP_ID+ "='" + grpId.toStdString() + "' AND " + KEY_MSG_ID + "='" + msgId + "'", ""); if(c) @@ -1007,14 +1010,14 @@ int RsDataService::retrieveGxsMsgMetaData(const GxsMsgReq& reqIds, GxsMsgMetaRes for(; mit != reqIds.end(); mit++) { - const std::string& grpId = mit->first; + const RsGxsGroupId& grpId = mit->first; // if vector empty then request all messages const std::vector& msgIdV = mit->second; std::vector metaSet; if(msgIdV.empty()){ - RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, msgMetaColumns, KEY_GRP_ID+ "='" + grpId + "'", ""); + RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, msgMetaColumns, KEY_GRP_ID+ "='" + grpId.toStdString() + "'", ""); locked_retrieveMsgMeta(c, metaSet); @@ -1025,7 +1028,7 @@ int RsDataService::retrieveGxsMsgMetaData(const GxsMsgReq& reqIds, GxsMsgMetaRes for(; sit!=msgIdV.end();sit++){ const std::string& msgId = *sit; - RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, msgMetaColumns, KEY_GRP_ID+ "='" + grpId + RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, msgMetaColumns, KEY_GRP_ID+ "='" + grpId.toStdString() + "' AND " + KEY_MSG_ID + "='" + msgId + "'", ""); locked_retrieveMsgMeta(c, metaSet); @@ -1089,7 +1092,7 @@ int RsDataService::retrieveGxsGrpMetaData(std::mapfirst; - RetroCursor* c = mDb->sqlQuery(GRP_TABLE_NAME, grpMetaColumns, "grpId='" + grpId + "'", ""); + RetroCursor* c = mDb->sqlQuery(GRP_TABLE_NAME, grpMetaColumns, "grpId='" + grpId.toStdString() + "'", ""); if(c) { @@ -1123,10 +1126,10 @@ int RsDataService::resetDataStore() std::cerr << "resetDataStore() " << std::endl; #endif - std::map grps; + std::map grps; retrieveNxsGrps(grps, false, false); - std::map::iterator mit + std::map::iterator mit = grps.begin(); { @@ -1134,7 +1137,7 @@ int RsDataService::resetDataStore() // remove all grp msgs files from service dir for(; mit != grps.end(); mit++){ - std::string file = mServiceDir + "/" + mit->first; + std::string file = mServiceDir + "/" + mit->first.toStdString(); std::string msgFile = file + "-msgs"; remove(file.c_str()); // remove group file remove(msgFile.c_str()); // and remove messages file @@ -1156,7 +1159,7 @@ int RsDataService::updateGroupMetaData(GrpLocMetaData &meta) { RsStackMutex stack(mDbMutex); RsGxsGroupId& grpId = meta.grpId; - return mDb->sqlUpdate(GRP_TABLE_NAME, KEY_GRP_ID+ "='" + grpId + "'", meta.val) ? 1 : 0; + return mDb->sqlUpdate(GRP_TABLE_NAME, KEY_GRP_ID+ "='" + grpId.toStdString() + "'", meta.val) ? 1 : 0; } int RsDataService::updateMessageMetaData(MsgLocMetaData &metaData) @@ -1164,7 +1167,7 @@ int RsDataService::updateMessageMetaData(MsgLocMetaData &metaData) RsStackMutex stack(mDbMutex); RsGxsGroupId& grpId = metaData.msgId.first; RsGxsMessageId& msgId = metaData.msgId.second; - return mDb->sqlUpdate(MSG_TABLE_NAME, KEY_GRP_ID+ "='" + grpId + return mDb->sqlUpdate(MSG_TABLE_NAME, KEY_GRP_ID+ "='" + grpId.toStdString() + "' AND " + KEY_MSG_ID + "='" + msgId + "'", metaData.val) ? 1 : 0; } @@ -1205,8 +1208,8 @@ int RsDataService::removeMsgs(const GxsMsgReq& msgIds) std::vector msgOffsets; locked_getMessageOffsets(grpId, msgOffsets); - std::string oldFileName = mServiceDir + "/" + grpId + "-msgs"; - std::string newFileName = mServiceDir + "/" + grpId + "-msgs-temp"; + std::string oldFileName = mServiceDir + "/" + grpId.toStdString() + "-msgs"; + std::string newFileName = mServiceDir + "/" + grpId.toStdString() + "-msgs-temp"; std::ifstream in(oldFileName.c_str(), std::ios::binary); std::vector dataBuff, newBuffer; @@ -1276,7 +1279,7 @@ int RsDataService::removeMsgs(const GxsMsgReq& msgIds) return 1; } -int RsDataService::removeGroups(const std::vector &grpIds) +int RsDataService::removeGroups(const std::vector &grpIds) { RsStackMutex stack(mDbMutex); @@ -1285,10 +1288,10 @@ int RsDataService::removeGroups(const std::vector &grpIds) // first remove file then remove group // from db - std::vector::const_iterator vit = grpIds.begin(); + std::vector::const_iterator vit = grpIds.begin(); for(; vit != grpIds.end(); vit++) { - const std::string grpFileName = mServiceDir + "/" + *vit; + const std::string grpFileName = mServiceDir + "/" + (*vit).toStdString(); remove(grpFileName.c_str()); } @@ -1297,7 +1300,7 @@ int RsDataService::removeGroups(const std::vector &grpIds) return 1; } -int RsDataService::retrieveGroupIds(std::vector &grpIds) +int RsDataService::retrieveGroupIds(std::vector &grpIds) { RsStackMutex stack(mDbMutex); @@ -1311,7 +1314,7 @@ int RsDataService::retrieveGroupIds(std::vector &grpIds) { std::string grpId; c->getString(0, grpId); - grpIds.push_back(grpId); + grpIds.push_back(RsGxsGroupId(grpId)); valid = c->moveToNext(); } delete c; @@ -1340,7 +1343,7 @@ bool RsDataService::locked_updateMessageEntries(const MsgUpdates& updates) for(; vit != updateV.end(); vit++) { const MsgUpdate& update = *vit; - mDb->sqlUpdate(MSG_TABLE_NAME, KEY_GRP_ID+ "='" + grpId + mDb->sqlUpdate(MSG_TABLE_NAME, KEY_GRP_ID+ "='" + grpId.toStdString() + "' AND " + KEY_MSG_ID + "='" + update.msgId + "'", update.cv); } } @@ -1366,7 +1369,7 @@ bool RsDataService::locked_removeMessageEntries(const GxsMsgReq& msgIds) for(; vit != msgsV.end(); vit++) { const RsGxsMessageId& msgId = *vit; - mDb->sqlDelete(MSG_TABLE_NAME, KEY_GRP_ID+ "='" + grpId + mDb->sqlDelete(MSG_TABLE_NAME, KEY_GRP_ID+ "='" + grpId.toStdString() + "' AND " + KEY_MSG_ID + "='" + msgId + "'", ""); } } @@ -1376,18 +1379,18 @@ bool RsDataService::locked_removeMessageEntries(const GxsMsgReq& msgIds) return ret; } -bool RsDataService::locked_removeGroupEntries(const std::vector& grpIds) +bool RsDataService::locked_removeGroupEntries(const std::vector& grpIds) { // start a transaction bool ret = mDb->execSQL("BEGIN;"); - std::vector::const_iterator vit = grpIds.begin(); + std::vector::const_iterator vit = grpIds.begin(); for(; vit != grpIds.end(); vit++) { const RsGxsGroupId& grpId = *vit; - mDb->sqlDelete(GRP_TABLE_NAME, KEY_GRP_ID+ "='" + grpId + "'", ""); + mDb->sqlDelete(GRP_TABLE_NAME, KEY_GRP_ID+ "='" + grpId.toStdString() + "'", ""); } ret &= mDb->execSQL("COMMIT;"); @@ -1397,7 +1400,7 @@ bool RsDataService::locked_removeGroupEntries(const std::vector& gr void RsDataService::locked_getMessageOffsets(const RsGxsGroupId& grpId, std::vector& offsets) { - RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, mMsgOffSetColumns, KEY_GRP_ID+ "='" + grpId + "'", ""); + RetroCursor* c = mDb->sqlQuery(MSG_TABLE_NAME, mMsgOffSetColumns, KEY_GRP_ID+ "='" + grpId.toStdString() + "'", ""); if(c) { diff --git a/libretroshare/src/gxs/rsdataservice.h b/libretroshare/src/gxs/rsdataservice.h index a0fab25bd..6c73bf044 100644 --- a/libretroshare/src/gxs/rsdataservice.h +++ b/libretroshare/src/gxs/rsdataservice.h @@ -73,7 +73,7 @@ public: * @param cache whether to store retrieval in mem for faster later retrieval * @return error code */ - int retrieveNxsGrps(std::map& grp, bool withMeta, bool cache); + int retrieveNxsGrps(std::map& grp, bool withMeta, bool cache); /*! * Retrieves meta data of all groups stored (most current versions only) @@ -111,7 +111,7 @@ public: * @param grpIds all grpids in store is inserted into this vector * @return error code */ - int retrieveGroupIds(std::vector &grpIds); + int retrieveGroupIds(std::vector &grpIds); /*! * @return the cache size set for this RsGeneralDataService in bytes @@ -226,7 +226,7 @@ private: * @param msgIds */ bool locked_removeMessageEntries(const GxsMsgReq& msgIds); - bool locked_removeGroupEntries(const std::vector& grpIds); + bool locked_removeGroupEntries(const std::vector& grpIds); typedef std::map > MsgUpdates; diff --git a/libretroshare/src/gxs/rsgenexchange.cc b/libretroshare/src/gxs/rsgenexchange.cc index 3047b8287..8855ade3e 100644 --- a/libretroshare/src/gxs/rsgenexchange.cc +++ b/libretroshare/src/gxs/rsgenexchange.cc @@ -1858,7 +1858,7 @@ void RsGenExchange::processGroupUpdatePublish() // get keys for group update publish // first build meta request map for groups to be updated - std::map grpMeta; + std::map grpMeta; std::vector::iterator vit = mGroupUpdatePublish.begin(); for(; vit != mGroupUpdatePublish.end(); vit++) @@ -1879,7 +1879,7 @@ void RsGenExchange::processGroupUpdatePublish() { GroupUpdatePublish& gup = *vit; const RsGxsGroupId& groupId = gup.grpItem->meta.mGroupId; - std::map::iterator mit = grpMeta.find(groupId); + std::map::iterator mit = grpMeta.find(groupId); RsGxsGrpMetaData* meta = NULL; if(mit == grpMeta.end()) @@ -1979,7 +1979,7 @@ void RsGenExchange::publishGrps() { // timed out toNotify.insert(std::make_pair( - token, GrpNote(false, ""))); + token, GrpNote(false, RsGxsGroupId()))); delete ggps.mItem; vit = mGrpsToPublish.erase(vit); @@ -2026,7 +2026,7 @@ void RsGenExchange::publishGrps() if(privKeyFound) { // get group id from private admin key id - grpItem->meta.mGroupId = grp->grpId = privAdminKey.keyId; + grpItem->meta.mGroupId = grp->grpId = RsGxsGroupId(privAdminKey.keyId); ServiceCreate_Return ret = service_CreateGroup(grpItem, privatekeySet); diff --git a/libretroshare/src/gxs/rsgxsdataaccess.h b/libretroshare/src/gxs/rsgxsdataaccess.h index 1cf439209..a78c1e3e4 100644 --- a/libretroshare/src/gxs/rsgxsdataaccess.h +++ b/libretroshare/src/gxs/rsgxsdataaccess.h @@ -164,7 +164,7 @@ public: * @param msgIds * @return false if token cannot be redeemed, if false you may have tried to redeem when not ready */ - bool getGroupList(const uint32_t &token, std::list &groupIds); + bool getGroupList(const uint32_t &token, std::list &groupIds); /*! * diff --git a/libretroshare/src/retroshare/rsgxsifacetypes.h b/libretroshare/src/retroshare/rsgxsifacetypes.h index 46d767cb9..2a4552a41 100644 --- a/libretroshare/src/retroshare/rsgxsifacetypes.h +++ b/libretroshare/src/retroshare/rsgxsifacetypes.h @@ -13,10 +13,10 @@ #include #include #include - +#include typedef GXSGroupId RsGxsGroupId; -typedef GXSMsgId RsGxsMessageId; +typedef std::string RsGxsMessageId; typedef std::map > GxsMsgIdResult; typedef std::pair RsGxsGrpMsgIdPair; @@ -102,7 +102,7 @@ public: void operator =(const RsGxsMsgMetaData& rGxsMeta); - std::string mGroupId; + RsGxsGroupId mGroupId; std::string mMsgId; std::string mThreadId; diff --git a/libretroshare/src/retroshare/rsids.h b/libretroshare/src/retroshare/rsids.h index d6d15e84d..34492d492 100644 --- a/libretroshare/src/retroshare/rsids.h +++ b/libretroshare/src/retroshare/rsids.h @@ -65,6 +65,14 @@ template c return id ; } + inline void operator=(const std::string& str) + { + t_RsGenericIdType temp = t_RsGenericIdType(str); + + for(int i = 0; i < ID_SIZE_IN_BYTES; i++) + this->bytes[i] = temp.toByteArray()[i]; + } + inline void clear() { bzero(bytes,SIZE_IN_BYTES) ; } // Converts to a std::string using cached value. diff --git a/libretroshare/src/serialiser/rsgxsupdateitems.cc b/libretroshare/src/serialiser/rsgxsupdateitems.cc index a5dcb256d..8b584e11a 100644 --- a/libretroshare/src/serialiser/rsgxsupdateitems.cc +++ b/libretroshare/src/serialiser/rsgxsupdateitems.cc @@ -426,7 +426,7 @@ uint32_t RsGxsUpdateSerialiser::sizeGxsMsgUpdate(RsGxsMsgUpdateItem* item) for(; cit != msgUpdateTS.end(); cit++) { - s += s += GetTlvStringSize(cit->first); + s += cit->first.serial_size(); s += 4; } @@ -483,7 +483,7 @@ bool RsGxsUpdateSerialiser::serialiseGxsMsgUpdate(RsGxsMsgUpdateItem* item, for(; cit != msgUpdateTS.end(); cit++) { - ok &= SetTlvString(data, *size, &offset,TLV_TYPE_STR_GROUPID,cit->first) ; + ok &= cit->first.serialise(data, *size, offset); ok &= setRawUInt32(data, *size, &offset, cit->second); } @@ -602,7 +602,7 @@ RsGxsMsgUpdateItem* RsGxsUpdateSerialiser::deserialGxsMsgUpdate(void* data, uint32_t updateTS; for(uint32_t i = 0; i < numUpdateItems; i++) { - ok &= GetTlvString(data, *size, &offset,TLV_TYPE_STR_GROUPID,pId) ; + ok &= pId.deserialise(data, *size, offset); if(!ok) break; diff --git a/libretroshare/src/serialiser/rsnxsitems.cc b/libretroshare/src/serialiser/rsnxsitems.cc index f855a57c6..0c0b3157b 100644 --- a/libretroshare/src/serialiser/rsnxsitems.cc +++ b/libretroshare/src/serialiser/rsnxsitems.cc @@ -254,7 +254,7 @@ bool RsNxsSerialiser::serialiseNxsMsg(RsNxsMsg *item, void *data, uint32_t *size ok &= setRawUInt32(data, *size, &offset, item->transactionNumber); ok &= setRawUInt8(data, *size, &offset, item->pos); ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_MSGID, item->msgId); - ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_GROUPID, item->grpId); + ok &= item->grpId.serialise(data, *size, offset); ok &= item->msg.SetTlv(data, tlvsize, &offset); ok &= item->meta.SetTlv(data, *size, &offset); @@ -305,7 +305,7 @@ bool RsNxsSerialiser::serialiseNxsGrp(RsNxsGrp *item, void *data, uint32_t *size // grp id ok &= setRawUInt32(data, *size, &offset, item->transactionNumber); ok &= setRawUInt8(data, *size, &offset, item->pos); - ok &= SetTlvString(data, tlvsize, &offset, TLV_TYPE_STR_GROUPID, item->grpId); + ok &= item->grpId.serialise(data, *size, offset); ok &= item->grp.SetTlv(data, tlvsize, &offset); ok &= item->meta.SetTlv(data, *size, &offset); @@ -574,7 +574,7 @@ RsNxsGrp* RsNxsSerialiser::deserialNxsGrp(void *data, uint32_t *size){ ok &= getRawUInt32(data, *size, &offset, &(item->transactionNumber)); ok &= getRawUInt8(data, *size, &offset, &(item->pos)); - ok &= GetTlvString(data, *size, &offset, TLV_TYPE_STR_GROUPID, item->grpId); + ok &= item->grpId.deserialise(data, *size, offset); ok &= item->grp.GetTlv(data, *size, &offset); ok &= item->meta.GetTlv(data, *size, &offset); @@ -644,7 +644,7 @@ RsNxsMsg* RsNxsSerialiser::deserialNxsMsg(void *data, uint32_t *size){ ok &= getRawUInt32(data, *size, &offset, &(item->transactionNumber)); ok &= getRawUInt8(data, *size, &offset, &(item->pos)); ok &= GetTlvString(data, *size, &offset, TLV_TYPE_STR_MSGID, item->msgId); - ok &= GetTlvString(data, *size, &offset, TLV_TYPE_STR_GROUPID, item->grpId); + ok &= item->grpId.deserialise(data, *size, offset); ok &= item->msg.GetTlv(data, *size, &offset); ok &= item->meta.GetTlv(data, *size, &offset); @@ -1031,7 +1031,7 @@ uint32_t RsNxsSerialiser::sizeNxsMsg(RsNxsMsg *item) s += 4; // transaction number s += 1; // pos - s += GetTlvStringSize(item->grpId); + s += item->grpId.serial_size(); s += GetTlvStringSize(item->msgId); s += item->msg.TlvSize(); s += item->meta.TlvSize(); @@ -1045,7 +1045,7 @@ uint32_t RsNxsSerialiser::sizeNxsGrp(RsNxsGrp *item) s += 4; // transaction number s += 1; // pos - s += GetTlvStringSize(item->grpId); + s += item->grpId.serial_size(); s += item->grp.TlvSize(); s += item->meta.TlvSize(); diff --git a/libretroshare/src/serialiser/rsnxsitems.h b/libretroshare/src/serialiser/rsnxsitems.h index 43cdf249d..501117fec 100644 --- a/libretroshare/src/serialiser/rsnxsitems.h +++ b/libretroshare/src/serialiser/rsnxsitems.h @@ -204,7 +204,7 @@ public: virtual void clear(); virtual std::ostream &print(std::ostream &out, uint16_t indent); - std::string grpId; /// group Id, needed to complete version Id (ncvi) + RsGxsGroupId grpId; /// group Id, needed to complete version Id (ncvi) static int refcount; RsTlvBinaryData grp; /// actual group data uint8_t pos; /// used for splitting up grp @@ -295,7 +295,7 @@ public: uint8_t pos; /// used for splitting up msg uint8_t count; /// number of split up messages - std::string grpId; /// group id, forms part of version id + RsGxsGroupId grpId; /// group id, forms part of version id std::string msgId; /// msg id static int refcount; diff --git a/libretroshare/src/util/retrodb.h b/libretroshare/src/util/retrodb.h index 7017de776..a428a4116 100644 --- a/libretroshare/src/util/retrodb.h +++ b/libretroshare/src/util/retrodb.h @@ -294,6 +294,13 @@ public: */ const void* getData(int columnIndex, uint32_t& datSize); + template + inline void getStringT(int columnIndex, T &str){ + std::string temp; + getString(columnIndex, temp); + str = temp; + } + private: