Hello,
I'm moving my application from CORBA to Connext DDS and I was wondering which is the best approach to migrate the CORBA interface operations to the RTI Request/Reply service.
I see two different design approaches:
1) Define a Request/Reply topic for each interface operation.
The server side (the implementor of the interface) will need to instantiate a Replier (or SimpleReplier) for every interface method.
A different service name should be defined for each operation or the request/reply topic names should be defined manually for each mapped operation.
If using Repliers a server thread should create a WaitSet with attached a ReadCondition or StatusCondition for each data reader associated to the request topics.
If using the SimpleReplier a different listener shall be created for each different request/reply topic combination
2) Define a Request and a Reply topic for the interface.
The interface operations are mapped in an union contained in request topic (interface arguments) and reply topic (return value and out/inout method arguments). A single (Simple)Replier is instantiated on the service provider.
PROS/CONS
The second solution has the advantage of reducing the number of topics in the system (which may have a significant impact on the participant
discovery since we have many CORBA servers to be migrated to DDS) and simplifying the source code porting.
On the other side the first option allows to define different QoS for each method operation, while in the second approach this is not possible.
Any suggestion of additional pros/cons of the two approaches or alternative design solutions would be appreciated