Relational NT
A relational database kernel shaped around NT-style object management.
Loading...
Searching...
No Matches
nt::ObjectManager::Session Class Reference

Registry object representing an active connection's session. More...

#include <ObjectManager.h>

Inheritance diagram for nt::ObjectManager::Session:
nt::ObjectManager::IObject

Public Attributes

void * connection_context = nullptr
std::map< std::string, std::string > branch_overrides

Detailed Description

Registry object representing an active connection's session.

connection_context carries whatever auth/connection metadata the caller passed to rnt_session_open. The runtime treats it as an opaque pointer; ownership of the pointee is the caller's concern.

branch_overrides maps a branch name to the BRANCH_TREE root this session should see for that branch, instead of the global HEAD. NamespaceReferenceManager::Resolve consults the override first when a path of the form /system/sessions/<X>/branches/<name>/... is requested, falling back to the global /system/branches/<name> lookup when no override is present.

The session→branch reference direction is intentional: global branches do not track viewing sessions, which keeps the hot path cheap. GC of a stale snapshot must walk all sessions' override maps to discover live references — amortised cost only paid at GC time. A reverse index can be added later if session counts make the walk hot.


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