X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fserver.h;h=771db62e6b58d6d381269a80465071d926d998a8;hp=c99174cd5c1fe7b55152a3cae47e1e91e38f1418;hb=8699dd758516d0ded076811e8ea656adc95e69d0;hpb=d6b056e936ec441258d291b7a8af7b83f9f53016 diff --git a/src/core/server.h b/src/core/server.h index c99174cd..771db62e 100644 --- a/src/core/server.h +++ b/src/core/server.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-08 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -48,7 +48,7 @@ class Server : public QThread { Q_OBJECT public: - Server(UserId uid, uint networkId, QString network); + Server(UserId uid, NetworkId networkId, QString network, const QVariant &previousState = QVariant()); ~Server(); UserId userId() const { return _userId; } @@ -56,14 +56,34 @@ public: // serverState state(); bool isConnected() const { return socket.state() == QAbstractSocket::ConnectedState; } - uint networkId() const; - QString networkName(); // hasbeen getNetwork() + NetworkId networkId() const; + QString networkName() const; // hasbeen getNetwork() + + NetworkInfo *networkInfo() const { return _networkInfo; } + IrcServerHandler *ircServerHandler() const { return _ircServerHandler; } + UserInputHandler *userInputHandler() const { return _userInputHandler; } + CtcpHandler *ctcpHandler() const { return _ctcpHandler; } + + QVariant state(); ///< Return data necessary to restore the server's state upon core restart + + //! Decode a string using the server (network) decoding. + QString serverDecode(const QByteArray &string) const; + + //! Decode a string using a buffer-specific encoding if one is set (and use the server encoding else). + QString bufferDecode(const QString &bufferName, const QByteArray &string) const; + + //! Decode a string using a IrcUser specific encoding, if one exists (using the server encoding else). + QString userDecode(const QString &userNick, const QByteArray &string) const; + + //! Encode a string using the server (network) encoding. + QByteArray serverEncode(const QString &string) const; + + //! Encode a string using the buffer-specific encoding, if set, and use the server encoding else. + QByteArray bufferEncode(const QString &bufferName, const QString &string) const; + + //! Encode a string using the user-specific encoding, if set, and use the server encoding else. + QByteArray userEncode(const QString &userNick, const QString &string) const; - NetworkInfo *networkInfo() { return _networkInfo; } - IrcServerHandler *ircServerHandler() {return _ircServerHandler; } - UserInputHandler *userInputHandler() {return _userInputHandler; } - CtcpHandler *ctcpHandler() {return _ctcpHandler; } - public slots: // void setServerOptions(); void connectToIrc(QString net); @@ -76,6 +96,7 @@ public slots: private slots: void threadFinished(); + void sendPerform(); signals: void serverState(QString net, QVariantMap data); @@ -86,6 +107,8 @@ signals: void connected(uint networkId); void disconnected(uint networkId); + void connectionInitialized(); ///< Emitted after receipt of 001 to indicate that we can now send data to the IRC server + void synchronizeClients(); void queryRequested(QString network, QString nick); @@ -100,7 +123,7 @@ private slots: private: UserId _userId; - uint _networkId; + NetworkId _networkId; QTcpSocket socket; @@ -113,6 +136,8 @@ private: QVariantMap networkSettings; QVariantMap identity; + QVariant _previousState; + CoreSession *coreSession() const; class ParseError : public Exception {