Skip to content

ludus::resources::Manager

Ludus Wiki · API overview · Browse API

Class

Fixed-capacity coordinator for immutable catalog snapshots on one control owner. All methods, lease destruction and borrowed-view use occur on that owner. Workers operate only through adapter-owned immutable inputs and durable results. Required DAGs and explicit atomic replacement are supported; no concurrent producer queue, automatic file watching, streamed coverage or idle LRU is implied.

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

#include <ludus/runtime/resources/manager.h>
class ludus::resources::Manager final

Methods

Manager

ludus::resources::Manager::Manager() noexcept=default
Construct without allocation; Initialize performs fallible setup.

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

~Manager

ludus::resources::Manager::~Manager() noexcept
Reclaim fixed storage.

Precondition

Shutdown has returned Ok; adapters outlive this call.

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Manager

ludus::resources::Manager::Manager(const Manager &)=delete
Coordinator identity and ownership cannot be copied.

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

operator=

Manager & ludus::resources::Manager::operator=(const Manager &)=delete
Coordinator identity and ownership cannot be assigned.

Related types: Manager

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Initialize

Status ludus::resources::Manager::Initialize(const content::Catalog &catalog, const Adapter *adapters, usize count, const Config &config={}, const DependencyGraph &graph={}, FailureInfo *diagnostic=nullptr) noexcept
Copy a catalog snapshot, required DAG and up to eight distinct adapters. Reinitialization is allowed only after Shutdown returns Ok, with a fresh owner. Failed setup preserves the previous drained incarnation and all outputs. Catalog files are not read. Adapter input snapshots/profiles must match this catalog and remain immutable. Graph cycles/missing IDs return Cycle/NotFound; diagnostic, when nonnull, receives bounded failure provenance on graph errors. A required closure is admitted as one reservation before adapter dispatch. Reinitialization transiently owns the drained old and candidate control blocks; MetadataBytes limits each block, not that temporary combined process footprint.

Related types: content::Catalog · usize · Status · Adapter · Config · DependencyGraph · FailureInfo

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Resolve

Status ludus::resources::Manager::Resolve(const content::ResourceId &id, content::Kind type, AssetHandle &output) const noexcept
Exact ID/type lookup with no I/O or preparation. Output must be empty; failure preserves it. Logical handles survive payload retirement.

Related types: content::Kind · content::ResourceId · Status · AssetHandle

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

OpenScope

Status ludus::resources::Manager::OpenScope(const content::ResourceId &name, ScopeHandle &output) noexcept
Copy a valid nonempty scope name; output must be empty. No resource work.

Related types: content::ResourceId · Status · ScopeHandle

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

BeginAcquire

Status ludus::resources::Manager::BeginAcquire(ScopeHandle scope, AssetHandle asset, RequestHandle &output) noexcept
Reserve durable request, candidate/version and peak capacity before accepting. The complete required closure must fit (at most eight nodes); duplicate leaves/operations are charged once. Equal asset/snapshot/epoch work shares an operation; a resident hit still returns a request. Empty output required; failure acquires no ownership.

Related types: Status · AssetHandle · ScopeHandle · RequestHandle

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

GetRequest

Status ludus::resources::Manager::GetRequest(RequestHandle request, RequestInfo &output) const noexcept
Nonblocking durable observation; output preserved for an invalid token.

Related types: Status · RequestHandle · RequestInfo

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

TakeLease

Status ludus::resources::Manager::TakeLease(RequestHandle request, Lease &output) noexcept
Transfer Ready ownership once into an empty move-only lease. Pending or failure preserves both outputs; lease-table saturation preserves Ready.

Related types: Lease · Status · RequestHandle

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Cancel

Status ludus::resources::Manager::Cancel(RequestHandle request) noexcept
Drop only this request's demand/ready hold; retain Cancelled until consumed. No worker/device wait; cancellation remains available under saturation.

Related types: Status · RequestHandle

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

EndRequest

Status ludus::resources::Manager::EndRequest(RequestHandle request) noexcept
Cancel if needed, discard durable outcome and invalidate the request.

Related types: Status · RequestHandle

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Borrow

Status ludus::resources::Manager::Borrow(LeaseToken lease, content::Kind type, const void *&output) const noexcept
Borrow an immutable exact-version payload after type/epoch validation. Output preserved on failure; retain the lease and use only on control owner.

Related types: content::Kind · Status · LeaseToken

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Release

Status ludus::resources::Manager::Release(LeaseToken lease) noexcept
Consume one live token; repeated/foreign release fails. Never waits.

Related types: Status · LeaseToken

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

BorrowDependency

Status ludus::resources::Manager::BorrowDependency(LeaseToken parent, const content::ResourceId &child, content::Kind type, const void *&output) const noexcept
Borrow a direct dependency of this exact parent lease, preserving output on failure. The parent pins it through physical retirement; use on owner.

Related types: content::Kind · content::ResourceId · Status · LeaseToken

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

BeginReplacement

Status ludus::resources::Manager::BeginReplacement(const content::Catalog &catalog, const Adapter *adapters, usize count, const DependencyGraph &graph, const AssetHandle *roots, usize rootCount, TransactionHandle &output, FailureInfo *diagnostic=nullptr) noexcept
Stage a complete desired root set against copied catalog/adapters/graph. Identities/types must match initialization; paths, edges and profiles may change. roots are logical handles from this manager (1..8, duplicates deduplicated). After root-token/output validation, new revisions supersede older attempts even if later graph validation/admission fails; retry the same desired revision after failed admission, never a committed one. Failure owns no new work, preserves output/current bindings, and may populate diagnostic. Providers for every admitted snapshot outlive Shutdown returning Ok.

Related types: content::Catalog · usize · TransactionHandle · Status · AssetHandle · Adapter · DependencyGraph · FailureInfo

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

GetTransaction

Status ludus::resources::Manager::GetTransaction(TransactionHandle transaction, TransactionInfo &output) const noexcept
Observe durable preparation/commit/failure without publishing; invalid token preserves output. Service advances preparation and detects dependency failure.

Related types: TransactionHandle · Status · TransactionInfo

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

OpenTransactionScope

Status ludus::resources::Manager::OpenTransactionScope(TransactionHandle transaction, const content::ResourceId &name, ScopeHandle &output) noexcept
Open a named private scope on an active candidate snapshot. It can acquire and validate candidate roots without exposing them to ordinary new scopes. Claimed leases survive cancellation and block that scope's close as usual.

Related types: content::ResourceId · TransactionHandle · Status · ScopeHandle

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Commit

Status ludus::resources::Manager::Commit(TransactionHandle transaction) noexcept
At an owner/reader boundary, preflight all root usability then switch the entire binding set with no allocation/callback/fallible step after preflight. Old scopes/leases retain old bindings. Pending/failure changes no current set. Only the latest desired revision can commit; success remains observable.

Related types: TransactionHandle · Status

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

CancelTransaction

Status ludus::resources::Manager::CancelTransaction(TransactionHandle transaction) noexcept
Cancel an uncommitted attempt without a normal queue slot or worker wait. Keep the outcome until EndTransaction; candidate/private-scope ownership drains.

Related types: TransactionHandle · Status

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

EndTransaction

Status ludus::resources::Manager::EndTransaction(TransactionHandle transaction) noexcept
Consume the outcome; cancel active work first. Never unpublishes a committed set.

Related types: TransactionHandle · Status

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

GetScope

Status ludus::resources::Manager::GetScope(ScopeHandle scope, ScopeInfo &output) const noexcept
Copy bounded scope provenance and blockers; invalid handles preserve output.

Related types: Status · ScopeHandle · ScopeInfo

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

CloseScope

Status ludus::resources::Manager::CloseScope(ScopeHandle scope) noexcept
Close admission and end scope requests. External leases are never revoked; Pending until they are released. Ok invalidates the scope, which must then no longer be polled. Name/lease records identify blockers to the caller.

Related types: Status · ScopeHandle

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Service

void ludus::resources::Manager::Service(uint32 workItems=8) noexcept
Visit at most workItems operation/version/transaction records (default eight), using rotating bounded scans. Observe completion/readiness and poll retirement. No allocation in the core; adapter cold stages can perform bounded work.

Related types: uint32

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Inspect

Snapshot ludus::resources::Manager::Inspect() const noexcept
Copy owner-side counters without allocation; an uninitialized manager is empty.

Related types: Snapshot

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h

Shutdown

Status ludus::resources::Manager::Shutdown() noexcept
Permanently close admission, cancel/end transactions and requests, and drop current root pins. Pending while leases or adapter work/retirement remain. Release leases and Service, then poll; Ok permits destruction/reinitialization. Never joins or guesses quiescence.

Related types: Status

Declared in modules/runtime/resources/include/ludus/runtime/resources/manager.h