Transfer Ease
|
C++ cross-platform library TransferEase which provide methods to download/upload datas easily.
main
branch. 1.0.x
: branch dev/1.0
1.1.x
: branch dev/1.1
Table of contents :
This library requires at least C++ 17 standard
Below, list of required dependencies:
Dependencies | VCPKG package | Comments |
---|---|---|
libcurl | curl | / |
Google Tests | gtest | Only needed to run unit-tests |
Dependency manager VCPKG is not mandatory, this is only a note to be able to list needed packages
This library can be use as an embedded library in a subdirectory of your project (like a git submodule for example) :
This library provide some CMake options:
TEASE_BUILD_TESTS
: Use to enable/disable unit-tests of the library. Default value: ON
.Please refer to tease::TransferManager
class documentation for more details
This library use a virtual logger (based on this implementation) in order to let users of the library use their own log management mechanism. By default, no logs will be printed. To enable library log usage, caller must provide a class inheriting from tease::ILogger
interface.
More details on how to use this log interface can be found inside abstract logger repository
In order to easily check at compilation time library version (to manage compatibility between multiple versions for example), macro TEASE_VERSION_ENCODE
(defined inside transferease_global.h file) can be used:
Since library header used during final application build could differ from the actual library version, it is recommended to use the static method:
This library use the PImpl Idiom in order to preserve ABI compatibility (Qt wiki also have a great tutorial on the PImpl idiom).
So only major release (this project use the semantic versioning) should break the ABI.
Currently, library store all downloaded/uploaded datas in heap memory, that provide us some advantages:
But this behaviour also have downsides : since all datas are stored into heap memory, this could lead to issues when managing large ressources.
Currently, only uploaded datas have a safeguard (when loading data from file) set to 1 Gigabytes (1024^3 bytes)
.
This issue will be taken care in a future release (via streams/chunks management) but I can only recommend to not use this library for now if downloaded files can be large.
All classes/methods has been documented with Doxygen utility and automatically generated at online website documentation.
docs/fragments/Doxyfile-public-api.in
docs/fragments/Doxyfile-internal.in
To generate documentation locally, we can use:
This library is licensed under MIT license.