Skip to Content
This documentation is provided with the HEAT environment and is relevant for this HEAT instance only.
RunnersDashboard UtilsOpenDIS Parser Node

opendis-parser (Transform Node)

The opendis-parser node parses one or more DIS PDUs from upstream binary payloads and converts them into JSON.

Use this node when upstream data is a DIS byte stream and downstream nodes need structured JSON instead of raw protocol bytes.


Configuration Schema

PropertyTypeRequiredDescription
dataSourceNamestringYes (manifest)Declared in node template schema.

Notes:

  • Manifest requires dataSourceName.
  • Current processor implementation does not actively consume config fields during parse; it validates successfully with no config checks.
  • acceptsMultipleInputs is false in manifest.

How it works

At runtime, the processor:

  1. Fetches latest upstream inputs.
  2. Iterates input payload bytes.
  3. Splits contiguous DIS streams into PDUs using the DIS header length field.
  4. Converts each parsed PDU to dictionary form using opendis_service.pdu_to_dict.
  5. Returns:
    • a single object when exactly one PDU is parsed
    • an array of objects when multiple PDUs are parsed

The parser tolerates incomplete trailing PDUs and waits for complete payload data on later runs.


Input requirements

  • Upstream payload must be DIS protocol bytes.
  • Each PDU must include a valid 12-byte DIS header.
  • Byte offsets 8-9 in each header must contain valid big-endian total PDU length.

Runtime failure behavior

The node fails when:

  • No inputs are available.
  • Parsing the DIS stream raises an exception.

Behavior to be aware of:

  • Empty payload entries are skipped.
  • If parsing yields zero complete PDUs, the node logs a warning and returns None.
  • Malformed or incomplete trailing PDU bytes are ignored by stream splitting logic.

Output examples

Single parsed PDU:

{ "pduType": 1, "entityID": { "site": 1, "application": 1, "entity": 42 } }

Multiple parsed PDUs:

[ { "pduType": 1 }, { "pduType": 3 } ]

Integration in a session template

  1. Place opendis-parser after the node that outputs raw DIS bytes.
  2. Configure dataSourceName per manifest requirements.
  3. Connect downstream JSON-processing nodes (json-filter, dashboard, or others).