projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement peer-specific signal sending
[quassel.git]
/
src
/
common
/
signalproxy.h
diff --git
a/src/common/signalproxy.h
b/src/common/signalproxy.h
index
973ce70
..
b093396
100644
(file)
--- a/
src/common/signalproxy.h
+++ b/
src/common/signalproxy.h
@@
-1,5
+1,5
@@
/***************************************************************************
/***************************************************************************
- * Copyright (C) 2005-201
4
by the Quassel Project *
+ * Copyright (C) 2005-201
6
by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@
-27,6
+27,7
@@
#include "protocol.h"
struct QMetaObject;
#include "protocol.h"
struct QMetaObject;
+class QIODevice;
class Peer;
class SyncableObject;
class Peer;
class SyncableObject;
@@
-76,7
+77,13
@@
public:
bool isSecure() const { return _secure; }
void dumpProxyStats();
void dumpSyncMap(SyncableObject *object);
bool isSecure() const { return _secure; }
void dumpProxyStats();
void dumpSyncMap(SyncableObject *object);
+
+ void restrictTargetPeers(std::initializer_list<Peer *> peerIds, std::function<void()> closure);
+
inline int peerCount() const { return _peers.size(); }
inline int peerCount() const { return _peers.size(); }
+ QVariantList peerData();
+
+ Peer *peerById(int peerId);
public slots:
void detachObject(QObject *obj);
public slots:
void detachObject(QObject *obj);
@@
-116,6
+123,10
@@
private:
void removePeer(Peer *peer);
void removeAllPeers();
void removePeer(Peer *peer);
void removeAllPeers();
+ int nextPeerId() {
+ return _lastPeerId++;
+ }
+
template<class T>
void dispatch(const T &protoMessage);
template<class T>
template<class T>
void dispatch(const T &protoMessage);
template<class T>
@@
-139,6
+150,7
@@
private:
static void disconnectDevice(QIODevice *dev, const QString &reason = QString());
QSet<Peer *> _peers;
static void disconnectDevice(QIODevice *dev, const QString &reason = QString());
QSet<Peer *> _peers;
+ QHash<int, Peer*> _peerMap;
// containg a list of argtypes for fast access
QHash<const QMetaObject *, ExtendedMetaObject *> _extendedMetaObjects;
// containg a list of argtypes for fast access
QHash<const QMetaObject *, ExtendedMetaObject *> _extendedMetaObjects;
@@
-161,6
+173,11
@@
private:
bool _secure; // determines if all connections are in a secured state (using ssl or internal connections)
bool _secure; // determines if all connections are in a secured state (using ssl or internal connections)
+ int _lastPeerId = 0;
+
+ QSet<Peer *> _restrictedTargets;
+ bool _restrictMessageTarget = false;
+
friend class SignalRelay;
friend class SyncableObject;
friend class Peer;
friend class SignalRelay;
friend class SyncableObject;
friend class Peer;