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

📄 filemanager.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 FILEMANAGER_H#define FILEMANAGER_Hclass QByteArray;class QFile;class QTimerEvent;#include <QBitArray>#include <QList>#include <QMutex>#include <QThread>#include <QWaitCondition>#include "metainfo.h"class FileManager : public QThread{    Q_OBJECTpublic:    FileManager(QObject *parent = 0);    virtual ~FileManager();    inline void setMetaInfo(const MetaInfo &info) { metaInfo = info; }    inline void setDestinationFolder(const QString &directory) { destinationPath = directory; }        int read(int pieceIndex, int offset, int length);    void write(int pieceIndex, int offset, const QByteArray &data);    void verifyPiece(int pieceIndex);    inline qint64 totalSize() const { return totalLength; }    inline int pieceCount() const { return numPieces; }    int pieceLengthAt(int pieceIndex) const;    QBitArray completedPieces() const;    void setCompletedPieces(const QBitArray &pieces);    QString errorString() const;public slots:    void startDataVerification();signals:    void dataRead(int id, int pieceIndex, int offset, const QByteArray &data);    void error();    void verificationProgress(int percent);    void verificationDone();    void pieceVerified(int pieceIndex, bool verified);protected:    void run();private slots:    bool verifySinglePiece(int pieceIndex);    void wakeUp();private:    bool generateFiles();    QByteArray readBlock(int pieceIndex, int offset, int length);    bool writeBlock(int pieceIndex, int offset, const QByteArray &data);    void verifyFileContents();    struct WriteRequest {        int pieceIndex;        int offset;        QByteArray data;    };    struct ReadRequest {        int pieceIndex;        int offset;        int length;        int id;    };    QString errString;    QString destinationPath;    MetaInfo metaInfo;    QList<QFile *> files;    QList<QByteArray> sha1s;    QBitArray verifiedPieces;    bool newFile;    int pieceLength;    qint64 totalLength;    int numPieces;    int readId;    bool startVerification;    bool quit;    bool wokeUp;    QList<WriteRequest> writeRequests;    QList<ReadRequest> readRequests;    QList<int> pendingVerificationRequests;    QList<int> newPendingVerificationRequests;    QList<qint64> fileSizes;    mutable QMutex mutex;    mutable QWaitCondition cond;};#endif

⌨️ 快捷键说明

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