Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Glossary

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.

OA-Gateway’s own terms

TermMeaning
EnvelopeThe value that crosses the engine: id, route, string headers, content-type label, and an opaque Bytes payload. The engine reads only the route.
RouteKeyAn address: topic plus an optional type_hint.
topicThe routing coordinate every envelope has. On the ActiveMQ path it equals the UCI message type name and the JMS/STOMP destination suffix.
type_hintAn 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”.
AdapterA protocol plugin that owns its own I/O loop. It talks only to the engine, never to another adapter.
EngineThe in-process router. It is protocol-agnostic and does not parse payloads.
wildcard subscriptionA subscription with type_hint: None, matching every type on its topic.
conversionMapping 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.
validationChecking 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.
facetA 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.
violationOne 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.

Domain terms

TermMeaning
OMSOpen Mission Systems. The standards family this gateway interoperates with.
UCIUniversal 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.
CALCritical 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.
OWPOMS 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.
MTMessage type. Used in this repo for the UCI type name carried in type_hint, as in “the wrapper MT and the inner MT”.
A-GRAThe 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-MSA-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.
hexBinaryxs:hexBinary, the XSD type A-GRA uses to carry a complete inner message as hex text inside a wrapper’s EncodedPayload.
PolySampleA UCI construct whose JSON form carries a $type discriminator; oa-gateway-uci handles it explicitly.
ASBIn 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.

Messaging protocols

TermMeaning
STOMPSimple 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.
JMSJava Message Service. The Java messaging API whose topic model ActiveMQ exposes; a JMS topic demo is STOMP destination /topic/demo.
OpenWireActiveMQ’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.
DDSData 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.
WebSocketThe transport OWP runs over, on ws://127.0.0.1:9000/ with subprotocol owp.