Page
Library
Module
Module type
Parameter
Class
Class type
Source
Conex_resourceSourcePersistent data: on wire and record types
Every resource in conex is a piece of data (or metadata), and has its own purpose. Resources stored on disk consists of a common header: a name, a type, a counter, a wraparound counter, and a creation timestamp. There are broadly three kinds of resources: those containing identities (Team and Author), those regulating access to packages (Authorisation), and those with the digests of the opam repository data (Package and Release).
The name of resources, used e.g. for package names.
pp_name name is a pretty printer for name.
name_equal a b is the result of a case insensitive comparison of a and b.
The type of identifiers.
pp_id id is a pretty printer for identifier.
id_equal a b is the result of a case insensitive comparison of a and b.
The wire encoding is abstract here, one suitable decoding and encoding engine is Conex_opam_encoding. The wire encoding is used for digest computations, and persistent storage on disk.
The sum type of all possible resources.
string_to_resource str is either Some resource or None.
pp_resource pp is a pretty printer for resource.
resource_equal a b is true if they are the same, otherwise false.
An author contains a list of approved resources (name, typ, digest). It also contains a list of key and signature pairs, and a list of accounts. Keys have to be approved by a quorum of janitors, but the resource list is modified only by the author themselves.
A team consists of a group of authors. Team members can dynamically join and leave.
An authorisation contains the information who is authorised to modify a package. There is always a single authorisation file per package, approved by a quorum of janitors.
A package lists all releases of a given package. There is one package resource for each package.