mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-08-07 22:02:32 -04:00
Implemented helper class RsGxsIfaceImpl
Added calling of service_tick in RsGenExchange git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5681 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
57407fb8ae
commit
fed6507320
4 changed files with 129 additions and 37 deletions
|
@ -78,6 +78,8 @@ void RsGenExchange::tick()
|
||||||
mNotifications.clear();
|
mNotifications.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// implemented service tick function
|
||||||
|
service_tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RsGenExchange::acknowledgeTokenMsg(const uint32_t& token,
|
bool RsGenExchange::acknowledgeTokenMsg(const uint32_t& token,
|
||||||
|
|
|
@ -112,7 +112,7 @@ public:
|
||||||
*/
|
*/
|
||||||
RsTokenService* getTokenService();
|
RsTokenService* getTokenService();
|
||||||
|
|
||||||
protected:
|
public:
|
||||||
|
|
||||||
/** data access functions **/
|
/** data access functions **/
|
||||||
|
|
||||||
|
@ -146,6 +146,17 @@ protected:
|
||||||
*/
|
*/
|
||||||
bool getMsgMeta(const uint32_t &token, GxsMsgMetaMap &msgInfo);
|
bool getMsgMeta(const uint32_t &token, GxsMsgMetaMap &msgInfo);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @param grpItem
|
||||||
|
* @deprecated only here to temporarily to testing
|
||||||
|
*/
|
||||||
|
void createDummyGroup(RsGxsGrpItem* grpItem);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* retrieves group data associated to a request token
|
* retrieves group data associated to a request token
|
||||||
* @param token token to be redeemed for grpitem retrieval
|
* @param token token to be redeemed for grpitem retrieval
|
||||||
|
@ -160,15 +171,6 @@ protected:
|
||||||
*/
|
*/
|
||||||
bool getMsgData(const uint32_t &token, GxsMsgDataMap& msgItems);
|
bool getMsgData(const uint32_t &token, GxsMsgDataMap& msgItems);
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* @param grpItem
|
|
||||||
* @deprecated only here to temporarily to testing
|
|
||||||
*/
|
|
||||||
void createDummyGroup(RsGxsGrpItem* grpItem);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Assigns a token value to passed integer
|
* Assigns a token value to passed integer
|
||||||
* The status of the token can still be queried from request status feature
|
* The status of the token can still be queried from request status feature
|
||||||
|
@ -248,6 +250,8 @@ protected:
|
||||||
*/
|
*/
|
||||||
void publishMsg(uint32_t& token, RsGxsMsgItem* msgItem);
|
void publishMsg(uint32_t& token, RsGxsMsgItem* msgItem);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* sets the group subscribe flag
|
* sets the group subscribe flag
|
||||||
* @param token this is set to token value associated to this request
|
* @param token this is set to token value associated to this request
|
||||||
|
|
|
@ -1,23 +1,78 @@
|
||||||
#include "rsgxsifaceimpl.h"
|
#include "rsgxsifaceimpl.h"
|
||||||
#include "gxs/rsgxs.h"
|
#include "gxs/rsgxs.h"
|
||||||
|
#include "gxs/rsgxsflags.h"
|
||||||
|
|
||||||
RsGxsIfaceImpl::RsGxsIfaceImpl(RsGenExchange *gxs)
|
RsGxsIfaceImpl::RsGxsIfaceImpl(RsGenExchange *gxs)
|
||||||
: mGxs(gxs)
|
: mGxsIfaceMutex("RsGxsIfaceImpl"), mGxs(gxs)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void RsGxsIfaceImpl::groupsChanged(std::list<RsGxsGroupId>& grpIds)
|
void RsGxsIfaceImpl::groupsChanged(std::list<RsGxsGroupId> &grpIds)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(mGxsIfaceMutex);
|
||||||
|
|
||||||
|
while(!mGroupChange.empty())
|
||||||
|
{
|
||||||
|
RsGxsGroupChange* gc = mGroupChange.back();
|
||||||
|
std::list<RsGxsGroupId>& gList = gc->grpIdList;
|
||||||
|
std::list<RsGxsGroupId>::iterator lit = gList.begin();
|
||||||
|
for(; lit != gList.end(); lit++)
|
||||||
|
grpIds.push_back(*lit);
|
||||||
|
|
||||||
|
mGroupChange.pop_back();
|
||||||
|
delete gc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RsGxsIfaceImpl::updated()
|
||||||
|
{
|
||||||
|
RsStackMutex stack(mGxsIfaceMutex);
|
||||||
|
|
||||||
void RsGxsIfaceImpl::msgsChanged(std::map<RsGxsGroupId,
|
bool changed = (!mGroupChange.empty() || !mMsgChange.empty());
|
||||||
std::vector<RsGxsMessageId> >& msgs)
|
|
||||||
|
return changed;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RsGxsIfaceImpl::msgsChanged(std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > &msgs)
|
||||||
|
{
|
||||||
|
RsStackMutex stack(mGxsIfaceMutex);
|
||||||
|
|
||||||
|
while(!mMsgChange.empty())
|
||||||
|
{
|
||||||
|
RsGxsMsgChange* mc = mMsgChange.back();
|
||||||
|
msgs = mc->msgChangeMap;
|
||||||
|
mMsgChange.pop_back();
|
||||||
|
delete mc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RsGxsIfaceImpl::receiveChanges(std::vector<RsGxsNotify *> &changes)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
RsStackMutex stack(mGxsIfaceMutex);
|
||||||
|
|
||||||
|
std::vector<RsGxsNotify*>::iterator vit = changes.begin();
|
||||||
|
|
||||||
|
for(; vit != changes.end(); vit++)
|
||||||
|
{
|
||||||
|
RsGxsNotify* n = *vit;
|
||||||
|
RsGxsGroupChange* gc;
|
||||||
|
RsGxsMsgChange* mc;
|
||||||
|
if((mc = dynamic_cast<RsGxsMsgChange*>(n)) != NULL)
|
||||||
|
{
|
||||||
|
mMsgChange.push_back(mc);
|
||||||
|
}
|
||||||
|
else if((gc = dynamic_cast<RsGxsGroupChange*>(n)) != NULL)
|
||||||
|
{
|
||||||
|
mGroupChange.push_back(gc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
delete n;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RsTokenService* RsGxsIfaceImpl::getTokenService()
|
RsTokenService* RsGxsIfaceImpl::getTokenService()
|
||||||
|
@ -29,14 +84,14 @@ bool RsGxsIfaceImpl::getGroupList(const uint32_t &token,
|
||||||
std::list<RsGxsGroupId> &groupIds)
|
std::list<RsGxsGroupId> &groupIds)
|
||||||
{
|
{
|
||||||
|
|
||||||
return false;
|
return mGxs->getGroupList(token, groupIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RsGxsIfaceImpl::getMsgList(const uint32_t &token,
|
bool RsGxsIfaceImpl::getMsgList(const uint32_t &token,
|
||||||
GxsMsgIdResult& msgIds)
|
GxsMsgIdResult& msgIds)
|
||||||
{
|
{
|
||||||
|
|
||||||
return false;
|
return mGxs->getMsgList(token, msgIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generic Summary */
|
/* Generic Summary */
|
||||||
|
@ -44,31 +99,34 @@ bool RsGxsIfaceImpl::getGroupSummary(const uint32_t &token,
|
||||||
std::list<RsGroupMetaData> &groupInfo)
|
std::list<RsGroupMetaData> &groupInfo)
|
||||||
{
|
{
|
||||||
|
|
||||||
return false;
|
return mGxs->getGroupMeta(token, groupInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RsGxsIfaceImpl::getMsgSummary(const uint32_t &token,
|
bool RsGxsIfaceImpl::getMsgSummary(const uint32_t &token,
|
||||||
GxsMsgMetaMap &msgInfo)
|
GxsMsgMetaMap &msgInfo)
|
||||||
{
|
{
|
||||||
|
|
||||||
return false;
|
return mGxs->getMsgMeta(token, msgInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RsGxsIfaceImpl::subscribeToAlbum(uint32_t& token, const RsGxsGroupId& grpId, bool subscribe)
|
bool RsGxsIfaceImpl::subscribeToGroup(uint32_t& token, const RsGxsGroupId& grpId, bool subscribe)
|
||||||
{
|
{
|
||||||
|
if(subscribe)
|
||||||
|
mGxs->setGroupSubscribeFlag(token, grpId, GXS_SERV::GROUP_SUBSCRIBE_SUBSCRIBED);
|
||||||
|
else
|
||||||
|
mGxs->setGroupSubscribeFlag(token, grpId, ~GXS_SERV::GROUP_SUBSCRIBE_MASK);
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool RsGxsIfaceImpl::acknowledgeMsg(const uint32_t& token, std::pair<RsGxsGroupId, RsGxsMessageId>& msgId)
|
bool RsGxsIfaceImpl::acknowledgeMsg(const uint32_t& token, std::pair<RsGxsGroupId, RsGxsMessageId>& msgId)
|
||||||
{
|
{
|
||||||
|
|
||||||
return false;
|
return mGxs->acknowledgeTokenMsg(token, msgId);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RsGxsIfaceImpl::acknowledgeGrp(const uint32_t& token, RsGxsGroupId& grpId)
|
bool RsGxsIfaceImpl::acknowledgeGrp(const uint32_t& token, RsGxsGroupId& grpId)
|
||||||
{
|
{
|
||||||
return false;
|
return mGxs->acknowledgeTokenGrp(token, grpId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,43 +5,68 @@
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* The simple idea of this class is to implement the simple interface functions
|
* The simple idea of this class is to implement the simple interface functions
|
||||||
* of gen exchange
|
* of gen exchange.
|
||||||
|
* This class provides convenience implementations of:
|
||||||
|
* - Handle msg and group changes (client class must pass changes sent by RsGenExchange to it)
|
||||||
|
* - subscription to groups
|
||||||
|
* - retrieval of msgs and group ids and meta info
|
||||||
*/
|
*/
|
||||||
class RsGxsIfaceImpl
|
class RsGxsIfaceImpl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/*!
|
||||||
|
*
|
||||||
|
* @param gxs handle to RsGenExchange instance of service (Usually the service class itself)
|
||||||
|
*/
|
||||||
RsGxsIfaceImpl(RsGenExchange* gxs);
|
RsGxsIfaceImpl(RsGenExchange* gxs);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Gxs services should call this for automatic handling of
|
||||||
|
* changes, send
|
||||||
|
* @param changes
|
||||||
|
*/
|
||||||
|
void receiveChanges(std::vector<RsGxsNotify*>& changes);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @return true if a change has occured
|
* Checks to see if a change has been received for
|
||||||
|
* for a message or group
|
||||||
|
* @return true if a change has occured for msg or group
|
||||||
*/
|
*/
|
||||||
bool updated();
|
virtual bool updated();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/** Requests **/
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*
|
* The groups changed. \n
|
||||||
|
* class can reimplement to use to tailor
|
||||||
|
* the group actually set for ui notification.
|
||||||
|
* If receivedChanges is not passed RsGxsNotify changes
|
||||||
|
* this function does nothing
|
||||||
* @param grpIds
|
* @param grpIds
|
||||||
*/
|
*/
|
||||||
void groupsChanged(std::list<RsGxsGroupId>& grpIds);
|
virtual void groupsChanged(std::list<RsGxsGroupId>& grpIds);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*
|
* The msg changed. \n
|
||||||
|
* class can reimplement to use to tailor
|
||||||
|
* the msg actually set for ui notification.
|
||||||
|
* If receivedChanges is not passed RsGxsNotify changes
|
||||||
|
* this function does nothing
|
||||||
* @param msgs
|
* @param msgs
|
||||||
*/
|
*/
|
||||||
void msgsChanged(std::map<RsGxsGroupId,
|
virtual void msgsChanged(std::map<RsGxsGroupId,
|
||||||
std::vector<RsGxsMessageId> >& msgs);
|
std::vector<RsGxsMessageId> >& msgs);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @return handle to token service for this GXS service
|
||||||
|
*/
|
||||||
RsTokenService* getTokenService();
|
RsTokenService* getTokenService();
|
||||||
|
|
||||||
/* Generic Lists */
|
/* Generic Lists */
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*
|
* Retrieve list of group ids associated to a request token
|
||||||
* @param token token to be redeemed for this request
|
* @param token token to be redeemed for this request
|
||||||
* @param groupIds the ids return for given request token
|
* @param groupIds the ids return for given request token
|
||||||
* @return false if request token is invalid, check token status for error report
|
* @return false if request token is invalid, check token status for error report
|
||||||
|
@ -50,6 +75,7 @@ public:
|
||||||
std::list<RsGxsGroupId> &groupIds);
|
std::list<RsGxsGroupId> &groupIds);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
* Retrieves list of msg ids associated to a request token
|
||||||
* @param token token to be redeemed for this request
|
* @param token token to be redeemed for this request
|
||||||
* @param msgIds the ids return for given request token
|
* @param msgIds the ids return for given request token
|
||||||
* @return false if request token is invalid, check token status for error report
|
* @return false if request token is invalid, check token status for error report
|
||||||
|
@ -57,8 +83,6 @@ public:
|
||||||
bool getMsgList(const uint32_t &token,
|
bool getMsgList(const uint32_t &token,
|
||||||
GxsMsgIdResult& msgIds);
|
GxsMsgIdResult& msgIds);
|
||||||
|
|
||||||
/* Generic Summary */
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @param token token to be redeemed for group summary request
|
* @param token token to be redeemed for group summary request
|
||||||
* @param groupInfo the ids returned for given request token
|
* @param groupInfo the ids returned for given request token
|
||||||
|
@ -81,7 +105,7 @@ public:
|
||||||
* @param token token to redeem for acknowledgement
|
* @param token token to redeem for acknowledgement
|
||||||
* @param grpId the id of the group to subscribe to
|
* @param grpId the id of the group to subscribe to
|
||||||
*/
|
*/
|
||||||
virtual bool subscribeToAlbum(uint32_t& token, const RsGxsGroupId& grpId, bool subscribe);
|
virtual bool subscribeToGroup(uint32_t& token, const RsGxsGroupId& grpId, bool subscribe);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* This allows the client service to acknowledge that their msgs has
|
* This allows the client service to acknowledge that their msgs has
|
||||||
|
@ -102,10 +126,14 @@ public:
|
||||||
bool acknowledgeGrp(const uint32_t& token, RsGxsGroupId& grpId);
|
bool acknowledgeGrp(const uint32_t& token, RsGxsGroupId& grpId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
RsGenExchange* mGxs;
|
RsGenExchange* mGxs;
|
||||||
|
|
||||||
|
std::vector<RsGxsGroupChange*> mGroupChange;
|
||||||
|
std::vector<RsGxsMsgChange*> mMsgChange;
|
||||||
|
|
||||||
|
RsMutex mGxsIfaceMutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // RSGXSIFACEIMPL_H
|
#endif // RSGXSIFACEIMPL_H
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue