aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/http-binary-cache-store.cc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-20 14:12:38 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-20 14:12:38 +0200
commit451ebf24ce532f8d59f929efd486104fcebf1aa6 (patch)
tree08bf43e0aad39626a1cc1ab9d5e638fdf90567b9 /src/libstore/http-binary-cache-store.cc
parente0204f8d462041387651af388074491fd0bf36d6 (diff)
Cache path info lookups in SQLite
This re-implements the binary cache database in C++, allowing it to be used by other Store backends, in particular the S3 backend.
Diffstat (limited to 'src/libstore/http-binary-cache-store.cc')
-rw-r--r--src/libstore/http-binary-cache-store.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/libstore/http-binary-cache-store.cc b/src/libstore/http-binary-cache-store.cc
index 6dcea1cbf..771eb42ee 100644
--- a/src/libstore/http-binary-cache-store.cc
+++ b/src/libstore/http-binary-cache-store.cc
@@ -1,6 +1,7 @@
#include "binary-cache-store.hh"
#include "download.hh"
#include "globals.hh"
+#include "nar-info-disk-cache.hh"
namespace nix {
@@ -24,13 +25,23 @@ public:
{
if (cacheUri.back() == '/')
cacheUri.pop_back();
+
+ diskCache = getNarInfoDiskCache();
+ }
+
+ std::string getUri() override
+ {
+ return cacheUri;
}
void init() override
{
// FIXME: do this lazily?
- if (!fileExists("nix-cache-info"))
- throw Error(format("ā€˜%sā€™ does not appear to be a binary cache") % cacheUri);
+ if (!diskCache->cacheExists(cacheUri)) {
+ if (!fileExists("nix-cache-info"))
+ throw Error(format("ā€˜%sā€™ does not appear to be a binary cache") % cacheUri);
+ diskCache->createCache(cacheUri);
+ }
}
protected: