Cooperative exclusive writer for one stable package root. More...
#include <project_package.hpp>
Public Member Functions | |
| ~PackageWriter () | |
| PackageWriter (PackageWriter &&) noexcept | |
| PackageWriter & | operator= (PackageWriter &&) noexcept |
| PackageWriter (const PackageWriter &)=delete | |
| PackageWriter & | operator= (const PackageWriter &)=delete |
| const std::filesystem::path & | root () const noexcept |
| Returns the canonical stable package root. | |
| bool | recovered_staging () const noexcept |
| Reports whether opening reclaimed a private temp left by an interrupted writer. | |
| runtime::Result< BlobReference, PackageError > | stage_blob (BlobStore store, const timeline::ContentHash &expected, std::span< const std::uint8_t > bytes) noexcept |
| Hash-verifies, fences, and no-replace publishes one blob before it can be referenced. | |
| runtime::Result< AtomicPublishOutcome, PackageError > | publish (const timeline::Project &project) noexcept |
| Publishes project.json only after validating every packaged asset reference. | |
Static Public Member Functions | |
| static runtime::Result< PackageWriter, PackageError > | create (const std::filesystem::path &root, timeline::SchemaRegistry registry, const PackageLimits &limits={}) noexcept |
| Creates or opens the package layout and acquires its non-blocking writer lock. | |
Cooperative exclusive writer for one stable package root.
Other writers must honor the package lock and must not rename or replace package entries out of band while a writer is open.
| pulp::project_package::PackageWriter::~PackageWriter | ( | ) |
|
noexcept |
|
delete |
|
staticnoexcept |
Creates or opens the package layout and acquires its non-blocking writer lock.
|
delete |
|
noexcept |
|
noexcept |
Publishes project.json only after validating every packaged asset reference.
|
noexcept |
Reports whether opening reclaimed a private temp left by an interrupted writer.
|
noexcept |
Returns the canonical stable package root.
|
noexcept |
Hash-verifies, fences, and no-replace publishes one blob before it can be referenced.