RPC over DDS logo

FAST DDS PRO FEATURE

RPC over DDS logo

Bring typed service calls into your DDS system.

Define service operations in IDL, generate asynchronous client and server APIs, and run request/reply or streaming interactions over Fast DDS.

IDL first

One typed service contract.

Generated APIs

Client, server and DDS mapping.

Flexible flows

Unary and streaming operations.

FAST DDS PRO RPC over DDS is a commercial Fast DDS Pro capability.

The complete RPC API, Fast DDS-Gen interface guide and implementation examples are included with the Pro distribution.

How it works

From service definition to remote call.

The generated layer handles the DDS plumbing so application developers work with the typed operations declared in the interface.

icon
01

Define the interface

Describe operations, parameters, return values, streams and exceptions in an OMG IDL interface.

icon
02

Generate typed APIs

Fast DDS-Gen produces the client, server and DDS types required by the service contract.

icon
03

Implement and call

Add the service logic, call it asynchronously and let Fast DDS correlate every result with its request.

IDL service contract

Describe calls, streams and failures in one place.

Standard operations generate asynchronous request/reply calls. Add @feed when an operation needs streaming, and use raises for typed service exceptions.

OPERATION

get_status

One request, one typed result.

@FEED

watch

One request, a stream of samples.

RAISES

SensorFault

A failure defined in the contract.

TelemetryService.idl
module telemetry
{
  struct SystemStatus
  {
    boolean ready;
    string message;
  };

  exception SensorFault
  {
    string reason;
  };

  interface TelemetryService
  {
    SystemStatus get_status(in string sensor_id)
      raises (SensorFault);

    @feed TelemetrySample watch(in string sensor_id)
      raises (SensorFault);
  };
};
IDL→CLIENT API+SERVER API+DDS TYPES

Core capabilities

A complete service model on the DDS foundation.

Use generated high-level APIs while retaining control over the behavior that matters in a distributed system.

icon
GENERATED SERVICE CONTRACT

Start from one typed interface

Fast DDS-Gen turns the operations declared in IDL into high-level client and server APIs. The low-level DDS mapping is generated underneath.

  • OMG IDL interface definitions
  • Generated client and server source
  • Generated request, reply and type support
icon
NON-BLOCKING REQUEST / REPLY

Keep the application responsive

Regular operation calls return an RpcFuture. The application can continue working, wait with a timeout and retrieve the typed result when the reply arrives.

  • RpcFuture-based results
  • Automatic request and reply correlation
  • Configurable waiting and timeout handling
icon
DATA FEEDS IN EITHER DIRECTION

Go beyond one request and one reply

Use the @feed annotation to generate server streaming, client streaming or bidirectional streaming operations.

  • Server-to-client output feeds
  • Client-to-server input feeds
  • Independent bidirectional feeds
icon
EXPLICIT FAILURE SEMANTICS

Make failures part of the contract

Declare domain-specific exceptions in IDL and handle generated exception types at the client.

  • IDL-declared operation exceptions
  • Built-in middleware and remote errors
  • Typed information returned to the caller
icon
SERVER EXECUTION CONTROL

Choose how requests are processed

Use the generated thread-pool scheduler or inject a custom scheduling strategy when the service requires a different execution model.

  • Generated thread-pool scheduling
  • Configurable thread-pool size
  • Custom scheduling strategy support

Operation data flows

Choose the interaction pattern operation by operation.

Keep simple calls simple, then introduce a generated feed only where multiple values need to move.

01
icon

Unary

One typed request returns one correlated reply.

02
icon

Server streaming

One request opens an output feed with multiple server replies.

03
icon

Client streaming

An input feed sends multiple client values before one reply.

04
icon

Bidirectional streaming

Independent input and output feeds exchange values in both directions.

DDS-native underneath

A familiar API without a separate service transport.

The generated client and server map to DDS Requester and Replier entities. Requests and replies travel through correlated DDS samples in the same domain as the rest of the system.

  • Requester publishes requests and receives replies.
  • Replier receives requests and publishes replies.
  • Correlation associates every response with its original call.
  • DDS QoS, transports, discovery and security remain available.
GENERATED HIGH-LEVEL API
Typed clientoperation()Typed server
AUTOMATIC DDS MAPPING
Requesterrequest / reply topicsReplier
DDS COMMUNICATION FOUNDATION

Where it fits

Use RPC when an operation has a clear owner.

Combine data-centric distribution with explicit service interactions where a caller needs a correlated outcome.

icon
01

Commands and configuration

Invoke an operation on the component responsible for it and receive a typed outcome.

icon
02

Queries and diagnostics

Ask a remote service for computed state without designing a separate application protocol.

icon
03

Long-running operations

Return progress, batches or partial results through a generated output feed.

Architecture first

Design service interactions around the complete system.

Tell us what must be called, where each service runs and how results need to flow. We will help you assess RPC over DDS with Fast DDS Pro.

IDL interface and operation design.

Unary and streaming flow selection.

Error, timeout and scheduling strategy.

Fast DDS Pro licensing and documentation access.