X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorenetwork.h;h=bb2a07d392fc2c0c7a3db0514d8ffb96fe40d190;hp=f50717b0f06804a75d0a34813a28bc601b46236d;hb=412b5319d090f122ae8c99be6578bc25023c8f24;hpb=32c550d8f25392616de13fe761285ac13cf5e0d9 diff --git a/src/core/corenetwork.h b/src/core/corenetwork.h index f50717b0..bb2a07d3 100644 --- a/src/core/corenetwork.h +++ b/src/core/corenetwork.h @@ -37,10 +37,11 @@ class CoreIdentity; class IrcServerHandler; -class UserInputHandler; +class CoreUserInputHandler; class CtcpHandler; class CoreNetwork : public Network { + SYNCABLE_OBJECT Q_OBJECT public: @@ -50,9 +51,10 @@ public: inline CoreIdentity *identityPtr() const { return coreSession()->identity(identity()); } inline CoreSession *coreSession() const { return _coreSession; } + inline CoreNetworkConfig *networkConfig() const { return coreSession()->networkConfig(); } inline IrcServerHandler *ircServerHandler() const { return _ircServerHandler; } - inline UserInputHandler *userInputHandler() const { return _userInputHandler; } + inline CoreUserInputHandler *userInputHandler() const { return _userInputHandler; } inline CtcpHandler *ctcpHandler() const { return _ctcpHandler; } //! Decode a string using the server (network) decoding. @@ -75,7 +77,7 @@ public: inline QString channelKey(const QString &channel) const { return _channelKeys.value(channel.toLower(), QString()); } - inline bool isAutoWhoInProgress(const QString &channel) const { return _autoWhoInProgress.value(channel.toLower(), 0); } + inline bool isAutoWhoInProgress(const QString &channel) const { return _autoWhoPending.value(channel.toLower(), 0); } inline UserId userId() const { return _coreSession->user(); } @@ -90,6 +92,8 @@ public slots: virtual void setAutoReconnectInterval(quint32); virtual void setAutoReconnectRetries(quint16); + void setPingInterval(int interval); + void connectToIrc(bool reconnecting = false); void disconnectFromIrc(bool requested = true, const QString &reason = QString(), bool withReconnect = false); @@ -102,17 +106,24 @@ public slots: void addChannelKey(const QString &channel, const QString &key); void removeChannelKey(const QString &channel); + void setAutoWhoEnabled(bool enabled); + void setAutoWhoInterval(int interval); + void setAutoWhoDelay(int delay); + bool setAutoWhoDone(const QString &channel); Server usedServer() const; - inline void resetPong() { _gotPong = true; } - inline bool gotPong() { return _gotPong; } + inline void resetPingTimeout() { _pingCount = 0; } + + inline void displayMsg(Message::Type msgType, BufferInfo::Type bufferType, const QString &target, const QString &text, const QString &sender = "", Message::Flags flags = Message::None) { + emit displayMsg(networkId(), msgType, bufferType, target, text, sender, flags); + } signals: void recvRawServerMsg(QString); void displayStatusMsg(QString); - void displayMsg(Message::Type, BufferInfo::Type, QString target, QString text, QString sender = "", Message::Flags flags = Message::None); + void displayMsg(NetworkId, Message::Type, BufferInfo::Type, const QString &target, const QString &text, const QString &sender = "", Message::Flags flags = Message::None); void disconnected(NetworkId networkId); void connectionError(const QString &errorMsg); @@ -135,6 +146,8 @@ private slots: void restoreUserModes(); void doAutoReconnect(); void sendPing(); + void enablePingTimeout(bool enable = true); + void disablePingTimeout(); void sendAutoWho(); void startAutoWhoCycle(); @@ -156,7 +169,7 @@ private: #endif IrcServerHandler *_ircServerHandler; - UserInputHandler *_userInputHandler; + CoreUserInputHandler *_userInputHandler; CtcpHandler *_ctcpHandler; QHash _channelKeys; // stores persistent channels and their passwords, if any @@ -176,18 +189,15 @@ private: int _lastUsedServerIndex; QTimer _pingTimer; - bool _gotPong; + uint _lastPingTime; + uint _pingCount; - bool _autoWhoEnabled; QStringList _autoWhoQueue; - QHash _autoWhoInProgress; - int _autoWhoInterval; - int _autoWhoNickLimit; - int _autoWhoDelay; + QHash _autoWhoPending; QTimer _autoWhoTimer, _autoWhoCycleTimer; QTimer _tokenBucketTimer; - int _messagesPerSecond; // token refill speed + int _messageDelay; // token refill speed in ms int _burstSize; // size of the token bucket int _tokenBucket; // the virtual bucket that holds the tokens QList _msgQueue;