class WorkerArrayStore implements Store

Hold rate limiter state local to one cooperative worker.

Transitions must not introduce a suspension point because worker-local atomicity depends on each read, calculation, and write running to completion.

Traits

Properties

protected array<string, array{value: int, secondary_value: int, expires_at: int}> $states

The numeric rate limiter state held for this worker's lifetime.

Methods

calculateConsume(AdmissionPolicy $policy, int $now, int $value, int $secondaryValue, int $expiresAt)

Calculate an admission decision and update accepted state values.

array
calculateMany(array $policies, int $now, array $states)

Calculate ordered group decisions against staged state.

calculateInspection(AdmissionPolicy|Backoff|Cooldown $policy, int $now, int $value, int $secondaryValue, int $expiresAt)

Calculate a non-mutating policy inspection.

calculateCooldownBlock(int $durationMicroseconds, int $now, int $value, int $secondaryValue, int $expiresAt)

Calculate a cooldown extension and update its expiry.

calculateFailure(Backoff $backoff, int $now, int $value, int $secondaryValue, int $expiresAt)

Calculate a failure transition and update its state values.

int
currentTimeInMicroseconds()

Get the current epoch time in microseconds.

consume(string $key, AdmissionPolicy $policy)

Atomically consume capacity from an admission policy.

array
consumeMany(array $policies)

Consume all policies together, leaving state unchanged on denial.

block(string $key, int $durationMicroseconds)

Atomically extend a cooldown block.

inspect(string $key, AdmissionPolicy|Backoff|Cooldown $policy)

Inspect a policy without mutating its state.

recordFailure(string $key, Backoff $backoff)

Record a failure against a backoff policy.

bool
clear(string $key)

Clear the state for a physical limiter key.

array
state(string $key)

Get the numeric state for a physical key.

Details

protected LimitResult calculateConsume(AdmissionPolicy $policy, int $now, int $value, int $secondaryValue, int $expiresAt)

Calculate an admission decision and update accepted state values.

Parameters

AdmissionPolicy $policy
int $now
int $value
int $secondaryValue
int $expiresAt

Return Value

LimitResult

protected array calculateMany(array $policies, int $now, array $states)

Calculate ordered group decisions against staged state.

Parameters

array $policies
int $now
array $states

Return Value

array

in CalculatesRateLimits at line 118
protected LimitResult|BackoffResult|CooldownResult calculateInspection(AdmissionPolicy|Backoff|Cooldown $policy, int $now, int $value, int $secondaryValue, int $expiresAt)

Calculate a non-mutating policy inspection.

Parameters

AdmissionPolicy|Backoff|Cooldown $policy
int $now
int $value
int $secondaryValue
int $expiresAt

Return Value

LimitResult|BackoffResult|CooldownResult

in CalculatesRateLimits at line 172
protected CooldownResult calculateCooldownBlock(int $durationMicroseconds, int $now, int $value, int $secondaryValue, int $expiresAt)

Calculate a cooldown extension and update its expiry.

Parameters

int $durationMicroseconds
int $now
int $value
int $secondaryValue
int $expiresAt

Return Value

CooldownResult

in CalculatesRateLimits at line 190
protected BackoffResult calculateFailure(Backoff $backoff, int $now, int $value, int $secondaryValue, int $expiresAt)

Calculate a failure transition and update its state values.

Parameters

Backoff $backoff
int $now
int $value
int $secondaryValue
int $expiresAt

Return Value

BackoffResult

in CalculatesRateLimits at line 638
protected int currentTimeInMicroseconds()

Get the current epoch time in microseconds.

Return Value

int

at line 30
LimitResult consume(string $key, AdmissionPolicy $policy)

Atomically consume capacity from an admission policy.

Parameters

string $key
AdmissionPolicy $policy

Return Value

LimitResult

at line 59
array consumeMany(array $policies)

Consume all policies together, leaving state unchanged on denial.

Parameters

array $policies

Return Value

array

at line 87
CooldownResult block(string $key, int $durationMicroseconds)

Atomically extend a cooldown block.

Parameters

string $key
int $durationMicroseconds

Return Value

CooldownResult

at line 113
LimitResult|BackoffResult|CooldownResult inspect(string $key, AdmissionPolicy|Backoff|Cooldown $policy)

Inspect a policy without mutating its state.

Parameters

string $key
AdmissionPolicy|Backoff|Cooldown $policy

Return Value

LimitResult|BackoffResult|CooldownResult

at line 131
BackoffResult recordFailure(string $key, Backoff $backoff)

Record a failure against a backoff policy.

Parameters

string $key
Backoff $backoff

Return Value

BackoffResult

at line 155
bool clear(string $key)

Clear the state for a physical limiter key.

Parameters

string $key

Return Value

bool

at line 171
protected array state(string $key)

Get the numeric state for a physical key.

Parameters

string $key

Return Value

array