mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-08-14 00:55:46 -04:00
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
This commit is contained in:
parent
80b73d2bc5
commit
2aed4ac047
10 changed files with 94 additions and 76 deletions
|
@ -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<RsGxsGroupId>(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<RsGxsGroupId>(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<RsNxsMsg *, RsGxsMsgMetaData *> &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<RsNxsMsg *, RsGxsMsgMetaData *> &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<RsNxsGrp *, RsGxsGrpMetaData *> &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<RsNxsGrp *, RsGxsGrpMetaData *> &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<RsNxsGrp *, RsGxsGrpMetaData *> &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<RsNxsGrp *, RsGxsGrpMetaData *> &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<RsNxsGrp *, RsGxsGrpMetaData *> &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<RsNxsGrp *, RsGxsGrpMetaData *> &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<std::string, RsNxsGrp *> &grp, bool withMeta, bool cache){
|
||||
int RsDataService::retrieveNxsGrps(std::map<RsGxsGroupId, RsNxsGrp *> &grp, bool withMeta, bool cache){
|
||||
|
||||
if(grp.empty()){
|
||||
|
||||
|
@ -792,14 +795,14 @@ int RsDataService::retrieveNxsGrps(std::map<std::string, RsNxsGrp *> &grp, bool
|
|||
}else{
|
||||
|
||||
RsStackMutex stack(mDbMutex);
|
||||
std::map<std::string, RsNxsGrp *>::iterator mit = grp.begin();
|
||||
std::map<RsGxsGroupId, RsNxsGrp *>::iterator mit = grp.begin();
|
||||
|
||||
std::list<std::string> toRemove;
|
||||
std::list<RsGxsGroupId> 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<std::string, RsNxsGrp *> &grp, bool
|
|||
}
|
||||
}
|
||||
|
||||
std::list<std::string>::iterator grpIdIt;
|
||||
std::list<RsGxsGroupId>::iterator grpIdIt;
|
||||
for (grpIdIt = toRemove.begin(); grpIdIt != toRemove.end(); ++grpIdIt)
|
||||
{
|
||||
grp.erase(*grpIdIt);
|
||||
|
@ -828,7 +831,7 @@ int RsDataService::retrieveNxsGrps(std::map<std::string, RsNxsGrp *> &grp, bool
|
|||
if(withMeta && !grp.empty())
|
||||
{
|
||||
std::map<RsGxsGroupId, RsGxsGrpMetaData*> metaMap;
|
||||
std::map<std::string, RsNxsGrp *>::iterator mit = grp.begin();
|
||||
std::map<RsGxsGroupId, RsNxsGrp *>::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<std::string>& 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<RsGxsMessageId>& msgIdV = mit->second;
|
||||
std::vector<RsGxsMsgMetaData*> 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::map<RsGxsGroupId, RsGxsGrpMetaDat
|
|||
for(; mit != grp.end(); mit++)
|
||||
{
|
||||
const RsGxsGroupId& grpId = mit->first;
|
||||
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<std::string, RsNxsGrp*> grps;
|
||||
std::map<RsGxsGroupId, RsNxsGrp*> grps;
|
||||
|
||||
retrieveNxsGrps(grps, false, false);
|
||||
std::map<std::string, RsNxsGrp*>::iterator mit
|
||||
std::map<RsGxsGroupId, RsNxsGrp*>::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<MsgOffset> 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<char> dataBuff, newBuffer;
|
||||
|
||||
|
@ -1276,7 +1279,7 @@ int RsDataService::removeMsgs(const GxsMsgReq& msgIds)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int RsDataService::removeGroups(const std::vector<std::string> &grpIds)
|
||||
int RsDataService::removeGroups(const std::vector<RsGxsGroupId> &grpIds)
|
||||
{
|
||||
|
||||
RsStackMutex stack(mDbMutex);
|
||||
|
@ -1285,10 +1288,10 @@ int RsDataService::removeGroups(const std::vector<std::string> &grpIds)
|
|||
// first remove file then remove group
|
||||
// from db
|
||||
|
||||
std::vector<std::string>::const_iterator vit = grpIds.begin();
|
||||
std::vector<RsGxsGroupId>::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<std::string> &grpIds)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int RsDataService::retrieveGroupIds(std::vector<std::string> &grpIds)
|
||||
int RsDataService::retrieveGroupIds(std::vector<RsGxsGroupId> &grpIds)
|
||||
{
|
||||
RsStackMutex stack(mDbMutex);
|
||||
|
||||
|
@ -1311,7 +1314,7 @@ int RsDataService::retrieveGroupIds(std::vector<std::string> &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<std::string>& grpIds)
|
||||
bool RsDataService::locked_removeGroupEntries(const std::vector<RsGxsGroupId>& grpIds)
|
||||
{
|
||||
// start a transaction
|
||||
bool ret = mDb->execSQL("BEGIN;");
|
||||
|
||||
std::vector<std::string>::const_iterator vit = grpIds.begin();
|
||||
std::vector<RsGxsGroupId>::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<std::string>& gr
|
|||
void RsDataService::locked_getMessageOffsets(const RsGxsGroupId& grpId, std::vector<MsgOffset>& 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)
|
||||
{
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
* @param cache whether to store retrieval in mem for faster later retrieval
|
||||
* @return error code
|
||||
*/
|
||||
int retrieveNxsGrps(std::map<std::string, RsNxsGrp*>& grp, bool withMeta, bool cache);
|
||||
int retrieveNxsGrps(std::map<RsGxsGroupId, RsNxsGrp*>& 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<std::string> &grpIds);
|
||||
int retrieveGroupIds(std::vector<RsGxsGroupId> &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<std::string>& grpIds);
|
||||
bool locked_removeGroupEntries(const std::vector<RsGxsGroupId>& grpIds);
|
||||
|
||||
typedef std::map<RsGxsGroupId, std::vector<MsgUpdate> > MsgUpdates;
|
||||
|
||||
|
|
|
@ -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<std::string, RsGxsGrpMetaData*> grpMeta;
|
||||
std::map<RsGxsGroupId, RsGxsGrpMetaData*> grpMeta;
|
||||
std::vector<GroupUpdatePublish>::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<std::string, RsGxsGrpMetaData*>::iterator mit = grpMeta.find(groupId);
|
||||
std::map<RsGxsGroupId, RsGxsGrpMetaData*>::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);
|
||||
|
||||
|
|
|
@ -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<std::string> &groupIds);
|
||||
bool getGroupList(const uint32_t &token, std::list<RsGxsGroupId> &groupIds);
|
||||
|
||||
/*!
|
||||
*
|
||||
|
|
|
@ -13,10 +13,10 @@
|
|||
#include <string>
|
||||
#include <inttypes.h>
|
||||
#include <retroshare/rstypes.h>
|
||||
|
||||
#include <retroshare/rsids.h>
|
||||
|
||||
typedef GXSGroupId RsGxsGroupId;
|
||||
typedef GXSMsgId RsGxsMessageId;
|
||||
typedef std::string RsGxsMessageId;
|
||||
|
||||
typedef std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > GxsMsgIdResult;
|
||||
typedef std::pair<RsGxsGroupId, RsGxsMessageId> RsGxsGrpMsgIdPair;
|
||||
|
@ -102,7 +102,7 @@ public:
|
|||
void operator =(const RsGxsMsgMetaData& rGxsMeta);
|
||||
|
||||
|
||||
std::string mGroupId;
|
||||
RsGxsGroupId mGroupId;
|
||||
std::string mMsgId;
|
||||
|
||||
std::string mThreadId;
|
||||
|
|
|
@ -65,6 +65,14 @@ template<uint32_t ID_SIZE_IN_BYTES,bool UPPER_CASE,uint32_t UNIQUE_IDENTIFIER> c
|
|||
return id ;
|
||||
}
|
||||
|
||||
inline void operator=(const std::string& str)
|
||||
{
|
||||
t_RsGenericIdType<ID_SIZE_IN_BYTES,UPPER_CASE,UNIQUE_IDENTIFIER> temp = t_RsGenericIdType<ID_SIZE_IN_BYTES,UPPER_CASE,UNIQUE_IDENTIFIER>(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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -294,6 +294,13 @@ public:
|
|||
*/
|
||||
const void* getData(int columnIndex, uint32_t& datSize);
|
||||
|
||||
template <class T>
|
||||
inline void getStringT(int columnIndex, T &str){
|
||||
std::string temp;
|
||||
getString(columnIndex, temp);
|
||||
str = temp;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue