Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::project_package::PackageWriter Class Reference

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.

Detailed Description

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.

Constructor & Destructor Documentation

◆ ~PackageWriter()

pulp::project_package::PackageWriter::~PackageWriter ( )

◆ PackageWriter() [1/2]

pulp::project_package::PackageWriter::PackageWriter ( PackageWriter && )
noexcept

◆ PackageWriter() [2/2]

pulp::project_package::PackageWriter::PackageWriter ( const PackageWriter & )
delete

Member Function Documentation

◆ create()

runtime::Result< PackageWriter, PackageError > pulp::project_package::PackageWriter::create ( const std::filesystem::path & root,
timeline::SchemaRegistry registry,
const PackageLimits & limits = {} )
staticnoexcept

Creates or opens the package layout and acquires its non-blocking writer lock.

◆ operator=() [1/2]

PackageWriter & pulp::project_package::PackageWriter::operator= ( const PackageWriter & )
delete

◆ operator=() [2/2]

PackageWriter & pulp::project_package::PackageWriter::operator= ( PackageWriter && )
noexcept

◆ publish()

runtime::Result< AtomicPublishOutcome, PackageError > pulp::project_package::PackageWriter::publish ( const timeline::Project & project)
noexcept

Publishes project.json only after validating every packaged asset reference.

◆ recovered_staging()

bool pulp::project_package::PackageWriter::recovered_staging ( ) const
noexcept

Reports whether opening reclaimed a private temp left by an interrupted writer.

◆ root()

const std::filesystem::path & pulp::project_package::PackageWriter::root ( ) const
noexcept

Returns the canonical stable package root.

◆ stage_blob()

runtime::Result< BlobReference, PackageError > pulp::project_package::PackageWriter::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.


The documentation for this class was generated from the following file:
  • /home/runner/work/pulp/pulp/core/project_package/include/pulp/project_package/project_package.hpp