X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.h;h=b0933968f6fbdd51cfa4f3be042c02c487ffe650;hp=97efc2d79c6c4a77d11af0c78faf2d20691aa72d;hb=1e7b6cda464041cac334b03a8b01679b4b9a56d3;hpb=86e1dd9b1e36a422ba89c895e0aef7028941e3c4 diff --git a/src/common/signalproxy.h b/src/common/signalproxy.h index 97efc2d7..b0933968 100644 --- a/src/common/signalproxy.h +++ b/src/common/signalproxy.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -77,7 +77,13 @@ public: bool isSecure() const { return _secure; } void dumpProxyStats(); void dumpSyncMap(SyncableObject *object); + + void restrictTargetPeers(std::initializer_list peerIds, std::function closure); + inline int peerCount() const { return _peers.size(); } + QVariantList peerData(); + + Peer *peerById(int peerId); public slots: void detachObject(QObject *obj); @@ -117,6 +123,10 @@ private: void removePeer(Peer *peer); void removeAllPeers(); + int nextPeerId() { + return _lastPeerId++; + } + template void dispatch(const T &protoMessage); template @@ -140,6 +150,7 @@ private: static void disconnectDevice(QIODevice *dev, const QString &reason = QString()); QSet _peers; + QHash _peerMap; // containg a list of argtypes for fast access QHash _extendedMetaObjects; @@ -162,6 +173,11 @@ private: bool _secure; // determines if all connections are in a secured state (using ssl or internal connections) + int _lastPeerId = 0; + + QSet _restrictedTargets; + bool _restrictMessageTarget = false; + friend class SignalRelay; friend class SyncableObject; friend class Peer;