### Navigation

- index
- next |
- previous |
- RMI User Guide »

# 3. Vortex OpenSplice RMI over DDS

As in traditional service-oriented applications, communication from client to server is performed through a well-defined service model. The RMI module enables a user to build a service model with remote method invocation capabilities and completely hides the DDS DCPS API. Of course, using RMI does not prevent the application from using the DDS API as shown by the following figure:

RMI Relationship to DDS

A service model is defined by one or more object-oriented interfaces. A DDS RMI interface is an IDL interface having a name and a set of operations. Each operation has a fixed set of typed parameters. The RMI module provides:

- A service invocation framework that maps the different services operations onto a set of DDS topics that hold the operation’s invocation requests and replies. A set of mapping rules have been defined for this purpose. At runtime, this framework sets up the underlying DDS environment and handles the remote interface invocations using the basic DDS read/write operations.
- A simple and intuitive programming model for both the server application side implementing the interface, and the client application side invoking that interface. The server programming model is as simple as implementing an interface, and the client programming model is as simple as calling a local interface.
- A powerful feature to enable tuning of the invocation request and reply QoS by setting their corresponding DDS QoS policies. This feature enables developers to improve the invocations quality with real-time and high-performance features. For instance, priorities and validity durations (lifespan) could be set on the different operation requests/replies.
- Synchronous, asynchronous and oneway invocation modes. The synchronous mode is the invocation mode that blocks the client thread until the reply is sent back to him by the server. The asynchronous mode is similar to the CORBA Asynchronous Messaging Interface (AMI) callback model. It is a non-blocking mode where the client does not wait for the reply from the server, but rather provides a callback object that will be invoked by the middleware to deliver the request return values when they are received. Finally, the oneway mode is a fire-and-forget invocation mode where the client does not care about the success or failure of the invocation. A oneway method cannot return values and no reply message will ever return to the client once the request is sent to the server.
- ‘C++ and Java’ implementation.

## 3.1. Key components

The Vortex OpenSplice RMI module includes the following components:

RMI Pre-processor (`rmipp`)
  Generates the interface-type-specific requests/replies topics and invocation handling classes.
Core library
  Provides the runtime setup operations and a generic invocation framework.

## 3.2. Binding Languages

The Vortex OpenSplice RMI module is available for both Java and C++ languages.

### Navigation

- index
- next |
- previous |
- RMI User Guide »