Skip to content
Juvix imports

module arch.node.engines.local_key_value_storage_environment;

import prelude open;
import arch.node.engines.local_key_value_storage_messages open;
import arch.node.types.engine open;
import arch.node.types.messages open;
import arch.node.types.identities open;
import arch.node.types.anoma_message as Anoma open;

Local Key-Value Storage Environment

Overview

The Local Key-Value Storage Engine provides local storage and retrieval of data in a key-value format.

Auxiliary Juvix code

axiom getNotificationTargets : StorageKey -> List EngineID;

axiom advanceTime : EpochTimestamp -> EpochTimestamp;

Mailbox state types

LocalKVStorageMailboxState

syntax alias LocalKVStorageMailboxState := Unit;

Local state

LocalKVStorageLocalState

type LocalKVStorageLocalState :=
mkLocalKVStorageLocalState@{
storage : Map StorageKey StorageValue;
localClock : EpochTimestamp;
};
Arguments
storage
The key-value store mapping keys to values.
localClock
The local time of the engine, used to make timestamps.

Timer handles

LocalKVStorageTimerHandle

syntax alias LocalKVStorageTimerHandle := Unit;

LocalKVStorageTimestampedTrigger

LocalKVStorageTimestampedTrigger : Type :=
TimestampedTrigger LocalKVStorageTimerHandle Anoma.Msg;

The Local Key-Value Storage Environment

LocalKVStorageEnv

LocalKVStorageEnv : Type :=
EngineEnv
LocalKVStorageLocalState
LocalKVStorageMailboxState
LocalKVStorageTimerHandle
Anoma.Msg;

Instantiation

localKVStorageEnv : LocalKVStorageEnv :=
mkEngineEnv@{
localState :=
mkLocalKVStorageLocalState@{
storage := Map.empty;
localClock := 0;
};
mailboxCluster := Map.empty;
acquaintances := Set.empty;
timers := [];
};