mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-27 16:39:29 -05:00
Added statistic calculation and retrieval
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7457 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
ee0c48b912
commit
da335802e2
@ -311,6 +311,7 @@ RsGxsGrpMetaData* RsDataService::locked_getGrpMeta(RetroCursor &c)
|
||||
|
||||
grpMeta->mPublishTs = c.getInt32(COL_TIME_STAMP);
|
||||
grpMeta->mGroupFlags = c.getInt32(COL_NXS_FLAGS);
|
||||
grpMeta->mGrpSize = c.getInt32(COL_NXS_FILE_LEN);
|
||||
|
||||
offset = 0;
|
||||
|
||||
@ -441,7 +442,7 @@ RsGxsMsgMetaData* RsDataService::locked_getMsgMeta(RetroCursor &c)
|
||||
offset = 0;
|
||||
data = (char*)c.getData(COL_SIGN_SET, data_len);
|
||||
msgMeta->signSet.GetTlv(data, data_len, &offset);
|
||||
|
||||
msgMeta->mMsgSize = c.getInt32(COL_NXS_FILE_LEN);
|
||||
|
||||
msgMeta->mMsgFlags = c.getInt32(COL_NXS_FLAGS);
|
||||
msgMeta->mPublishTs = c.getInt32(COL_TIME_STAMP);
|
||||
|
@ -75,6 +75,7 @@ public:
|
||||
uint32_t mMsgCount; // ???
|
||||
uint32_t mLastPost; // ???
|
||||
uint32_t mReputationCutOff;
|
||||
uint32_t mGrpSize;
|
||||
|
||||
uint32_t mGroupStatus;
|
||||
uint32_t mRecvTS;
|
||||
@ -116,6 +117,7 @@ public:
|
||||
// normally READ / UNREAD flags. LOCAL Data.
|
||||
|
||||
uint32_t mMsgStatus;
|
||||
uint32_t mMsgSize;
|
||||
time_t mChildTs;
|
||||
uint32_t recvTS;
|
||||
RsFileHash mHash;
|
||||
|
@ -1435,6 +1435,55 @@ bool RsGxsDataAccess::getMsgRelatedInfo(MsgRelatedInfoReq *req)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RsGxsDataAccess::getGroupStatistic(GroupStatisticRequest *req)
|
||||
{
|
||||
// filter based on options
|
||||
GxsMsgIdResult metaReq;
|
||||
metaReq[req->mGrpId] = std::vector<RsGxsMessageId>();
|
||||
GxsMsgMetaResult metaResult;
|
||||
mDataStore->retrieveGxsMsgMetaData(metaReq, metaResult);
|
||||
|
||||
std::vector<RsGxsMsgMetaData*>& msgMetaV = metaResult[req->mGrpId];
|
||||
|
||||
req->mGroupStatistic.mNumMsgs = msgMetaV.size();
|
||||
req->mGroupStatistic.mTotalSizeOfMsgs = 0;
|
||||
for(int i = 0; i < msgMetaV.size(); i++)
|
||||
{
|
||||
RsGxsMsgMetaData* m = msgMetaV[i];
|
||||
req->mGroupStatistic.mTotalSizeOfMsgs += m->mMsgSize + m->serial_size();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// potentially very expensive!
|
||||
bool RsGxsDataAccess::getServiceStatistic(ServiceStatisticRequest *req)
|
||||
{
|
||||
std::map<RsGxsGroupId, RsGxsGrpMetaData*> grpMeta;
|
||||
|
||||
mDataStore->retrieveGxsGrpMetaData(grpMeta);
|
||||
|
||||
std::map<RsGxsGroupId, RsGxsGrpMetaData*>::iterator mit = grpMeta.begin();
|
||||
|
||||
req->mServiceStatistic.mNumGrps = grpMeta.size();
|
||||
req->mServiceStatistic.mSizeOfGrps = 0;
|
||||
req->mServiceStatistic.mSizeOfMsgs = 0;
|
||||
|
||||
for(; mit != grpMeta.end(); mit++)
|
||||
{
|
||||
RsGxsGrpMetaData* m = mit->second;
|
||||
req->mServiceStatistic.mSizeOfGrps += m->mGrpSize + m->serial_size();
|
||||
GroupStatisticRequest gr;
|
||||
gr.mGrpId = m->mGroupId;
|
||||
getGroupStatistic(&gr);
|
||||
req->mServiceStatistic.mNumMsgs += gr.mGroupStatistic.mNumMsgs;
|
||||
req->mServiceStatistic.mSizeOfMsgs += gr.mGroupStatistic.mTotalSizeOfMsgs;
|
||||
}
|
||||
|
||||
req->mServiceStatistic.mSizeStore = req->mServiceStatistic.mSizeOfGrps + req->mServiceStatistic.mSizeOfMsgs;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RsGxsDataAccess::getMsgList(MsgIdReq* req)
|
||||
{
|
||||
|
||||
|
@ -399,12 +399,26 @@ private:
|
||||
|
||||
/*!
|
||||
* Attempts to retrieve messages related to msgIds of associated equest
|
||||
* @param token request token to be redeemed
|
||||
* @param msgIds
|
||||
* @param req Request object to satisfy
|
||||
* @return false if data cannot be found for token
|
||||
*/
|
||||
bool getMsgRelatedInfo(MsgRelatedInfoReq* req);
|
||||
|
||||
|
||||
/*!
|
||||
*
|
||||
* Attempts to retrieve group statistic
|
||||
* @param req Request object to satisfy
|
||||
*/
|
||||
bool getGroupStatistic(GroupStatisticRequest* req);
|
||||
|
||||
/*!
|
||||
*
|
||||
* Attempts to service statistic
|
||||
* @param req request object to satisfy
|
||||
*/
|
||||
bool getServiceStatistic(ServiceStatisticRequest* req);
|
||||
|
||||
/*!
|
||||
* This filter msgs based of options supplied (at the moment just status masks)
|
||||
* @param msgIds The msgsIds to filter
|
||||
|
Loading…
Reference in New Issue
Block a user