This page defines OA-Gateway’s own terms, then the domain terms it borrows. Expansions are those that can be confirmed against the standards documents themselves, which are not shipped in this repository — see using a custom XSD for how the UCI schema is fetched. Where a standard does not establish an expansion, the entry describes the role the term plays in this repository.
The value that crosses the engine: id, route, string headers, content-type label, and an opaque Bytes payload. The engine reads only the route.
RouteKey
An address: topic plus an optional type_hint.
topic
The routing coordinate every envelope has. On the ActiveMQ path it equals the UCI message type name and the JMS/STOMP destination suffix.
type_hint
An optional discriminator within a topic — an OWP message name, a UCI message type. The engine only compares it for equality. None on a subscription means “every type on this topic”.
Adapter
A protocol plugin that owns its own I/O loop. It talks only to the engine, never to another adapter.
Engine
The in-process router. It is protocol-agnostic and does not parse payloads.
wildcard subscription
A subscription with type_hint: None, matching every type on its topic.
conversion
Mapping a payload between OMS JSON and UCI XML. Deliberately forgiving: an element the schema does not declare is carried rather than refused, and a value that does not fit its declared type is carried as written rather than coerced into fitting.
validation
Checking a payload against what the compiled schema states — declarations, occurrence ranges, alternations, abstract types, facets, and the primitive a value has to be. Separate from conversion, because a message can convert cleanly in both directions and still not be a valid instance of the standard. Controlled by uci.validate.
facet
A constraint a simple type puts on a value: the enumeration it has to belong to, the length it has to be, the numeric bounds it sits within, the pattern it has to match. The published UCI catalog declares 7,766 enumerated values and 143 patterns across 945 types.
violation
One way a payload departs from the schema, with a dotted path to the element. A message is reported in full rather than at the first fault.
Open Mission Systems. The standards family this gateway interoperates with.
UCI
Universal Command and Control Interface. Supplies the message schema — message types such as PositionReport and SubsystemStatus. oa-gateway-uci compiles the published XSD, so conversion covers whatever catalog the operator loads through uci.schema; scripts/fetch-uci-schema.sh fetches the published UCI 2.5 documents.
CAL
Critical Abstraction Layer. The OMS component boundary a participant implements. Java CALs speak OpenWire; uci-cal-jms and sk-cal are CAL implementations this gateway is meant to sit alongside.
OWP
OMS WebSocket Protocol. The text-frame protocol oa-gateway-owp serves, with INIT/SUB/PUB/MSG/OK/ERR operations. Its grammar comes from OMSC-SPC-013, the language-agnostic CAL specification.
MT
Message type. Used in this repo for the UCI type name carried in type_hint, as in “the wrapper MT and the inner MT”.
A-GRA
The standard defining the MA_RxDataPayload and MA_TxDataPayloadCommand wrappers that oa-gateway-agra peels, published as A-GRA_MessageDefinitions_v5_0_a.xsd alongside the ASK 5.0a interface volumes.
MA-C2, MA-MA, MA-VI, MA-MS
A-GRA interface designators. They line up with the ASK 5.0a interface volumes: Command and Control, Peer, Vehicle, and Mission Systems respectively. The first two are external interfaces and use the Rx/Tx hexBinary wrappers; the platform-facing two use native MTs and skip the wrapper.
hexBinary
xs:hexBinary, the XSD type A-GRA uses to carry a complete inner message as hex text inside a wrapper’s EncodedPayload.
PolySample
A UCI construct whose JSON form carries a $type discriminator; oa-gateway-uci handles it explicitly.
ASB
In this repo, the ActiveMQ Classic broker acting as the shared bus between protocols — the setup config/asb.toml and compose/activemq.yml bring up. The “ASB path” is the naming rule where UCI message type, engine topic, STOMP destination, and JMS topic are all the same name.
Simple Text Oriented Messaging Protocol. A text framing over TCP that ActiveMQ accepts on :61613. oa-gateway-stomp is a STOMP client, not a JMS implementation.
JMS
Java Message Service. The Java messaging API whose topic model ActiveMQ exposes; a JMS topic demo is STOMP destination /topic/demo.
OpenWire
ActiveMQ’s native binary wire protocol, and what Java CAL peers use. The gateway does not speak it — ActiveMQ bridges OpenWire and STOMP when the destination names match, which is why the naming rule matters.
DDS
Data Distribution Service. oa-gateway-dds joins a domain as a participant. Engine topic equals DDS topic. Samples are A-GRA Rx/Tx (MaDataPayload on the wire) rather than a generated UCI IDL catalog. The first provider is rustdds; a later Cyclone or Fast DDS stack is another DdsProvider, not a change to the adapter.
WebSocket
The transport OWP runs over, on ws://127.0.0.1:9000/ with subprotocol owp.