RemoteStore::addToStore(): Send NAR rather than string containing NAR
This allows the NAR to be streamed in the future (though we're not doing that yet).
This commit is contained in:
parent
374908726b
commit
f61f67ddee
5 changed files with 21 additions and 37 deletions
|
@ -61,27 +61,6 @@ void Store::exportPath(const Path & path, Sink & sink)
|
|||
hashAndWriteSink << exportMagic << path << info->references << info->deriver << 0;
|
||||
}
|
||||
|
||||
struct TeeSource : Source
|
||||
{
|
||||
Source & readSource;
|
||||
ref<std::string> data;
|
||||
TeeSource(Source & readSource)
|
||||
: readSource(readSource)
|
||||
, data(make_ref<std::string>())
|
||||
{
|
||||
}
|
||||
size_t read(unsigned char * data, size_t len)
|
||||
{
|
||||
size_t n = readSource.read(data, len);
|
||||
this->data->append((char *) data, n);
|
||||
return n;
|
||||
}
|
||||
};
|
||||
|
||||
struct NopSink : ParseSink
|
||||
{
|
||||
};
|
||||
|
||||
Paths Store::importPaths(Source & source, std::shared_ptr<FSAccessor> accessor, bool dontCheckSigs)
|
||||
{
|
||||
Paths res;
|
||||
|
@ -92,7 +71,7 @@ Paths Store::importPaths(Source & source, std::shared_ptr<FSAccessor> accessor,
|
|||
|
||||
/* Extract the NAR from the source. */
|
||||
TeeSource tee(source);
|
||||
NopSink sink;
|
||||
ParseSink sink;
|
||||
parseDump(sink, tee);
|
||||
|
||||
uint32_t magic = readInt(source);
|
||||
|
|
|
@ -169,9 +169,9 @@ struct LegacySSHStore : public Store
|
|||
|
||||
/* FIXME: inefficient. */
|
||||
ParseSink parseSink; /* null sink; just parse the NAR */
|
||||
SavingSourceAdapter savedNAR(conn->from);
|
||||
TeeSource savedNAR(conn->from);
|
||||
parseDump(parseSink, savedNAR);
|
||||
sink(savedNAR.s);
|
||||
sink(*savedNAR.data);
|
||||
}
|
||||
|
||||
/* Unsupported methods. */
|
||||
|
|
|
@ -378,8 +378,9 @@ void RemoteStore::addToStore(const ValidPathInfo & info, const ref<std::string>
|
|||
conn->to << wopAddToStoreNar
|
||||
<< info.path << info.deriver << printHash(info.narHash)
|
||||
<< info.references << info.registrationTime << info.narSize
|
||||
<< info.ultimate << info.sigs << info.ca << *nar << repair << dontCheckSigs;
|
||||
// FIXME: don't send nar as a string
|
||||
<< info.ultimate << info.sigs << info.ca
|
||||
<< repair << dontCheckSigs;
|
||||
conn->to(*nar);
|
||||
conn->processStderr();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue