EMA C++ Developers Guide : 5 Provider Classes : 5.1 OmmProvider Class : 5.1.9 Interactive Provider Example: Handling RTT Responses from Consumer
 
5.1.9 Interactive Provider Example: Handling RTT Responses from Consumer
The following example implements a provider's callback for Generic messages. The example illustrates how the provider can identify and process consumer responses to RTT requests.
 
 
void AppClient::onGenericMsg(const GenericMsg& genericMsg, const OmmProviderEvent& event)
{
    if (genericMsg.getDomainType() == MMT_LOGIN && event.getHandle() == loginHandle &&
            genericMsg.getPayload().getDataType() == DataType::ElementListEnum)
    {
        cout << "Received login RTT message from Consumer " << event.getHandle() << endl;
        TimeValue currTicks = GetTime::getTicks();
        const ElementList& elementList = genericMsg.getPayload().getElementList();
        while ( elementList.forth() )
        {
            const ElementEntry& elementEntry = elementList.getEntry();
            if ( elementEntry.getName() == ENAME_RTT_TICKS && elementEntry.getLoadType() ==
                    DataType::UIntEnum ) // "Ticks"
            {
                cout << "\tRTT Tick value is " << elementEntry.getUInt() << "us." << endl;
                lastLatency = (UInt64)(((double)currTicks - (double)elementEntry.getUInt()) /
                        GetTime::ticksPerMicro());
                cout << "\tLast RTT message latency is " << lastLatency << "us." << endl;
            }
            else if ( elementEntry.getName() == ENAME_RTT_TCP_RETRANS && elementEntry.getLoadType() ==
                    DataType::UIntEnum ) // "TcpRetrans"
            {
                cout << "\tConsumer side TCP retransmissions: " << elementEntry.getUInt() << endl;
            }
        }
    }
}