InMemoryNegotiationStore
@totemsdk/edge / InMemoryNegotiationStore
Class: InMemoryNegotiationStore
In-memory negotiation store. No crash guarantees — for development and tests only. Production must supply a durable implementation.
Implements
Constructors
Constructor
new InMemoryNegotiationStore(
outbox?):InMemoryNegotiationStore
Parameters
outbox?
Returns
InMemoryNegotiationStore
Methods
compareAndSet()
compareAndSet(
negotiationId,expectedRevision,next):Promise<boolean>
Atomically replace the record only if its current revision equals
expectedRevision. Returns false when the record was advanced by
another writer (stale transition).
Parameters
negotiationId
string
expectedRevision
number
next
Returns
Promise<boolean>
Implementation of
NegotiationStore.compareAndSet
create()
create(
record):Promise<void>
Parameters
record
Returns
Promise<void>
Implementation of
get()
get(
negotiationId):Promise<NegotiationRecord|undefined>
Parameters
negotiationId
string
Returns
Promise<NegotiationRecord | undefined>
Implementation of
getOutbox()
getOutbox():
OutboxStore
Expose the outbox read/write surface (dev mode + tests).
Returns
listRecoverable()
listRecoverable():
Promise<NegotiationRecord[]>
List recoverable (non-terminal) negotiations.
Returns
Promise<NegotiationRecord[]>
Implementation of
NegotiationStore.listRecoverable
listUndelivered()
listUndelivered():
Promise<OutboxEntry[]>
Returns
Promise<OutboxEntry[]>
markOutboxDelivered()
markOutboxDelivered(
messageId):Promise<void>
Parameters
messageId
string
Returns
Promise<void>
transitionAndEnqueue()
transitionAndEnqueue(
negotiationId,expectedRevision,next,outboxMessages):Promise<boolean>
Atomically perform a negotiation CAS AND enqueue outbox messages in ONE durable transaction. Returns false when the CAS failed (stale revision).
For SQLite/Postgres this MUST be a single DB transaction so that the economic transition and the protocol response commit or fail together.
The default falls back to a two-step (non-transactional) sequence. A durable store MUST override this to keep the crash window closed.
Parameters
negotiationId
string
expectedRevision
number
next
outboxMessages
Returns
Promise<boolean>