diff --git a/README.md b/README.md index 61f5e652ec2e2ba601ba755b8f84a949eb07707b..c8b216498ad902b45c54cdd5c80cb9a626409be7 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,61 @@ Each message below will be wrapped in a `payload` field and will have a `header` * `acknowledgement`: level of acknowledgment where an acknowledgement is sent when a message is i. received, ii. sent to the next destination (e.g. platform in the water). * `planning_configuration`: sent from the GUI to initialise the AI model (autonomy engine). +## Topics + +Messages are routed using either a publish/subscribe or broadcast mechanism. + +For published messages, the message is published for a given a topic. + +Clients create a subscription to a topic pattern which may include wildcards. + +Messages with a topic matching a client's subscription pattern are delivered to that client. + +Broadcast messages are delivered to all clients regardless of their subscription. + +### Field + +The topic should be set in the `message.header.destination` for published messages. +The desintation field should be set to `broadcast` for any messages sent using broadcast. + +### Structure + +`<prefix>.<operator>.<platform_type>.<platform_identifier>.<send|receive>.<message_type>` + +e.g +* `soar.noc.autosub.ah1.from_platform.platform_status` +* `soar.planet-ocean.ecosub.eco1.to_platform.mission_plan` +* `soar.hydrosurv.reav.reav1.to_platform.mission_plan` + +### Terms + +The `header.destination` field contains the topic that messages will be published to. + +This is not the intended recipient of those messages. + +The autonomy engine/frontend/c2s are not represented in the topic. + +The topic describes what the message relates to. + +The client `subscription` will define which clients receive a message. + +* `prefix` - an agreed hard-coded/config setting prefix shared by all adapters and client subscriptions eg soar +* `operator` - human readable organisation name for the platform operator one of [noc|planet-ocean|hydrosurv] +* `platform_type` - one of [autosub|ecosub|reav?] +* `platform_identifier` - human readable identifier for the platform eg ah1, eco1, reav1 +* `to_platform|from_platform` - eg ..to_platform.mission_plan, ..from_platform.platform_status +* `message_type` - one of `[acknowledgement|mission_plan|observation|planning_configuration|platform_status...]` + +### Subscriptions + +Subscriptions may contain multiword wildcards (#) or single word wildcards (*) +eg +* `soar.#` - everything +* `soar.planet-ocean.#` - anything relating to the planet-ocean operator +* `soar.*.*.*.from_platform.*` - all messages inbound from platforms (autonomy engine) +* `soar.*.*.*.to_platform.*` - all messages outbound to platforms (hermes) +* `soar.*.slocum.#` - all messages relating to a slocum platform type + ## Run Docs Run the command below and go to `http://127.0.0.1:5000` ```