Skip to main content

Class: InMemorySpendDayStore

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:383

A store held in memory, for tests and for one process that admits one reservation at a time. It takes no lock, so two admissions awaited at once can both read the same total; a service that admits concurrently implements SpendDayStore on tables whose day row its transaction locks. It holds fenced and operation reservations, and each of its operation methods reads and writes its rows in one step on the event loop, before it awaits anything.

Implements​

Constructors​

Constructor​

new InMemorySpendDayStore(): InMemorySpendDayStore

Returns​

InMemorySpendDayStore

Properties​

fencedReservations​

readonly fencedReservations: true

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:385

It holds fenced reservations.

Implementation of​

SpendDayStore.fencedReservations


operationReservations​

readonly operationReservations: true

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:387

It holds operation reservations.

Implementation of​

SpendDayStore.operationReservations

Methods​

addFencedReservation()​

addFencedReservation(reservation): Promise<string>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:402

Records a reservation made with requireFence and adds it to its day's open total.

Parameters​

reservation​
created​

Date

day​

string

expires​

Date

kind​

string

micro​

number

Returns​

Promise<string>

Implementation of​

SpendDayStore.addFencedReservation


addOperationReservation()​

addOperationReservation(row): Promise<string | null>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:462

Records an operation's row and run 1, or answers null when the operation has one. The check and the record are one synchronous step, so of two admissions of one operation made at once, one records the row.

Parameters​

row​
created​

Date

day​

string

expires​

Date

kind​

string

leaseUntil​

Date

micro​

number

operation​

string

runMicro​

number

Returns​

Promise<string | null>

Implementation of​

SpendDayStore.addOperationReservation


addReservation()​

addReservation(reservation): Promise<string>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:407

Records a reservation and adds it to its day's open total.

Parameters​

reservation​
created​

Date

day​

string

expires​

Date

kind​

string

micro​

number

requireFence?​

boolean

Returns​

Promise<string>

Implementation of​

SpendDayStore.addReservation


beginRun()​

beginRun(id, run): Promise<RunBegin>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:481

A run's beginning; the store takes no lock and runs one call at a time on the event loop (see the class).

Parameters​

id​

string

run​
at​

Date

leaseUntil​

Date

maxRuns​

number

runMicro​

number

Returns​

Promise<RunBegin>

Implementation of​

SpendDayStore.beginRun


deferReservation()​

deferReservation(id, retryAt, evidence): Promise<boolean>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:449

Defers an open reservation's next check.

Parameters​

id​

string

retryAt​

Date

evidence​

SpendFenceEvidence | undefined

Returns​

Promise<boolean>

Implementation of​

SpendDayStore.deferReservation


endRun()​

endRun(id, end): Promise<RunEnd>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:495

A run's end, in one step.

Parameters​

id​

string

end​
at​

Date

close​

boolean

run​

number

settledMicro​

number

Returns​

Promise<RunEnd>

Implementation of​

SpendDayStore.endRun


expiredReservations()​

expiredReservations(at): Promise<OpenReservation[]>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:437

The open reservations whose time is up and whose next check, when deferred, has come; an operation's row only once no run holds a live lease, listed at its recorded figure.

Parameters​

at​

Date

Returns​

Promise<OpenReservation[]>

Implementation of​

SpendDayStore.expiredReservations


lockDay()​

lockDay(day): Promise<number>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:395

Makes the day when missing and answers its committed total (it takes no lock: see the class).

Parameters​

day​

string

Returns​

Promise<number>

Implementation of​

SpendDayStore.lockDay


openOperationReservation()​

openOperationReservation(operation): Promise<OperationReservation | null>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:473

The operation's row, copied.

Parameters​

operation​

string

Returns​

Promise<OperationReservation | null>

Implementation of​

SpendDayStore.openOperationReservation


renewRun()​

renewRun(id, renew): Promise<boolean>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:511

A lease's renewal by the run that holds it, in one step.

Parameters​

id​

string

renew​
at​

Date

leaseUntil​

Date

run​

number

Returns​

Promise<boolean>

Implementation of​

SpendDayStore.renewRun


runOf()​

runOf(id, run): { boundMicro: number; settledMicro: number | null; } | undefined

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:519

A run's own row, for tests.

Parameters​

id​

string

run​

number

Returns​

{ boundMicro: number; settledMicro: number | null; } | undefined


settleReservation()​

settleReservation(id, settledMicro, at): Promise<boolean>

Defined in: packages/agentos/src/safety/runtime/SpendReservations.ts:422

Settles an open reservation once, held to its amount.

Parameters​

id​

string

settledMicro​

number

at​

Date

Returns​

Promise<boolean>

Implementation of​

SpendDayStore.settleReservation