Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Road to v3.x #80

Open
1 of 5 tasks
antony-jr opened this issue Dec 19, 2022 · 0 comments
Open
1 of 5 tasks

Road to v3.x #80

antony-jr opened this issue Dec 19, 2022 · 0 comments

Comments

@antony-jr
Copy link
Owner

antony-jr commented Dec 19, 2022

This issue tracks the progress and suggestions for the next major version of QArchive. The major focus for the next major version should be use of concurrency and good public api, without having separate classes like MemoryExtractor and DiskExtractor which can be combined into a single class anyways.

Currently the wrapper does not use concurrency, it uses the main thread or a separate worker thread which is fine for now, but use of concurrency can increase the performance into many folds than using raw libarchive with Qt.

I've planned to use QFutures to get concurrency with extraction and compression. It should be pretty straight forward.

I've come up with a sort of a syntax for v3.x, if any of you have suggestion then please do tell,

 QArchive::QArchive archive;
 
 // Give a path to archive
 archive.setArchive("/path/to/archive.tar.gz");
 
 // Give a QIODevice
 archive.setArchive(QIODevice*);

 archive.setMode(QArchive::Read);

 // or write, aka compress
 archive.setMode(QArchive::Write);
 
 // Extractor and Compressor methods should be condensed.
 // like addFiles and removeFiles, filters and basePath

 archive.start();

 // QArchive::finished will have a pointer to memory file, it will be null in
 // case of write mode.

TODO

  • Test v2.x with concurrency.
  • Better testing
  • Make it easy to install using Qt installer (Partially done, still need more time)
  • Use of v2 Docs and translate to multiple languages
  • Versioned docs in v2.x

More coming soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant