mirror of
https://github.com/cmclark00/retro-imager.git
synced 2025-05-18 07:55:21 +01:00
Qt/QML edition
This commit is contained in:
commit
d7b361ba44
2168 changed files with 721948 additions and 0 deletions
59
downloadextractthread.h
Normal file
59
downloadextractthread.h
Normal file
|
@ -0,0 +1,59 @@
|
|||
#ifndef DOWNLOADEXTRACTTHREAD_H
|
||||
#define DOWNLOADEXTRACTTHREAD_H
|
||||
|
||||
/*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
* Copyright (C) 2020 Raspberry Pi (Trading) Limited
|
||||
*/
|
||||
|
||||
#include "downloadthread.h"
|
||||
#include <deque>
|
||||
#include <condition_variable>
|
||||
|
||||
class _extractThreadClass;
|
||||
|
||||
class DownloadExtractThread : public DownloadThread
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
/*
|
||||
* Constructor
|
||||
*
|
||||
* - url: URL to download
|
||||
* - localfolder: Folder to extract archive to
|
||||
*/
|
||||
explicit DownloadExtractThread(const QByteArray &url, const QByteArray &localfilename = "", const QByteArray &expectedHash = "", QObject *parent = nullptr);
|
||||
|
||||
virtual ~DownloadExtractThread();
|
||||
virtual void cancelDownload();
|
||||
virtual void extractImageRun();
|
||||
virtual void extractMultiFileRun();
|
||||
virtual bool isImage();
|
||||
virtual void enableMultipleFileExtraction();
|
||||
|
||||
protected:
|
||||
char *_abuf;
|
||||
size_t _abufsize;
|
||||
_extractThreadClass *_extractThread;
|
||||
std::deque<QByteArray> _queue;
|
||||
static const int MAX_QUEUE_SIZE;
|
||||
std::mutex _queueMutex;
|
||||
std::condition_variable _cv;
|
||||
bool _ethreadStarted, _isImage;
|
||||
QCryptographicHash _inputHash;
|
||||
|
||||
QByteArray _popQueue();
|
||||
void _pushQueue(const char *data, size_t len);
|
||||
void _cancelExtract();
|
||||
virtual size_t _writeData(const char *buf, size_t len);
|
||||
virtual void _onDownloadSuccess();
|
||||
virtual void _onDownloadError(const QString &msg);
|
||||
|
||||
ssize_t _on_read(struct archive *a, const void **buff);
|
||||
int _on_close(struct archive *a);
|
||||
|
||||
static ssize_t _archive_read(struct archive *a, void *client_data, const void **buff);
|
||||
static int _archive_close(struct archive *a, void *client_data);
|
||||
};
|
||||
|
||||
#endif // DOWNLOADEXTRACTTHREAD_H
|
Loading…
Add table
Add a link
Reference in a new issue