X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fnetworkconnection.h;h=9b4126d02c108d59c67170e71097a0e8a1fe2729;hb=a1bcca1c86e88406a0c5495b08731e6b11dd987e;hp=5f593137b16d01a92d11f186c8ec4ca4bb4b1172;hpb=464a20552a20ff976ef4d696f69bc73b389886ad;p=quassel.git diff --git a/src/core/networkconnection.h b/src/core/networkconnection.h index 5f593137..9b4126d0 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); @@ -147,6 +147,8 @@ private slots: void sslErrors(const QList &errors); #endif + void fillBucketAndProcessQueue(); + private: #ifndef QT_NO_OPENSSL QSslSocket socket; @@ -174,12 +176,21 @@ private: 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; + + void writeToSocket(QByteArray s); + + class ParseError : public Exception { public: