module arch.node.engines.transport_protocol_behaviour;
import arch.node.engines.transport_protocol_messages open;
import arch.node.engines.transport_protocol_config open;
import arch.node.engines.transport_protocol_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;
TransportProtocolActionArguments : Type := Unit;
TransportProtocolAction : Type :=
Action
TransportProtocolLocalCfg
TransportProtocolLocalState
TransportProtocolMailboxState
TransportProtocolTimerHandle
TransportProtocolActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
TransportProtocolActionInput : Type :=
ActionInput
TransportProtocolLocalCfg
TransportProtocolLocalState
TransportProtocolMailboxState
TransportProtocolTimerHandle
TransportProtocolActionArguments
Anoma.Msg;
TransportProtocolActionEffect : Type :=
ActionEffect
TransportProtocolLocalState
TransportProtocolMailboxState
TransportProtocolTimerHandle
Anoma.Msg
Anoma.Cfg
Anoma.Env;
TransportProtocolActionExec : Type :=
ActionExec
TransportProtocolLocalCfg
TransportProtocolLocalState
TransportProtocolMailboxState
TransportProtocolTimerHandle
TransportProtocolActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
exampleReplyAction
(input : TransportProtocolActionInput)
: Option TransportProtocolActionEffect := TODO;
exampleReplyActionLabel : TransportProtocolActionExec :=
Seq [exampleReplyAction];
TransportProtocolGuard : Type :=
Guard
TransportProtocolLocalCfg
TransportProtocolLocalState
TransportProtocolMailboxState
TransportProtocolTimerHandle
TransportProtocolActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
TransportProtocolGuardOutput : Type :=
GuardOutput
TransportProtocolLocalCfg
TransportProtocolLocalState
TransportProtocolMailboxState
TransportProtocolTimerHandle
TransportProtocolActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
TransportProtocolGuardEval : Type :=
GuardEval
TransportProtocolLocalCfg
TransportProtocolLocalState
TransportProtocolMailboxState
TransportProtocolTimerHandle
TransportProtocolActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
exampleReplyGuard
(trigger : TransportProtocolTimestampedTrigger)
(cfg : TransportProtocolCfg)
(env : TransportProtocolEnv)
: Option TransportProtocolGuardOutput := TODO;
TransportProtocolBehaviour : Type :=
EngineBehaviour
TransportProtocolLocalCfg
TransportProtocolLocalState
TransportProtocolMailboxState
TransportProtocolTimerHandle
TransportProtocolActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
module transport_protocol_behaviour_example;
exTransportProtocolBehaviour : TransportProtocolBehaviour :=
mkEngineBehaviour@{
guards := First [exampleReplyGuard];
};
end;