module arch.node.engines.router_behaviour;
import arch.node.engines.router_messages open;
import arch.node.engines.router_config open;
import arch.node.engines.router_environment open;
import arch.node.types.basics open;
import arch.node.types.identities open;
import arch.node.types.messages open;
import arch.node.types.engine open;
import arch.node.types.anoma as Anoma open;
RouterActionArguments : Type := Unit;
RouterAction : Type :=
Action
RouterLocalCfg
RouterLocalState
RouterMailboxState
RouterTimerHandle
RouterActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
RouterActionInput : Type :=
ActionInput
RouterLocalCfg
RouterLocalState
RouterMailboxState
RouterTimerHandle
RouterActionArguments
Anoma.Msg;
RouterActionEffect : Type :=
ActionEffect
RouterLocalState
RouterMailboxState
RouterTimerHandle
Anoma.Msg
Anoma.Cfg
Anoma.Env;
RouterActionExec : Type :=
ActionExec
RouterLocalCfg
RouterLocalState
RouterMailboxState
RouterTimerHandle
RouterActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
exampleReplyAction (input : RouterActionInput) : Option RouterActionEffect :=
TODO;
exampleReplyActionLabel : RouterActionExec := Seq [exampleReplyAction];
RouterGuard : Type :=
Guard
RouterLocalCfg
RouterLocalState
RouterMailboxState
RouterTimerHandle
RouterActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
RouterGuardOutput : Type :=
GuardOutput
RouterLocalCfg
RouterLocalState
RouterMailboxState
RouterTimerHandle
RouterActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
RouterGuardEval : Type :=
GuardEval
RouterLocalCfg
RouterLocalState
RouterMailboxState
RouterTimerHandle
RouterActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
exampleReplyGuard
(trigger : RouterTimestampedTrigger)
(cfg : RouterCfg)
(env : RouterEnv)
: Option RouterGuardOutput := TODO;
RouterBehaviour : Type :=
EngineBehaviour
RouterLocalCfg
RouterLocalState
RouterMailboxState
RouterTimerHandle
RouterActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
module router_behaviour_example;
exRouterBehaviour : RouterBehaviour :=
mkEngineBehaviour@{
guards := First [exampleReplyGuard];
};
end;