Added update broadcast component, works, but don't use yet, will change

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6017 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
chrisparker126 2012-12-18 22:25:00 +00:00
parent e2ad5b6cb6
commit 470b3df7c2
2 changed files with 77 additions and 0 deletions

View File

@ -0,0 +1,44 @@
#include <QTimer>
#include "RsGxsUpdateBroadcast.h"
RsGxsUpdateBroadcast::RsGxsUpdateBroadcast(RsGxsIfaceImpl *ifaceImpl, float dt, QObject *parent) :
QObject(parent), mIfaceImpl(ifaceImpl), mDt(dt)
{
}
void RsGxsUpdateBroadcast::startMonitor()
{
slowPoll();
}
void RsGxsUpdateBroadcast::fastPoll()
{
}
void RsGxsUpdateBroadcast::slowPoll()
{
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > msgs;
std::list<RsGxsGroupId> grps;
if(mIfaceImpl->updated())
{
mIfaceImpl->msgsChanged(msgs);
if(!msgs.empty())
{
emit msgsChanged(msgs);
}
mIfaceImpl->groupsChanged(grps);
if(!grps.empty())
{
emit grpsChanged(grps);
}
QTimer::singleShot((int) (mDt * 1000.0), this, SLOT(slowPoll()));
}
}

View File

@ -0,0 +1,33 @@
#ifndef RSGXSUPDATEBROADCAST_H
#define RSGXSUPDATEBROADCAST_H
#include <QObject>
#include <gxs/rsgxsifaceimpl.h>
class RsGxsUpdateBroadcast : public QObject
{
Q_OBJECT
public:
explicit RsGxsUpdateBroadcast(RsGxsIfaceImpl* ifaceImpl, float dt, QObject *parent = 0);
void startMonitor();
void update();
signals:
void msgsChanged(const std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > & msgIds);
void grpsChanged(const std::list<RsGxsGroupId>& grpIds);
public slots:
void fastPoll();
void slowPoll();
private:
RsGxsIfaceImpl* mIfaceImpl;
float mDt;
};
#endif // RSGXSUPDATEBROADCAST_H