icon: octicons/gear-24 search: exclude: false tags: - node-architecture - network-subsystem - engine - transport - engine-definition
Juvix imports
module arch.node.engines.transport_protocol;
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.engines.transport_protocol_behaviour open;
import arch.node.types.basics open;
import arch.node.types.engine open;
import arch.node.types.anoma as Anoma open;
open transport_protocol_config_example;
open transport_protocol_environment_example;
open transport_protocol_behaviour_example;
Transport Protocol Engine¶
Purpose¶
A Transport Protocol engine is responsible for accepting and initiating transport connections for one specific transport protocol, such as QUIC or TLS.
Engine components¶
- Transport Protocol Messages
- Transport Protocol Configuration
- Transport Protocol Environment
- Transport Protocol Behaviour
The type for a transport protocol engine¶
TransportProtocolEngine : Type :=
  Engine
    TransportProtocolLocalCfg
    TransportProtocolLocalState
    TransportProtocolMailboxState
    TransportProtocolTimerHandle
    TransportProtocolActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;
Example of a transport protocol engine¶
exTransportProtocolEngine : TransportProtocolEngine :=
  Engine.mk@{
    cfg := exTransportProtocolCfg;
    env := exTransportProtocolEnv;
    behaviour := exTransportProtocolBehaviour;
  };
Where exTransportProtocolCfg is defined as follows:
exTransportProtocolCfg : TransportProtocolCfg :=
  EngineCfg.mk@{
    node := PublicKey.Curve25519PubKey "0xabcd1234";
    name := "transport-protocol";
    cfg := TransportProtocolLocalCfg.mk;
  };
exTransportProtocolEnv is defined as follows:
exTransportProtocolEnv : TransportProtocolEnv :=
  EngineEnv.mk@{
    localState := TransportProtocolLocalState.mk;
    mailboxCluster := Map.empty;
    acquaintances := Set.empty;
    timers := [];
  };
and exTransportProtocolBehaviour is defined as follows:
module transport_protocol_behaviour_example;
  exTransportProtocolBehaviour : TransportProtocolBehaviour :=
    EngineBehaviour.mk@{
      guards := GuardEval.First [exampleReplyGuard];
    };
end;