module arch.node.engines.mempool_worker_environment; import prelude open; import arch.node.engines.shard_messages open; import arch.node.engines.executor_messages open; import arch.node.engines.mempool_worker_messages open; import arch.node.types.engine_environment open; import arch.node.types.identities open; import arch.node.types.anoma_message as Anoma open; type MempoolWorkerLocalState KVSKey KVSDatum Executable := mkMempoolWorkerLocalState@{ batch_number : BatchNumber; transactions : Map TxFingerprint (TransactionCandidate KVSKey KVSKey Executable); transactionEngines : Map EngineID TxFingerprint; locks_acquired : List (Pair EngineID KVSLockAcquiredMsg); seen_all_writes : TxFingerprint; seen_all_reads : TxFingerprint; execution_summaries : Map TxFingerprint (ExecutorFinishedMsg KVSKey KVSDatum); gensym : TxFingerprint; }; syntax alias MempoolWorkerMailboxState := Unit; syntax alias MempoolWorkerTimerHandle := Unit; MempoolWorkerEnv (KVSKey KVSDatum Executable : Type) : Type := EngineEnv (MempoolWorkerLocalState KVSKey KVSDatum Executable) MempoolWorkerMailboxState MempoolWorkerTimerHandle (Anoma.PreMsg KVSKey KVSDatum Executable); module mempool_worker_environment_example; mempoolWorkerEnv : MempoolWorkerEnv String String ByteString := mkEngineEnv@{ localState := mkMempoolWorkerLocalState@{ batch_number := 0; transactions := Map.empty; transactionEngines := Map.empty; locks_acquired := []; seen_all_writes := 0; seen_all_reads := 0; execution_summaries := Map.empty; gensym := 0; }; mailboxCluster := Map.empty; acquaintances := Set.empty; timers := []; }; end;