diff options
Diffstat (limited to 'src/libstore/remote-store.cc')
-rw-r--r-- | src/libstore/remote-store.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc index 6ddbb3e2a260..504eb52329a6 100644 --- a/src/libstore/remote-store.cc +++ b/src/libstore/remote-store.cc @@ -302,6 +302,27 @@ Roots RemoteStore::findRoots() } +void RemoteStore::collectGarbage(GCAction action, const PathSet & pathsToDelete, + bool ignoreLiveness, PathSet & result, unsigned long long & bytesFreed) +{ + result.clear(); + bytesFreed = 0; + writeInt(wopCollectGarbage, to); + writeInt(action, to); + writeStringSet(pathsToDelete, to); + writeInt(ignoreLiveness, to); + + processStderr(); + + result = readStringSet(from); + + /* Ugh - NAR integers are 64 bits, but read/writeInt() aren't. */ + unsigned int lo = readInt(from); + unsigned int hi = readInt(from); + bytesFreed = (((unsigned long long) hi) << 32) | lo; +} + + void RemoteStore::processStderr() { unsigned int msg; |