⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 torrentclient.h

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 H
字号:
/******************************************************************************** Copyright (C) 2004-2006 Trolltech ASA. All rights reserved.**** This file is part of the example classes of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef TORRENTCLIENT_H#define TORRENTCLIENT_H#include <QBitArray>#include <QHostAddress>class MetaInfo;class PeerWireClient;class TorrentClientPrivate;class TorrentPeer;class TorrentPiece;template<typename T> class QList;class QTimerEvent;class TorrentPeer {public:    QHostAddress address;    quint16 port;    QString id;    bool interesting;    bool seed;    uint lastVisited;    uint connectStart;    uint connectTime;    QBitArray pieces;    int numCompletedPieces;    inline bool operator==(const TorrentPeer &other)    {        return port == other.port            && address == other.address            && id == other.id;    }};class TorrentClient : public QObject{    Q_OBJECTpublic:    enum State {        Idle,        Paused,        Stopping,        Preparing,        Searching,        Connecting,        WarmingUp,        Downloading,        Endgame,        Seeding    };    enum Error {        UnknownError,        TorrentParseError,        InvalidTrackerError,        FileError,        ServerError    };    TorrentClient(QObject *parent = 0);    ~TorrentClient();    bool setTorrent(const QString &fileName);    bool setTorrent(const QByteArray &torrentData);    MetaInfo metaInfo() const;    void setMaxConnections(int connections);    int maxConnections() const;    void setDestinationFolder(const QString &directory);    QString destinationFolder() const;    void setDumpedState(const QByteArray &dumpedState);    QByteArray dumpedState() const;    // Progress and stats for download feedback.    qint64 progress() const;    void setDownloadedBytes(qint64 bytes);    qint64 downloadedBytes() const;    void setUploadedBytes(qint64 bytes);    qint64 uploadedBytes() const;    int connectedPeerCount() const;    int seedCount() const;       // Accessors for the tracker    QByteArray peerId() const;    QByteArray infoHash() const;    quint16 serverPort() const;    // State and error.    State state() const;    QString stateString() const;    Error error() const;    QString errorString() const;signals:    void stateChanged(TorrentClient::State state);    void error(TorrentClient::Error error);    void downloadCompleted();    void peerInfoUpdated();        void dataSent(int uploadedBytes);    void dataReceived(int downloadedBytes);    void progressUpdated(int percentProgress);    void downloadRateUpdated(int bytesPerSecond);    void uploadRateUpdated(int bytesPerSecond);    void stopped();public slots:    void start();    void stop();    void setPaused(bool paused);    void setupIncomingConnection(PeerWireClient *client);protected slots:    void timerEvent(QTimerEvent *event);private slots:    // File management    void sendToPeer(int readId, int pieceIndex, int begin, const QByteArray &data);    void fullVerificationDone();    void pieceVerified(int pieceIndex, bool ok);    void handleFileError();    // Connection handling    void connectToPeers();    QList<TorrentPeer *> weighedFreePeers() const;    void setupOutgoingConnection();    void initializeConnection(PeerWireClient *client);    void removeClient();    void peerPiecesAvailable(const QBitArray &pieces);    void peerRequestsBlock(int pieceIndex, int begin, int length);    void blockReceived(int pieceIndex, int begin, const QByteArray &data);    void peerWireBytesWritten(qint64 bytes);    void peerWireBytesReceived(qint64 bytes);    int blocksLeftForPiece(const TorrentPiece *piece) const;    // Scheduling    void scheduleUploads();    void scheduleDownloads();    void schedulePieceForClient(PeerWireClient *client);    void requestMore(PeerWireClient *client);    int requestBlocks(PeerWireClient *client, TorrentPiece *piece, int maxBlocks);    void peerChoked();    void peerUnchoked();    // Tracker handling    void addToPeerList(const QList<TorrentPeer> &peerList);    void trackerStopped();    // Progress    void updateProgress(int progress = -1);private:    TorrentClientPrivate *d;    friend class TorrentClientPrivate;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -