12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152openCache_intfopenStdune(** A version of the communication protocol between Dune and the cache daemon. *)typeversion={major:int;minor:int}(** When Dune successfully executes a build rule, it sends a "promotion" message
to the cache daemon, listing the produced [files] along with some [metadata]
and a few other fields relevant for caching. *)typepromotion={key:Key.t;files:(Path.Build.t*Digest.t)list;metadata:Sexp.tlist;repository:intoption;duplication:Duplication_mode.toption}(** There is one initial message [Lang], which is sent by Dune and the cache
daemon to each other during the initial negotiation of the version of the
communication protocol. *)typeinitial=Initial(** Outgoing messages are sent by Dune to the cache daemon. *)typeoutgoing=Outgoing(** Incoming messages are sent by the cache daemon to Dune. *)typeincoming=Incoming(** Messages of the communication protocol between Dune and the cache daemon. *)type_message=|Lang:versionlist->initialmessage(** Inform the other party about the supported versions of the
communication protocol. *)|SetBuildRoot:Path.t->outgoingmessage(** Set the absolute path to the build root, to be used when interpreting
relative paths in subsequent messages. *)|SetCommonMetadata:Sexp.tlist->outgoingmessage(** Set the common metadata that should be added to the subsequent
[Promote] messages. *)|SetRepos:repositorylist->outgoingmessage(** Set the paths to all the version controlled repositories in the
workspace along with the associated commit identifiers. *)|Promote:promotion->outgoingmessage(** Promote files produced by a build rule into the cache. *)|Hint:Digest.tlist->outgoingmessage(** The cache daemon a rule is going to be built *)|Dedup:File.t->incomingmessage(** Inform Dune that a file that was previously promoted can now be
replaced by a hardlink to the corresponding file stored in cache. *)