Added initial implementation of get statistic functions

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7455 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
chrisparker126 2014-07-16 21:40:57 +00:00
parent 6dace62abe
commit c30318f0c0
4 changed files with 110 additions and 7 deletions

View File

@ -287,14 +287,25 @@ bool RsGxsDataAccess::requestMsgInfo(uint32_t &token, uint32_t ansType,
}
void RsGxsDataAccess::requestServiceStatistic(const uint32_t& token)
void RsGxsDataAccess::requestServiceStatistic(uint32_t& token)
{
ServiceStatisticRequest* req = new ServiceStatisticRequest();
generateToken(token);
setReq(req, token, 0, RsTokReqOptions());
storeRequest(req);
}
void RsGxsDataAccess::requestGroupStatistic(const uint32_t& token, const RsGxsGroupId& grpId)
void RsGxsDataAccess::requestGroupStatistic(uint32_t& token, const RsGxsGroupId& grpId)
{
GroupStatisticRequest* req = new GroupStatisticRequest();
req->mGrpId = grpId;
generateToken(token);
setReq(req, token, 0, RsTokReqOptions());
storeRequest(req);
}
bool RsGxsDataAccess::requestMsgRelatedInfo(uint32_t &token, uint32_t ansType, const RsTokReqOptions &opts,
@ -800,6 +811,68 @@ void RsGxsDataAccess::processRequests()
return;
}
bool RsGxsDataAccess::getGroupStatistic(const uint32_t &token, GxsGroupStatistic &grpStatistic)
{
RsStackMutex stack(mDataMutex);
GxsRequest* req = locked_retrieveRequest(token);
if(req == NULL){
std::cerr << "RsGxsDataAccess::getGroupStatistic() Unable to retrieve grp stats" << std::endl;
return false;
}else if(req->status == GXS_REQUEST_V2_STATUS_COMPLETE){
GroupStatisticRequest* gsreq = dynamic_cast<GroupStatisticRequest*>(req);
if(gsreq)
{
grpStatistic = gsreq->mGroupStatistic;
locked_updateRequestStatus(token, GXS_REQUEST_V2_STATUS_DONE);
}
else{
std::cerr << "RsGxsDataAccess::getGroupStatistic() Req found, failed caste" << std::endl;
return false;
}
}else{
std::cerr << "RsGxsDataAccess::getGroupStatistic() Req not ready" << std::endl;
return false;
}
return true;
}
bool RsGxsDataAccess::getServiceStatistic(const uint32_t &token, GxsServiceStatistic &servStatistic)
{
RsStackMutex stack(mDataMutex);
GxsRequest* req = locked_retrieveRequest(token);
if(req == NULL){
std::cerr << "RsGxsDataAccess::getServiceStatistic() Unable to retrieve grp stats" << std::endl;
return false;
}else if(req->status == GXS_REQUEST_V2_STATUS_COMPLETE){
ServiceStatisticRequest* ssreq = dynamic_cast<ServiceStatisticRequest*>(req);
if(ssreq)
{
servStatistic = ssreq->mServiceStatistic;
locked_updateRequestStatus(token, GXS_REQUEST_V2_STATUS_DONE);
}
else{
std::cerr << "RsGxsDataAccess::getServiceStatistic() Req found, failed caste" << std::endl;
return false;
}
}else{
std::cerr << "RsGxsDataAccess::getServiceStatistic() Req not ready" << std::endl;
return false;
}
return true;
}
bool RsGxsDataAccess::getGroupData(GroupDataReq* req)
{

View File

@ -104,14 +104,14 @@ public:
* total size of groups
* @param token
*/
void requestServiceStatistic(const uint32_t& token);
void requestServiceStatistic(uint32_t& token);
/*!
* To request statistic on a group
* @param token set to value to be redeemed to get statistic
* @param grpId the id of the group
*/
void requestGroupStatistic(const uint32_t& token, const RsGxsGroupId& grpId);
void requestGroupStatistic(uint32_t& token, const RsGxsGroupId& grpId);
/* Poll */
@ -152,11 +152,28 @@ public:
public:
/*!
* This must be called periodically to progress requests
*/
void processRequests();
/*!
* @param token
* @param grpStatistic
* @return false if token cannot be redeemed
*/
bool getGroupStatistic(const uint32_t &token, GxsGroupStatistic& grpStatistic);
/*!
* @param token
* @param servStatistic
* @return false if token cannot be redeemed
*/
bool getServiceStatistic(const uint32_t &token, GxsServiceStatistic& servStatistic);
/*!
* Retrieve group list for a given token
* @param token request token to be redeemed

View File

@ -97,6 +97,19 @@ public:
NxsMsgDataResult mMsgData;
};
class ServiceStatisticRequest: public GxsRequest
{
public:
GxsServiceStatistic mServiceStatistic;
};
struct GroupStatisticRequest: public GxsRequest
{
public:
RsGxsGroupId mGrpId;
GxsGroupStatistic mGroupStatistic;
};
class MsgRelatedInfoReq : public GxsRequest
{

View File

@ -199,14 +199,14 @@ public:
* total size of groups
* @param token
*/
virtual void requestServiceStatistic(const uint32_t& token) = 0;
virtual void requestServiceStatistic(uint32_t& token) = 0;
/*!
* To request statistic on a group
* @param token set to value to be redeemed to get statistic
* @param grpId the id of the group
*/
virtual void requestGroupStatistic(const uint32_t& token, const RsGxsGroupId& grpId) = 0;
virtual void requestGroupStatistic(uint32_t& token, const RsGxsGroupId& grpId) = 0;
/* Cancel Request */