projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement UI and serialization logic for sender modes
[quassel.git]
/
src
/
common
/
signalproxy.h
diff --git
a/src/common/signalproxy.h
b/src/common/signalproxy.h
index
be6b804
..
77ef3a4
100644
(file)
--- a/
src/common/signalproxy.h
+++ b/
src/common/signalproxy.h
@@
-23,6
+23,10
@@
#include <QEvent>
#include <QSet>
#include <QEvent>
#include <QSet>
+#include <QThreadStorage>
+
+#include <functional>
+#include <memory>
#include "protocol.h"
#include "protocol.h"
@@
-78,10
+82,14
@@
public:
void dumpProxyStats();
void dumpSyncMap(SyncableObject *object);
void dumpProxyStats();
void dumpSyncMap(SyncableObject *object);
+ static SignalProxy *current() {
+ return _current;
+ }
+
/**@{*/
/**
* This method allows to send a signal only to a limited set of peers
/**@{*/
/**
* This method allows to send a signal only to a limited set of peers
- * @param peer
Id
s A list of peers that should receive it
+ * @param peers A list of peers that should receive it
* @param closure Code you want to execute within of that restricted environment
*/
void restrictTargetPeers(QSet<Peer*> peers, std::function<void()> closure);
* @param closure Code you want to execute within of that restricted environment
*/
void restrictTargetPeers(QSet<Peer*> peers, std::function<void()> closure);
@@
-101,7
+109,7
@@
public:
#endif
/**}@*/
#endif
/**}@*/
- inline int peerCount() const { return _peer
s
.size(); }
+ inline int peerCount() const { return _peer
Map
.size(); }
QVariantList peerData();
Peer *peerById(int peerId);
QVariantList peerData();
Peer *peerById(int peerId);
@@
-109,7
+117,14
@@
public:
/**
* @return If handling a signal, the Peer from which the current signal originates
*/
/**
* @return If handling a signal, the Peer from which the current signal originates
*/
- Peer *sourcePeer() { return _sourcePeer; }
+ Peer *sourcePeer();
+ void setSourcePeer(Peer *sourcePeer);
+
+ /**
+ * @return If sending a signal, the Peer to which the current signal is directed
+ */
+ Peer *targetPeer();
+ void setTargetPeer(Peer *targetPeer);
public slots:
void detachObject(QObject *obj);
public slots:
void detachObject(QObject *obj);
@@
-175,7
+190,6
@@
private:
static void disconnectDevice(QIODevice *dev, const QString &reason = QString());
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<int, Peer*> _peerMap;
// containg a list of argtypes for fast access
@@
-204,7
+218,10
@@
private:
QSet<Peer *> _restrictedTargets;
bool _restrictMessageTarget = false;
QSet<Peer *> _restrictedTargets;
bool _restrictMessageTarget = false;
- Peer *_sourcePeer;
+ Peer *_sourcePeer = nullptr;
+ Peer *_targetPeer = nullptr;
+
+ thread_local static SignalProxy *_current;
friend class SignalRelay;
friend class SyncableObject;
friend class SignalRelay;
friend class SyncableObject;