I am not clear about the Transport to Channel multiplexing. Does the Transport support multiple Channels each connecting to different providers? I would like to connect to different ADSes in one consumer App.
UPA supports multiple connections to ADSs. Application can create RSSL channel separately for each connection and also needs to perform separated set of the administrative domains (such as Login, Source Directory, and Dictionary) including item requests on each channel.
The rsslVAConsumer example is implemented to demonstrate the multiple connections handling. You can try the application with the following command line.
rsslVAConsumer.exe -tcp <ADS1's IP address>:14002 <service name on ADS1> mp:TRI -tcp <ADS2's IP address>:14002 <service name on ADS2> mp:.DJI
One consumer app can connect to different ADSs, when different providers are available from them, by connecting to multiple channel sessions and maintaining them. Please refer to EDFConsumer example in UPA kit, to see how multiple sessions are connected and maintained.
TREP is an infrastructure to present multiple service providers through a single fault-tolerant and reliable connection. Service providers are distinguished by a name and id tuple and are specified when subscribing to an item stream. The provider id is discovered at run time by enumerating a source directory response from the source infrastructure.
It is recommended to use TREP for provider aggregation as that is its primary purpose.
Connecting to multiple TREP infrastructures, or simply two ADS endpoints within a single TREP infrastructure is necessary to implement warm or hot standby whereby subscriptions would be submitted to both connections simultaneously.
Each RSSL connection requires its own RSSL channel and requires that the application perform the connection, login, optional directory and dictionary requests independently to each channel. This must be implemented by the application developer or one can take advantage of the ValueAdd RsslReactor library to provide an object and thread per channel.