pub struct AtomicPublication { /* private fields */ }Expand description
Private hidden-sibling candidate that has not yet been published.
Implementations§
Source§impl AtomicPublication
impl AtomicPublication
Sourcepub fn prepare(
output_path: &Path,
document: &PromotionDocument,
) -> PromotionResult<Self>
pub fn prepare( output_path: &Path, document: &PromotionDocument, ) -> PromotionResult<Self>
Constructs and seals a candidate in a brand-new hidden sibling.
The parent and candidate are descriptor-rooted with symlink resolution
disabled. Both files use O_EXCL, are fsynced, rehashed, checked for a
hard-link count of one, and changed to mode 0400; the directory becomes
mode 0500. Existing output or temporary names are rejected.
§Errors
Returns FailureCode::Publication for any path, identity, write,
recheck, permission, or exclusivity failure.
Sourcepub fn publish<F>(
self,
burn: DurablePromotionBurn,
revalidate_all_inputs: F,
) -> PromotionResult<PublicationReceipt>
pub fn publish<F>( self, burn: DurablePromotionBurn, revalidate_all_inputs: F, ) -> PromotionResult<PublicationReceipt>
Revalidates the durable burn and every caller-owned immutable input,
then atomically renames the sealed candidate with RENAME_NOREPLACE.
State was already appended and fsynced before this method can be called. Any failure or crash leaves the identity consumed and no success output.
§Errors
Returns the revalidation failure unchanged, or
FailureCode::Publication if the candidate cannot be atomically
published without overwrite.