X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.h;h=a94861713387f5dc2435b7f8c49ef7c59df473b5;hp=77ef3a46731050256f8f4a5a23d2ee2956b5ffdf;hb=158443f71d48215eea8b47b836b61afd77654b78;hpb=53861faa5551606eea31588b65ba501b24fb2e1a diff --git a/src/common/signalproxy.h b/src/common/signalproxy.h index 77ef3a46..a9486171 100644 --- a/src/common/signalproxy.h +++ b/src/common/signalproxy.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,15 +18,15 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef SIGNALPROXY_H -#define SIGNALPROXY_H +#pragma once + +#include "common-export.h" #include #include -#include #include -#include +#include #include "protocol.h" @@ -36,7 +36,7 @@ class QIODevice; class Peer; class SyncableObject; -class SignalProxy : public QObject +class COMMON_EXPORT SignalProxy : public QObject { Q_OBJECT @@ -54,7 +54,7 @@ public: SignalProxy(QObject *parent); SignalProxy(ProxyMode mode, QObject *parent); - virtual ~SignalProxy(); + ~SignalProxy() override; void setProxyMode(ProxyMode mode); inline ProxyMode proxyMode() const { return _proxyMode; } @@ -82,9 +82,7 @@ public: void dumpProxyStats(); void dumpSyncMap(SyncableObject *object); - static SignalProxy *current() { - return _current; - } + static SignalProxy *current(); /**@{*/ /** @@ -100,12 +98,10 @@ public: } //A better version, but only implemented on Qt5 if Initializer Lists exist -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) #ifdef Q_COMPILER_INITIALIZER_LISTS void restrictTargetPeers(std::initializer_list peers, std::function closure) { restrictTargetPeers(QSet(peers), std::move(closure)); } -#endif #endif /**}@*/ @@ -132,7 +128,7 @@ public slots: void detachSlots(QObject *receiver); protected: - void customEvent(QEvent *event); + void customEvent(QEvent *event) override; void sync_call__(const SyncableObject *obj, ProxyMode modeType, const char *funcname, va_list ap); void renameObject(const SyncableObject *obj, const QString &newname, const QString &oldname); @@ -181,8 +177,8 @@ private: template void handle(Peer *, T) { Q_ASSERT(0); } - bool invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms, QVariant &returnValue, Peer *peer = 0); - bool invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms = QVariantList(), Peer *peer = 0); + bool invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms, QVariant &returnValue, Peer *peer = nullptr); + bool invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms = QVariantList(), Peer *peer = nullptr); void requestInit(SyncableObject *obj); QVariantMap initData(SyncableObject *obj) const; @@ -199,12 +195,12 @@ private: SignalRelay *_signalRelay; // RPC function -> (object, slot ID) - typedef QPair MethodId; - typedef QMultiHash SlotHash; + using MethodId = QPair; + using SlotHash = QMultiHash; SlotHash _attachedSlots; // slaves for sync - typedef QHash ObjectId; + using ObjectId = QHash; QHash _syncSlave; ProxyMode _proxyMode; @@ -221,8 +217,6 @@ private: Peer *_sourcePeer = nullptr; Peer *_targetPeer = nullptr; - thread_local static SignalProxy *_current; - friend class SignalRelay; friend class SyncableObject; friend class Peer; @@ -238,7 +232,7 @@ class SignalProxy::ExtendedMetaObject { public: MethodDescriptor(const QMetaMethod &method); - MethodDescriptor() : _returnType(-1), _minArgCount(-1), _receiverMode(SignalProxy::Client) {} + MethodDescriptor() {} inline const QByteArray &methodName() const { return _methodName; } inline const QList &argTypes() const { return _argTypes; } @@ -249,9 +243,9 @@ class SignalProxy::ExtendedMetaObject private: QByteArray _methodName; QList _argTypes; - int _returnType; - int _minArgCount; - SignalProxy::ProxyMode _receiverMode; // Only acceptable as a Sync Call if the receiving SignalProxy is in this mode. + int _returnType{-1}; + int _minArgCount{-1}; + SignalProxy::ProxyMode _receiverMode{SignalProxy::Client}; // Only acceptable as a Sync Call if the receiving SignalProxy is in this mode. }; @@ -286,5 +280,3 @@ private: QHash _methodIds; QHash _receiveMap; // if slot x is called then hand over the result to slot y }; - -#endif