X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fnetworkconnection.h;h=16bfccc4223e92c919960784e80713907ad1cd32;hp=5f593137b16d01a92d11f186c8ec4ca4bb4b1172;hb=72d23cc04e32bfc166720f9b7ecaf4f53e63ec5e;hpb=464a20552a20ff976ef4d696f69bc73b389886ad diff --git a/src/core/networkconnection.h b/src/core/networkconnection.h index 5f593137..16bfccc4 100644 --- a/src/core/networkconnection.h +++ b/src/core/networkconnection.h @@ -86,7 +86,7 @@ public: inline QString channelKey(const QString &channel) const { return _channelKeys.value(channel.toLower(), QString()); } inline QStringList persistentChannels() const { return _channelKeys.keys(); } - inline bool isAutoWhoInProgress(const QString &channel) const { return _autoWhoInProgress.contains(channel); } + inline bool isAutoWhoInProgress(const QString &channel) const { return _autoWhoInProgress.value(channel.toLower(), 0); } public slots: // void setServerOptions(); @@ -109,7 +109,7 @@ signals: void recvRawServerMsg(QString); void displayStatusMsg(QString); //void displayMsg(Message msg); - void displayMsg(Message::Type, BufferInfo::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None); + void displayMsg(Message::Type, BufferInfo::Type, QString target, QString text, QString sender = "", Message::Flags flags = Message::None); void connected(NetworkId networkId); ///< Emitted after receipt of 001 to indicate that we can now send data to the IRC server void disconnected(NetworkId networkId); void connectionStateChanged(Network::ConnectionState); @@ -130,6 +130,7 @@ private slots: void socketError(QAbstractSocket::SocketError); void socketConnected(); void socketInitialized(); + void socketCloseTimeout(); void socketDisconnected(); void socketStateChanged(QAbstractSocket::SocketState); void setConnectionState(Network::ConnectionState); @@ -147,6 +148,8 @@ private slots: void sslErrors(const QList &errors); #endif + void fillBucketAndProcessQueue(); + private: #ifndef QT_NO_OPENSSL QSslSocket socket; @@ -167,19 +170,35 @@ private: QHash _channelKeys; // stores persistent channels and their passwords, if any QTimer _autoReconnectTimer; + int _autoReconnectCount; + QTimer _socketCloseTimer; + + bool _quitRequested; + bool _previousConnectionAttemptFailed; int _lastUsedServerlistIndex; bool _autoWhoEnabled; QStringList _autoWhoQueue; - QSet _autoWhoInProgress; + QHash _autoWhoInProgress; int _autoWhoInterval; int _autoWhoNickLimit; int _autoWhoDelay; QTimer _autoWhoTimer, _autoWhoCycleTimer; + QTimer _tokenBucketTimer; + int _messagesPerSecond; // token refill speed + int _burstSize; // size of the token bucket + int _tokenBucket; // the virtual bucket that holds the tokens + QList _msgQueue; + + int _maxMsgSize; + + void writeToSocket(QByteArray s); + + class ParseError : public Exception { public: