NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
neograph::graph::InMemoryCheckpointStore Class Reference

In-memory checkpoint store for testing and single-process use. More...

#include <checkpoint.h>

Inheritance diagram for neograph::graph::InMemoryCheckpointStore:
[legend]
Collaboration diagram for neograph::graph::InMemoryCheckpointStore:
[legend]

Public Member Functions

size_t blob_count () const
 Number of distinct channel-value blobs currently held (test helper).
 
void clear_writes (const std::string &thread_id, const std::string &parent_checkpoint_id) override
 Discard pending writes for a parent checkpoint once its successor super-step has been fully committed.
 
void delete_thread (const std::string &thread_id) override
 Delete all checkpoints for a thread.
 
std::vector< PendingWrite > get_writes (const std::string &thread_id, const std::string &parent_checkpoint_id) override
 Load all pending writes attached to a parent checkpoint.
 
std::vector< Checkpoint > list (const std::string &thread_id, int limit=100) override
 List checkpoints for a thread, most recently saved first, one entry per ID; the first entry is load_latest().
 
std::optional< Checkpoint > load_by_id (const std::string &id) override
 Load a checkpoint by its unique ID.
 
std::optional< Checkpoint > load_latest (const std::string &thread_id) override
 Load the most recently saved checkpoint for a thread.
 
size_t pending_writes_count (const std::string &thread_id, const std::string &parent_checkpoint_id) const
 Get the number of pending writes for a parent checkpoint (test helper).
 
void put_writes (const std::string &thread_id, const std::string &parent_checkpoint_id, const PendingWrite &write) override
 Record a successful node execution within an in-progress super-step.
 
bool requires_managed_budget (const std::string &thread_id) override
 Whether this trusted checkpoint namespace/thread has ever held an active standalone managed bank.
 
bool retains_native_checkpoint () const noexcept override
 Describes real local C++ custody, not a financial admission/grant.
 
void save (const Checkpoint &cp) override
 Save a checkpoint.
 
size_t size () const
 Get the total number of stored checkpoints (test helper).
 

Detailed Description

In-memory checkpoint store for testing and single-process use.

Stores checkpoints in memory using std::map. Thread-safe via mutex. Not suitable for production use where persistence across restarts is needed.

Incremental storage (channel-blob deduplication)

Channel values are deduplicated internally by (thread_id, channel, version) — every write bumps Channel::version, so the same value at the same version across multiple checkpoints is stored exactly once. In a typical run only one or two channels change per super-step, so a 1000-step session pays roughly (channels + steps) × value_size instead of channels × steps × value_size.

The dedup is purely an internal storage optimization: callers always receive (and pass in) Checkpoints whose channel_values carry full inline data. Engine code, tests, and migration paths are unaffected.

Persistent CheckpointStore implementations are encouraged to apply the same pattern in their own backends (e.g. a (channel, version) → blob table referenced from a (checkpoint_id, channel) → version table) to get the same on-disk savings.

Definition at line 619 of file checkpoint.h.

Member Function Documentation

◆ blob_count()

size_t neograph::graph::InMemoryCheckpointStore::blob_count ( ) const

Number of distinct channel-value blobs currently held (test helper).

Use this to verify dedup: writing N identical-state checkpoints leaves blob_count() at one entry per channel, not N × channels.

◆ clear_writes()

void neograph::graph::InMemoryCheckpointStore::clear_writes ( const std::string &  ,
const std::string &   
)
overridevirtual

Discard pending writes for a parent checkpoint once its successor super-step has been fully committed.

Called by the engine after the new super-step checkpoint has been durably saved, so pending writes are never cleared while still being the only record of a node's output.

Parameters
thread_idThread identifier.
parent_checkpoint_idCheckpoint whose pending writes to clear.

Reimplemented from neograph::graph::CheckpointStore.

◆ delete_thread()

void neograph::graph::InMemoryCheckpointStore::delete_thread ( const std::string &  thread_id)
overridevirtual

Delete all checkpoints for a thread.

Parameters
thread_idThread identifier to delete.

Reimplemented from neograph::graph::CheckpointStore.

◆ get_writes()

std::vector< PendingWrite > neograph::graph::InMemoryCheckpointStore::get_writes ( const std::string &  ,
const std::string &   
)
overridevirtual

Load all pending writes attached to a parent checkpoint.

Called by the engine on resume to skip already-completed tasks. Default implementation returns an empty vector.

Parameters
thread_idThread identifier.
parent_checkpoint_idCheckpoint whose pending writes to load.
Returns
Vector of pending writes, in insertion order.

Reimplemented from neograph::graph::CheckpointStore.

◆ list()

std::vector< Checkpoint > neograph::graph::InMemoryCheckpointStore::list ( const std::string &  thread_id,
int  limit = 100 
)
overridevirtual

List checkpoints for a thread, most recently saved first, one entry per ID; the first entry is load_latest().

Parameters
thread_idThread identifier.
limitMaximum number of checkpoints to return (default: 100).
Returns
Vector of checkpoints.

Reimplemented from neograph::graph::CheckpointStore.

◆ load_by_id()

std::optional< Checkpoint > neograph::graph::InMemoryCheckpointStore::load_by_id ( const std::string &  id)
overridevirtual

Load a checkpoint by its unique ID.

Parameters
idCheckpoint UUID.
Returns
The checkpoint, or std::nullopt if not found.

Reimplemented from neograph::graph::CheckpointStore.

◆ load_latest()

std::optional< Checkpoint > neograph::graph::InMemoryCheckpointStore::load_latest ( const std::string &  thread_id)
overridevirtual

Load the most recently saved checkpoint for a thread.

"Latest" is save order, not timestamp or step: a later run on a thread restarts at step 0, and saves can share a millisecond.

Parameters
thread_idThread identifier.
Returns
The latest checkpoint, or std::nullopt if none exists.

Reimplemented from neograph::graph::CheckpointStore.

◆ put_writes()

void neograph::graph::InMemoryCheckpointStore::put_writes ( const std::string &  ,
const std::string &  ,
const PendingWrite &   
)
overridevirtual

Record a successful node execution within an in-progress super-step.

Called by the engine immediately after a node returns successfully and before its writes are applied to the shared GraphState. The parent_checkpoint_id anchors the pending write to the super-step boundary it was produced under.

Default implementation is a no-op so custom stores keep working; such stores fall back to "full super-step replay" on resume.

Parameters
thread_idThread identifier.
parent_checkpoint_idCheckpoint marking the start of the in-progress super-step.
writeThe pending write record to persist.

Reimplemented from neograph::graph::CheckpointStore.

◆ requires_managed_budget()

bool neograph::graph::InMemoryCheckpointStore::requires_managed_budget ( const std::string &  thread_id)
overridevirtual

Whether this trusted checkpoint namespace/thread has ever held an active standalone managed bank.

Saving stripped state or deleting checkpoints must not clear the obligation. This flag grants no currency; the original complete bank must still authenticate before restoration. Unsupported backends throw rather than authorize an absent bank.

Reimplemented from neograph::graph::CheckpointStore.

◆ save()

void neograph::graph::InMemoryCheckpointStore::save ( const Checkpoint &  cp)
overridevirtual

Save a checkpoint.

Saving an ID the thread already holds replaces that checkpoint and makes it the thread's latest, as if it were saved for the first time.

Parameters
cpThe checkpoint to persist.

Reimplemented from neograph::graph::CheckpointStore.

◆ size()

size_t neograph::graph::InMemoryCheckpointStore::size ( ) const

Get the total number of stored checkpoints (test helper).

Returns
Total checkpoint count across all threads.

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