: Network(networkid, session)
, _coreSession(session)
, _userInputHandler(new CoreUserInputHandler(this))
+ , _metricsServer(Core::instance()->metricsServer())
, _autoReconnectCount(0)
, _quitRequested(false)
, _disconnectExpected(false)
_socketId = Core::instance()->identServer()->addWaitingSocket();
}
+ if (_metricsServer) {
+ _metricsServer->addNetwork(userId());
+ }
+
if (!reconnecting && useAutoReconnect() && _autoReconnectCount == 0) {
_autoReconnectTimer.setInterval(autoReconnectInterval() * 1000);
if (unlimitedReconnectRetries())
}
disablePingTimeout();
_msgQueue.clear();
+ if (_metricsServer) {
+ _metricsServer->messageQueue(userId(), 0);
+ }
IrcUser* me_ = me();
if (me_) {
// Add to back, waiting in order
_msgQueue.append(s);
}
+ if (_metricsServer) {
+ _metricsServer->messageQueue(userId(), _msgQueue.size());
+ }
}
}
{
while (socket.canReadLine()) {
QByteArray s = socket.readLine();
+ if (_metricsServer) {
+ _metricsServer->receiveDataNetwork(userId(), s.size());
+ }
if (s.endsWith("\r\n"))
s.chop(2);
else if (s.endsWith("\n"))
{
disablePingTimeout();
_msgQueue.clear();
+ if (_metricsServer) {
+ _metricsServer->messageQueue(userId(), 0);
+ }
_autoWhoCycleTimer.stop();
_autoWhoTimer.stop();
else
_autoReconnectTimer.start();
}
+
+ if (_metricsServer) {
+ _metricsServer->removeNetwork(userId());
+ }
}
void CoreNetwork::onSocketStateChanged(QAbstractSocket::SocketState socketState)
// And https://github.com/quakenet/snircd/blob/master/doc/readme.who
// And https://github.com/hexchat/hexchat/blob/57478b65758e6b697b1d82ce21075e74aa475efc/src/common/proto-irc.c#L752
putRawLine(serverEncode(
- QString("WHO %1 n%chtsunfra,%2").arg(serverEncode(chanOrNick), QString::number(IrcCap::ACCOUNT_NOTIFY_WHOX_NUM))));
+ QString("WHO %1 n%chtsunfra,%2")
+ .arg(chanOrNick, QString::number(IrcCap::ACCOUNT_NOTIFY_WHOX_NUM))
+ ));
}
else {
// Fall back to normal WHO
// As long as there's tokens available and messages remaining, sending messages from the queue
while (!_msgQueue.empty() && _tokenBucket > 0) {
writeToSocket(_msgQueue.takeFirst());
+ if (_metricsServer) {
+ _metricsServer->messageQueue(userId(), _msgQueue.size());
+ }
}
}
}
socket.write(data);
socket.write("\r\n");
+ if (_metricsServer) {
+ _metricsServer->transmitDataNetwork(userId(), data.size() + 2);
+ }
if (!_skipMessageRates) {
// Only subtract from the token bucket if message rate limiting is enabled
_tokenBucket--;