@@ -312,7 +312,7 @@ static void performOp(
312312 switch (op) {
313313
314314 case WorkerProto::Op::IsValidPath: {
315- auto path = store-> parseStorePath ( readString (conn. from ) );
315+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
316316 logger->startWork ();
317317 bool result = store->isValidPath (path);
318318 logger->stopWork ();
@@ -339,7 +339,7 @@ static void performOp(
339339 }
340340
341341 case WorkerProto::Op::HasSubstitutes: {
342- auto path = store-> parseStorePath ( readString (conn. from ) );
342+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
343343 logger->startWork ();
344344 StorePathSet paths; // FIXME
345345 paths.insert (path);
@@ -359,7 +359,7 @@ static void performOp(
359359 }
360360
361361 case WorkerProto::Op::QueryPathHash: {
362- auto path = store-> parseStorePath ( readString (conn. from ) );
362+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
363363 logger->startWork ();
364364 auto hash = store->queryPathInfo (path)->narHash ;
365365 logger->stopWork ();
@@ -371,7 +371,7 @@ static void performOp(
371371 case WorkerProto::Op::QueryReferrers:
372372 case WorkerProto::Op::QueryValidDerivers:
373373 case WorkerProto::Op::QueryDerivationOutputs: {
374- auto path = store-> parseStorePath ( readString (conn. from ) );
374+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
375375 logger->startWork ();
376376 StorePathSet paths;
377377 if (op == WorkerProto::Op::QueryReferences)
@@ -389,7 +389,7 @@ static void performOp(
389389 }
390390
391391 case WorkerProto::Op::QueryDerivationOutputNames: {
392- auto path = store-> parseStorePath ( readString (conn. from ) );
392+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
393393 logger->startWork ();
394394 auto names = store->readDerivation (path).outputNames ();
395395 logger->stopWork ();
@@ -398,7 +398,7 @@ static void performOp(
398398 }
399399
400400 case WorkerProto::Op::QueryDerivationOutputMap: {
401- auto path = store-> parseStorePath ( readString (conn. from ) );
401+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
402402 logger->startWork ();
403403 auto outputs = store->queryPartialDerivationOutputMap (path);
404404 logger->stopWork ();
@@ -407,11 +407,11 @@ static void performOp(
407407 }
408408
409409 case WorkerProto::Op::QueryDeriver: {
410- auto path = store-> parseStorePath ( readString (conn. from ) );
410+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
411411 logger->startWork ();
412412 auto info = store->queryPathInfo (path);
413413 logger->stopWork ();
414- conn. to << (info-> deriver ? store-> printStorePath (* info->deriver ) : " " );
414+ WorkerProto::write (*store, conn, info->deriver );
415415 break ;
416416 }
417417
@@ -420,7 +420,7 @@ static void performOp(
420420 logger->startWork ();
421421 auto path = store->queryPathFromHashPart (hashPart);
422422 logger->stopWork ();
423- conn. to << (path ? store-> printStorePath (*path) : " " );
423+ WorkerProto::write (*store, conn, path );
424424 break ;
425425 }
426426
@@ -505,7 +505,7 @@ static void performOp(
505505 store->addToStoreFromDump (*dumpSource, baseName, FileSerialisationMethod::NixArchive, method, hashAlgo);
506506 logger->stopWork ();
507507
508- conn. to << store-> printStorePath ( path);
508+ WorkerProto::write (*store, wconn, path);
509509 }
510510 break ;
511511 }
@@ -542,7 +542,7 @@ static void performOp(
542542 NoRepair);
543543 });
544544 logger->stopWork ();
545- conn. to << store-> printStorePath ( path);
545+ WorkerProto::write (*store, wconn, path);
546546 break ;
547547 }
548548
@@ -591,7 +591,7 @@ static void performOp(
591591 }
592592
593593 case WorkerProto::Op::BuildDerivation: {
594- auto drvPath = store-> parseStorePath ( readString (conn. from ) );
594+ auto drvPath = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
595595 BasicDerivation drv;
596596 /*
597597 * Note: unlike wopEnsurePath, this operation reads a
@@ -668,7 +668,7 @@ static void performOp(
668668 }
669669
670670 case WorkerProto::Op::EnsurePath: {
671- auto path = store-> parseStorePath ( readString (conn. from ) );
671+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
672672 logger->startWork ();
673673 store->ensurePath (path);
674674 logger->stopWork ();
@@ -677,7 +677,7 @@ static void performOp(
677677 }
678678
679679 case WorkerProto::Op::AddTempRoot: {
680- auto path = store-> parseStorePath ( readString (conn. from ) );
680+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
681681 logger->startWork ();
682682 store->addTempRoot (path);
683683 logger->stopWork ();
@@ -733,8 +733,10 @@ static void performOp(
733733 conn.to << size;
734734
735735 for (auto & [target, links] : roots)
736- for (auto & link : links)
737- conn.to << link << store->printStorePath (target);
736+ for (auto & link : links) {
737+ conn.to << link;
738+ WorkerProto::write (*store, wconn, target);
739+ }
738740
739741 break ;
740742 }
@@ -799,7 +801,7 @@ static void performOp(
799801 }
800802
801803 case WorkerProto::Op::QuerySubstitutablePathInfo: {
802- auto path = store-> parseStorePath ( readString (conn. from ) );
804+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
803805 logger->startWork ();
804806 SubstitutablePathInfos infos;
805807 store->querySubstitutablePathInfos ({{path, std::nullopt }}, infos);
@@ -808,7 +810,8 @@ static void performOp(
808810 if (i == infos.end ())
809811 conn.to << 0 ;
810812 else {
811- conn.to << 1 << (i->second .deriver ? store->printStorePath (*i->second .deriver ) : " " );
813+ conn.to << 1 ;
814+ WorkerProto::write (*store, wconn, i->second .deriver );
812815 WorkerProto::write (*store, wconn, i->second .references );
813816 conn.to << i->second .downloadSize << i->second .narSize ;
814817 }
@@ -829,8 +832,8 @@ static void performOp(
829832 logger->stopWork ();
830833 conn.to << infos.size ();
831834 for (auto & i : infos) {
832- conn. to << store-> printStorePath ( i.first )
833- << (i. second . deriver ? store-> printStorePath (* i.second .deriver ) : " " );
835+ WorkerProto::write (*store, wconn, i.first );
836+ WorkerProto::write (*store, wconn, i.second .deriver );
834837 WorkerProto::write (*store, wconn, i.second .references );
835838 conn.to << i.second .downloadSize << i.second .narSize ;
836839 }
@@ -846,7 +849,7 @@ static void performOp(
846849 }
847850
848851 case WorkerProto::Op::QueryPathInfo: {
849- auto path = store-> parseStorePath ( readString (conn. from ) );
852+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
850853 std::shared_ptr<const ValidPathInfo> info;
851854 logger->startWork ();
852855 info = store->queryPathInfo (path);
@@ -880,7 +883,7 @@ static void performOp(
880883 }
881884
882885 case WorkerProto::Op::AddSignatures: {
883- auto path = store-> parseStorePath ( readString (conn. from ) );
886+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
884887 StringSet sigs = readStrings<StringSet>(conn.from );
885888 logger->startWork ();
886889 store->addSignatures (path, sigs);
@@ -890,7 +893,7 @@ static void performOp(
890893 }
891894
892895 case WorkerProto::Op::NarFromPath: {
893- auto path = store-> parseStorePath ( readString (conn. from ) );
896+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
894897 logger->startWork ();
895898 logger->stopWork ();
896899 dumpPath (store->toRealPath (path), conn.to );
@@ -899,12 +902,11 @@ static void performOp(
899902
900903 case WorkerProto::Op::AddToStoreNar: {
901904 bool repair, dontCheckSigs;
902- auto path = store-> parseStorePath ( readString (conn. from ) );
903- auto deriver = readString (conn. from );
905+ auto path = WorkerProto::Serialise<StorePath>:: read (*store, rconn );
906+ auto deriver = WorkerProto::Serialise<std::optional<StorePath>>:: read (*store, rconn );
904907 auto narHash = Hash::parseAny (readString (conn.from ), HashAlgorithm::SHA256);
905908 ValidPathInfo info{path, narHash};
906- if (deriver != " " )
907- info.deriver = store->parseStorePath (deriver);
909+ info.deriver = std::move (deriver);
908910 info.references = WorkerProto::Serialise<StorePathSet>::read (*store, rconn);
909911 conn.from >> info.registrationTime >> info.narSize >> info.ultimate ;
910912 info.sigs = readStrings<StringSet>(conn.from );
0 commit comments