A controller that provides an interface to the storage layer.
The storage controller curates the creation of sources, the progress of readers through these collections, and their eventual dropping and resource reclamation.
The storage controller can be viewed as a partial map from
GlobalId to collection. It is an error to
use an identifier before it has been “created” with
create_source(). Once created, the controller holds
a read capability for each source, which is manipulated with
Eventually, the source is dropped with either
drop_sources() or by allowing compaction to the
prepare_exportis called before
create_exports. This token proves that compaction is being held back on
from_idat least until
idis created. It should be held while the AS OF is determined.