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

Durable broker operation receipt and idempotency ledger. More...

#include <control_operations.hpp>

Public Types

using WallClock = std::function<std::chrono::system_clock::time_point()>

Public Member Functions

 ControlOperationStore (ControlOperationStoreConfig config, WallClock clock=[] { return std::chrono::system_clock::now();})
 ~ControlOperationStore ()
 ControlOperationStore (const ControlOperationStore &)=delete
ControlOperationStore & operator= (const ControlOperationStore &)=delete
ControlOperationStoreResult open ()
bool is_open () const
ControlOperationStoreResult admit (ControlOperationBinding binding)
ControlOperationStoreResult replay (ControlOperationBinding binding)
 Resolves an existing idempotent receipt without admitting new work.
ControlOperationStoreResult begin (const ControlReceiptId &receipt_id)
 Atomically claims an admitted receipt for execution.
ControlOperationStoreResult transition (const ControlReceiptId &receipt_id, ControlReceiptState expected, ControlReceiptState next, ControlOperationResult result={})
ControlOperationStoreResult request_cancellation (const ControlReceiptId &receipt_id, std::string reason)
std::optional< ControlOperationReceipt > receipt (const ControlReceiptId &receipt_id) const
std::vector< ControlOperationReceipt > receipts () const

Detailed Description

Durable broker operation receipt and idempotency ledger.

The store owns its mutex and performs no callbacks while holding it. Broker identity/grant coordination must therefore happen outside this class; no broker lock needs to span filesystem I/O. open() must succeed before any other operation. It fails closed on malformed committed metadata and turns receipts left Running by a prior process into UnknownNeedsRefresh before accepting new admissions.

Member Typedef Documentation

◆ WallClock

using pulp::inspect::ControlOperationStore::WallClock = std::function<std::chrono::system_clock::time_point()>

Constructor & Destructor Documentation

◆ ControlOperationStore() [1/2]

pulp::inspect::ControlOperationStore::ControlOperationStore ( ControlOperationStoreConfig config,
WallClock clock = [] { return std::chrono::system_clock::now();} )
explicit

◆ ~ControlOperationStore()

pulp::inspect::ControlOperationStore::~ControlOperationStore ( )

◆ ControlOperationStore() [2/2]

pulp::inspect::ControlOperationStore::ControlOperationStore ( const ControlOperationStore & )
delete

Member Function Documentation

◆ admit()

ControlOperationStoreResult pulp::inspect::ControlOperationStore::admit ( ControlOperationBinding binding)

◆ begin()

ControlOperationStoreResult pulp::inspect::ControlOperationStore::begin ( const ControlReceiptId & receipt_id)

Atomically claims an admitted receipt for execution.

Cancellation and the receipt's absolute deadline are resolved durably before Running can become visible.

◆ is_open()

bool pulp::inspect::ControlOperationStore::is_open ( ) const

◆ open()

ControlOperationStoreResult pulp::inspect::ControlOperationStore::open ( )

◆ operator=()

ControlOperationStore & pulp::inspect::ControlOperationStore::operator= ( const ControlOperationStore & )
delete

◆ receipt()

std::optional< ControlOperationReceipt > pulp::inspect::ControlOperationStore::receipt ( const ControlReceiptId & receipt_id) const

◆ receipts()

std::vector< ControlOperationReceipt > pulp::inspect::ControlOperationStore::receipts ( ) const

◆ replay()

ControlOperationStoreResult pulp::inspect::ControlOperationStore::replay ( ControlOperationBinding binding)

Resolves an existing idempotent receipt without admitting new work.

◆ request_cancellation()

ControlOperationStoreResult pulp::inspect::ControlOperationStore::request_cancellation ( const ControlReceiptId & receipt_id,
std::string reason )

◆ transition()

ControlOperationStoreResult pulp::inspect::ControlOperationStore::transition ( const ControlReceiptId & receipt_id,
ControlReceiptState expected,
ControlReceiptState next,
ControlOperationResult result = {} )

The documentation for this class was generated from the following file: