From 973a7a6a0b905f75e10955dca3c6af37f93e853a Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Mon, 10 Sep 2012 13:41:58 +0200 Subject: more plumbing for stat counters --- src/server/QXmppServer.cpp | 26 ++++++++++++++++++-------- src/server/QXmppServer.h | 4 ++++ 2 files changed, 22 insertions(+), 8 deletions(-) (limited to 'src/server') diff --git a/src/server/QXmppServer.cpp b/src/server/QXmppServer.cpp index b329053d..0027aa6f 100644 --- a/src/server/QXmppServer.cpp +++ b/src/server/QXmppServer.cpp @@ -391,14 +391,24 @@ QXmppLogger *QXmppServer::logger() void QXmppServer::setLogger(QXmppLogger *logger) { - if (d->logger) - QObject::disconnect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)), - d->logger, SLOT(log(QXmppLogger::MessageType,QString))); - d->logger = logger; - d->logger = logger; - if (d->logger) - connect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)), - d->logger, SLOT(log(QXmppLogger::MessageType,QString))); + if (logger != d->logger) { + if (d->logger) { + disconnect(this, SIGNAL(incrementCounter(QString)), + d->logger, SLOT(incrementCounter(QString))); + disconnect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)), + d->logger, SLOT(log(QXmppLogger::MessageType,QString))); + } + + d->logger = logger; + if (d->logger) { + connect(this, SIGNAL(incrementCounter(QString)), + d->logger, SLOT(incrementCounter(QString))); + connect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)), + d->logger, SLOT(log(QXmppLogger::MessageType,QString))); + } + + emit loggerChanged(d->logger); + } } /// Returns the password checker used to verify client credentials. diff --git a/src/server/QXmppServer.h b/src/server/QXmppServer.h index 7f546d52..f7aca3b1 100644 --- a/src/server/QXmppServer.h +++ b/src/server/QXmppServer.h @@ -59,6 +59,7 @@ class QXmppStream; class QXMPP_EXPORT QXmppServer : public QXmppLoggable { Q_OBJECT + Q_PROPERTY(QXmppLogger* logger READ logger WRITE setLogger NOTIFY loggerChanged) public: QXmppServer(QObject *parent = 0); @@ -98,6 +99,9 @@ signals: /// This signal is emitted when a client has disconnected. void clientDisconnected(const QString &jid); + /// This signal is emitted when the logger changes. + void loggerChanged(QXmppLogger *logger); + public slots: void handleElement(const QDomElement &element); -- cgit v1.2.3