mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-23 22:01:05 -05:00
RsGxsNetService trigger pulling on group subscribe
This commit is contained in:
parent
6295e91304
commit
fc404bd5d8
@ -1021,32 +1021,32 @@ void RsGxsNetService::locked_resetClientTS(const RsGxsGroupId& grpId)
|
||||
it->second.msgUpdateInfos.erase(grpId) ;
|
||||
}
|
||||
|
||||
void RsGxsNetService::subscribeStatusChanged(const RsGxsGroupId& grpId,bool subscribed)
|
||||
void RsGxsNetService::subscribeStatusChanged(
|
||||
const RsGxsGroupId& grpId, bool subscribed )
|
||||
{
|
||||
RS_STACK_MUTEX(mNxsMutex) ;
|
||||
|
||||
if(!subscribed)
|
||||
return ;
|
||||
if(!subscribed) return;
|
||||
|
||||
// When we subscribe, we reset the time stamps, so that the entire group list
|
||||
// gets requested once again, for a proper update.
|
||||
|
||||
RS_STACK_MUTEX(mNxsMutex);
|
||||
|
||||
#ifdef NXS_NET_DEBUG_0
|
||||
GXSNETDEBUG__G(grpId) << "Changing subscribe status for grp " << grpId << " to " << subscribed << ": reseting all server msg time stamps for this group, and server global TS." << std::endl;
|
||||
std::map<RsGxsGroupId,RsGxsServerMsgUpdate>::iterator it = mServerMsgUpdateMap.find(grpId) ;
|
||||
RS_DBG( "Changing subscribe status for grp", grpId, " to ", subscribed,
|
||||
": reseting all server msg time stamps for this group, and "
|
||||
"server global TS." );
|
||||
#endif
|
||||
|
||||
RsGxsServerMsgUpdate& item(mServerMsgUpdateMap[grpId]) ;
|
||||
RsGxsServerMsgUpdate& item(mServerMsgUpdateMap[grpId]);
|
||||
item.msgUpdateTS = static_cast<uint32_t>(time(nullptr));
|
||||
|
||||
item.msgUpdateTS = time(NULL) ;
|
||||
/* We also update mGrpServerUpdateItem so as to trigger a new grp list
|
||||
* exchange with friends (friends will send their known ClientTS which
|
||||
* will be lower than our own grpUpdateTS, triggering our sending of the
|
||||
* new subscribed grp list. */
|
||||
mGrpServerUpdate.grpUpdateTS = static_cast<uint32_t>(time(nullptr));
|
||||
|
||||
// We also update mGrpServerUpdateItem so as to trigger a new grp list exchange with friends (friends will send their known ClientTS which
|
||||
// will be lower than our own grpUpdateTS, triggering our sending of the new subscribed grp list.
|
||||
|
||||
mGrpServerUpdate.grpUpdateTS = time(NULL) ;
|
||||
|
||||
if(subscribed)
|
||||
locked_resetClientTS(grpId) ;
|
||||
locked_resetClientTS(grpId);
|
||||
}
|
||||
|
||||
bool RsGxsNetService::fragmentMsg(RsNxsMsg& msg, MsgFragments& msgFragments) const
|
||||
|
@ -900,10 +900,19 @@ bool p3GxsForums::markRead(const RsGxsGrpMsgIdPair& msgId, bool read)
|
||||
bool p3GxsForums::subscribeToForum(const RsGxsGroupId& groupId, bool subscribe )
|
||||
{
|
||||
uint32_t token;
|
||||
if( !RsGenExchange::subscribeToGroup(token, groupId, subscribe) || waitToken(token) != RsTokenService::COMPLETE ) return false;
|
||||
if( !RsGenExchange::subscribeToGroup(token, groupId, subscribe) ||
|
||||
waitToken(token) != RsTokenService::COMPLETE ) return false;
|
||||
|
||||
RsGxsGroupId grp;
|
||||
acknowledgeGrp(token,grp);
|
||||
RsGxsGroupId grp;
|
||||
acknowledgeGrp(token, grp);
|
||||
|
||||
/* Since subscribe has been requested, the caller is most probably
|
||||
* interested in getting the group messages ASAP so pull from peers without
|
||||
* waiting GXS sync timer.
|
||||
* Do it here as this is meaningful or not depending on the service.
|
||||
* Do it only after the token has been completed otherwise the pull have no
|
||||
* effect. */
|
||||
if(subscribe) RsGenExchange::netService()->pullFromPeers();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user