Acquire a ref-counted projection.
If no entry exists for spec.key, one is created (allocating a
StreamStore seeded with spec.initial) and — when a
thread is currently bound — its runtime is opened immediately.
If an entry already exists, its ref count is incremented and the
existing store is returned.
The returned release() is idempotent: calling it more than once
is a no-op. When the ref count drops to zero, the entry is removed
and its runtime disposed (best-effort, never throws into callers).
Safe to call from any framework lifecycle hook. Subsequent calls
for the same spec.key always return the same store reference
for the lifetime of the controller, so consumers can rely on store
identity.
acquire<T>(spec: ProjectionSpec<T>): AcquiredProjection<T>| Name | Type | Description |
|---|---|---|
spec* | ProjectionSpec<T> | Projection contract; the registry keys off |