Skip to content

UURLabPublishTransport

Abstract base for server -> client streaming transports.

Folds in the small / frequent / single-socket publish shape today spread across UURLabShmPublishTransport, UURLabZmqPublishTransport, and other state-stream producers. Future ROS analogue: rclcpp::Publisher. Per-camera image streaming is INTENTIONALLY out of scope. Camera workers (FCameraZmqWorker) keep their dedicated per-camera thread + socket because GPU readback + large compressed payloads + per-camera lifetime don't fit a shared Publish(topic, bytes) shape. Threading: each concrete transport owns its own concurrency (per- socket lock for ZMQ; lock-free SPSC ring for SHM single-producer snapshots). The base class declares Publish abstract; subclasses pick a synchronisation primitive that matches their backend.

Attribute Value
Kind Class
UE Macro UCLASS
Inherits UObject

Functions

Public Functions

General

Function Returns Description
Publish() void Publish Payload on Topic. Backends interpret the topic in
RegisterTopic() void Optional advance-advertise hook. ROS publishers need to be
TransportInit() bool Bind / open backend handles. Returns false on failure.
TransportShutdown() void Stop producers, release handles. Idempotent.
PreStep() void Runs before mj_step() on the physics thread.
PostStep() void Runs after mj_step() on the physics thread.
Publish

Publish Payload on Topic. Backends interpret the topic in

  • Signature: Publish(const FString& Topic, const TArray<uint8>& Payload)
RegisterTopic

Optional advance-advertise hook. ROS publishers need to be

  • Signature: RegisterTopic(const FString /Topic/, const FString /Schema/)
TransportInit

Bind / open backend handles. Returns false on failure.

  • Signature: TransportInit()
  • Returns: bool
TransportShutdown

Stop producers, release handles. Idempotent.

  • Signature: TransportShutdown()
PreStep

Runs before mj_step() on the physics thread.

  • Signature: PreStep(struct mjModel_ /m/, struct mjData_ /d/)
PostStep

Runs after mj_step() on the physics thread.

  • Signature: PostStep(struct mjModel_ /m/, struct mjData_ /d/)