EMA C++ Developers Guide : 4 Consumer Classes : 4.1 OmmConsumer Class : 4.1.7 Working with Tunnel Streams
 
4.1.7 Working with Tunnel Streams
Enterprise Message API assigns all tunnel streams a unique numeric identifier (e.g., UInt64), called a parent handle, which is returned by the call: OmmConsumer::registerClient(TunnelStreamRequest,…). A parent handle is valid only as long as its associated tunnel stream is open. You can use parent handles to open substreams (as illustrated in Section 4.1.8).
When opening a tunnel stream, on the call to the OmmConsumer::registerClient(TunnelStreamRequest,…) method, an application can pass a tunnel stream closure or an application-assigned numeric value. The Enterprise Message API will maintain the association of the tunnel stream to its closure as long as the tunnel stream stays open. Respective closures and parent handles are returned to the application in an OmmConsumerEvent object on each tunnel stream callback method.
For more details on a TunnelStreamRequest and how to create it, refer to Section 3.2.6 and Section 3.4.3.