aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-09-10 14:58:49 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-09-10 14:58:49 +0200
commitca58ee37157f4ae9635ccdf3ab662c31ba0e6904 (patch)
treefe4201a74d7f445c1a8cdd0c1ac4a69343094646 /src
parent858c95cd64794ae78bf3f39805b933c6289bd84d (diff)
downloadqxmpp-ca58ee37157f4ae9635ccdf3ab662c31ba0e6904.tar.gz
add counters
Diffstat (limited to 'src')
-rw-r--r--src/base/QXmppLogger.cpp14
-rw-r--r--src/base/QXmppLogger.h5
-rw-r--r--src/client/QXmppClient.cpp4
-rw-r--r--src/server/QXmppServer.cpp18
4 files changed, 39 insertions, 2 deletions
diff --git a/src/base/QXmppLogger.cpp b/src/base/QXmppLogger.cpp
index 2bce8690..34ff2f2f 100644
--- a/src/base/QXmppLogger.cpp
+++ b/src/base/QXmppLogger.cpp
@@ -66,6 +66,8 @@ static void relaySignals(QXmppLoggable *from, QXmppLoggable *to)
to, SIGNAL(incrementCounter(QString)));
QObject::connect(from, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
to, SIGNAL(logMessage(QXmppLogger::MessageType,QString)));
+ QObject::connect(from, SIGNAL(setGauge(QString,double)),
+ to, SIGNAL(setGauge(QString,double)));
}
/// Constructs a new QXmppLoggable.
@@ -95,6 +97,8 @@ void QXmppLoggable::childEvent(QChildEvent *event)
this, SIGNAL(incrementCounter(QString)));
disconnect(child, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)));
+ disconnect(child, SIGNAL(setGauge(QString,double)),
+ this, SIGNAL(setGauge(QString,double)));
}
}
/// \endcond
@@ -228,6 +232,16 @@ void QXmppLogger::log(QXmppLogger::MessageType type, const QString& text)
}
}
+/// Sets the given \a gauge to \a value.
+///
+/// NOTE: the base implementation does nothing.
+
+void QXmppLogger::setGauge(const QString &gauge, double value)
+{
+ Q_UNUSED(gauge);
+ Q_UNUSED(value);
+}
+
/// Returns the path to which logging messages should be written.
///
/// \sa loggingType()
diff --git a/src/base/QXmppLogger.h b/src/base/QXmppLogger.h
index 7178d960..b6181b96 100644
--- a/src/base/QXmppLogger.h
+++ b/src/base/QXmppLogger.h
@@ -90,6 +90,8 @@ public:
public slots:
virtual void incrementCounter(const QString &counter);
+ virtual void setGauge(const QString &gauge, double value);
+
void log(QXmppLogger::MessageType type, const QString& text);
void reopen();
@@ -167,6 +169,9 @@ signals:
/// Increment the given \a counter.
void incrementCounter(const QString &counter);
+ /// Sets the given \a gauge to \a value.
+ void setGauge(const QString &gauge, double value);
+
/// This signal is emitted to send logging messages.
void logMessage(QXmppLogger::MessageType type, const QString &msg);
};
diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp
index 796cb419..98819c3d 100644
--- a/src/client/QXmppClient.cpp
+++ b/src/client/QXmppClient.cpp
@@ -579,6 +579,8 @@ void QXmppClient::setLogger(QXmppLogger *logger)
d->logger, SLOT(incrementCounter(QString)));
disconnect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
d->logger, SLOT(log(QXmppLogger::MessageType,QString)));
+ disconnect(this, SIGNAL(setGauge(QString,double)),
+ d->logger, SLOT(setGauge(QString,double)));
}
d->logger = logger;
@@ -587,6 +589,8 @@ void QXmppClient::setLogger(QXmppLogger *logger)
d->logger, SLOT(incrementCounter(QString)));
connect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
d->logger, SLOT(log(QXmppLogger::MessageType,QString)));
+ connect(this, SIGNAL(setGauge(QString,double)),
+ d->logger, SLOT(setGauge(QString,double)));
}
emit loggerChanged(d->logger);
diff --git a/src/server/QXmppServer.cpp b/src/server/QXmppServer.cpp
index 0027aa6f..8c9b6fb0 100644
--- a/src/server/QXmppServer.cpp
+++ b/src/server/QXmppServer.cpp
@@ -172,6 +172,7 @@ bool QXmppServerPrivate::routeData(const QString &to, const QByteArray &data)
// add stream
outgoingServers.insert(conn);
+ q->setGauge("outgoing-server.count", outgoingServers.size());
// queue data and connect to remote server
QMetaObject::invokeMethod(conn, "queueData", Q_ARG(QByteArray, data));
@@ -397,6 +398,8 @@ void QXmppServer::setLogger(QXmppLogger *logger)
d->logger, SLOT(incrementCounter(QString)));
disconnect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
d->logger, SLOT(log(QXmppLogger::MessageType,QString)));
+ disconnect(this, SIGNAL(setGauge(QString,double)),
+ d->logger, SLOT(setGauge(QString,double)));
}
d->logger = logger;
@@ -405,6 +408,8 @@ void QXmppServer::setLogger(QXmppLogger *logger)
d->logger, SLOT(incrementCounter(QString)));
connect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)),
d->logger, SLOT(log(QXmppLogger::MessageType,QString)));
+ connect(this, SIGNAL(setGauge(QString,double)),
+ d->logger, SLOT(setGauge(QString,double)));
}
emit loggerChanged(d->logger);
@@ -610,6 +615,7 @@ void QXmppServer::addIncomingClient(QXmppIncomingClient *stream)
// add stream
d->incomingClients.insert(stream);
+ setGauge("incoming-client.count", d->incomingClients.size());
}
/// Handle a new incoming TCP connection from a client.
@@ -683,6 +689,9 @@ void QXmppServer::_q_clientDisconnected()
// emit signal
if (!jid.isEmpty())
emit clientDisconnected(jid);
+
+ // update counter
+ setGauge("incoming-client.count", d->incomingClients.size());
}
}
@@ -727,8 +736,10 @@ void QXmppServer::_q_outgoingServerDisconnected()
if (!outgoing)
return;
- if (d->outgoingServers.remove(outgoing))
+ if (d->outgoingServers.remove(outgoing)) {
outgoing->deleteLater();
+ setGauge("outgoing-server.count", d->outgoingServers.size());
+ }
}
/// Handle a new incoming TCP connection from a server.
@@ -763,6 +774,7 @@ void QXmppServer::_q_serverConnection(QSslSocket *socket)
// add stream
d->incomingServers.insert(stream);
+ setGauge("incoming-server.count", d->incomingServers.size());
}
/// Handle a stream disconnection for an incoming server.
@@ -773,8 +785,10 @@ void QXmppServer::_q_serverDisconnected()
if (!incoming)
return;
- if (d->incomingServers.remove(incoming))
+ if (d->incomingServers.remove(incoming)) {
incoming->deleteLater();
+ setGauge("incoming-server.count", d->incomingServers.size());
+ }
}
class QXmppSslServerPrivate