Skip to content

UURLabRpcTransport

Abstract base for request/reply transports owned by the bridge.

UObject-only (NOT UActorComponent) so transports live and die with the bridge regardless of PIE state. Concrete transports (UURLabZmqRpcTransport, UURLabShmRpcTransport) own their own worker thread + transport handles. They implement: - TransportInit / TransportShutdown: bind/release handles. - The poll loop hands raw bytes to ProcessRequestBytes and ships the encoded reply bytes back to the wire. Bytes-in / bytes-out is shared on this base: msgpack-or-JSON detect, dispatcher resolution, dispatch, reply encoding. Lives here so every concrete transport gets the same wire framing without duplication.

Attribute Value
Kind Class
UE Macro UCLASS
Inherits UObject

Functions

Public Functions

General

Function Returns Description
SetOwningBridge() void Bridge that owns this transport. Set once at construction by the
TransportInit() bool Bind sockets / mmap regions / start the worker thread. Returns
TransportShutdown() void Stop the worker thread, release handles. Idempotent.
GetTransportName() FString Human-readable transport name for logs ("zmq" / "shm" / future
AcceptsEditorOps() bool Categorisation: does this transport accept editor-only ops?
ProcessRequestBytes() bool Shared request handler. Concrete transports call this from their
ResolveDispatcher() FURLabRpcDispatcher* Resolve the live dispatcher. Always goes through the owning
SetOwningBridge

Bridge that owns this transport. Set once at construction by the

TransportInit

Bind sockets / mmap regions / start the worker thread. Returns

  • Signature: TransportInit()
  • Returns: bool
TransportShutdown

Stop the worker thread, release handles. Idempotent.

  • Signature: TransportShutdown()
GetTransportName

Human-readable transport name for logs ("zmq" / "shm" / future

  • Signature: GetTransportName()
  • Returns: FString
AcceptsEditorOps

Categorisation: does this transport accept editor-only ops?

  • Signature: AcceptsEditorOps()
  • Returns: bool
ProcessRequestBytes

Shared request handler. Concrete transports call this from their

  • Signature: ProcessRequestBytes(const TArray<uint8>& InBytes, TArray<uint8>& OutReplyBytes)
  • Returns: bool
ResolveDispatcher

Resolve the live dispatcher. Always goes through the owning