aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/download.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/download.hh')
-rw-r--r--src/libstore/download.hh20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/libstore/download.hh b/src/libstore/download.hh
index dae082ab9..9e965b506 100644
--- a/src/libstore/download.hh
+++ b/src/libstore/download.hh
@@ -57,11 +57,23 @@ struct DownloadResult
{
bool cached = false;
std::string etag;
- std::string effectiveUrl;
+ std::string effectiveUri;
std::shared_ptr<std::string> data;
uint64_t bodySize = 0;
};
+struct CachedDownloadRequest
+{
+ std::string uri;
+ bool unpack = false;
+ std::string name;
+ Hash expectedHash;
+ unsigned int ttl = settings.tarballTtl;
+
+ CachedDownloadRequest(const std::string & uri)
+ : uri(uri) { }
+};
+
struct CachedDownloadResult
{
// Note: 'storePath' may be different from 'path' when using a
@@ -69,6 +81,7 @@ struct CachedDownloadResult
Path storePath;
Path path;
std::optional<std::string> etag;
+ std::string effectiveUri;
};
class Store;
@@ -96,10 +109,7 @@ struct Downloader
and is more recent than ‘tarball-ttl’ seconds. Otherwise,
use the recorded ETag to verify if the server has a more
recent version, and if so, download it to the Nix store. */
- CachedDownloadResult downloadCached(
- ref<Store> store, const string & uri, bool unpack, string name = "",
- const Hash & expectedHash = Hash(), string * effectiveUri = nullptr,
- int ttl = settings.tarballTtl);
+ CachedDownloadResult downloadCached(ref<Store> store, const CachedDownloadRequest & request);
enum Error { NotFound, Forbidden, Misc, Transient, Interrupted };
};