Skip to content

icon: octicons/gear-24 search: exclude: false categories: - engine - node tags: - transport-connection-engine - engine-definition


Juvix imports

module arch.node.net.transport_connection;

import arch.node.net.transport_connection_messages open;
import arch.node.net.transport_connection_config open;
import arch.node.net.transport_connection_environment open;
import arch.node.net.transport_connection_behaviour open;
import arch.node.types.basics open;
import arch.node.types.engine open;
import arch.node.types.anoma as Anoma open;

open transport_connection_config_example;
open transport_connection_environment_example;
open transport_connection_behaviour_example;

Transport Connection 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

Type

TransportConnectionEngine : Type :=
Engine
TransportConnectionLocalCfg
TransportConnectionLocalState
TransportConnectionMailboxState
TransportConnectionTimerHandle
TransportConnectionActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;

Instantiation

exTransportConnectionEngine : TransportConnectionEngine :=
mkEngine@{
cfg := exTransportConnectionCfg;
env := exTransportConnectionEnv;
behaviour := exTransportConnectionBehaviour;
};

Where exTransportConnectionCfg is defined as follows:

exTransportConnectionCfg : TransportConnectionCfg :=
mkEngineCfg@{
node := Curve25519PubKey "0xabcd1234";
name := "transport-connection";
cfg := mkTransportConnectionLocalCfg;
};

exTransportConnectionEnv is defined as follows:

exTransportConnectionEnv : TransportConnectionEnv :=
mkEngineEnv@{
localState := mkTransportConnectionLocalState;
mailboxCluster := Map.empty;
acquaintances := Set.empty;
timers := [];
};

and exTransportConnectionBehaviour is defined as follows:

module transport_connection_behaviour_example;
exTransportConnectionBehaviour : TransportConnectionBehaviour :=
mkEngineBehaviour@{
guards := First [exampleReplyGuard];
};
end;