EMA C++ Developers Guide : 5 Provider Classes : 5.2 OmmProviderClient Class : 5.2.3 Interactive Example: OmmProviderClient
 
5.2.3 Interactive Example: OmmProviderClient
The following example illustrates an application client-type class, depicting onRefreshMsg() method implementation.
 
 
void AppClient::processLoginRequest( const ReqMsg& reqMsg, const OmmProviderEvent& event )
{
    event.getProvider().submit(RefreshMsg().domainType(MMT_LOGIN).name(reqMsg.getName()).
            nameType(USER_NAME).complete().solicited( true ).
            state( OmmState::OpenEnum, OmmState::OkEnum, OmmState::NoneEnum,
            "Login accepted" ),event.getHandle() );
}
 
void AppClient::processMarketByOrderRequest( const ReqMsg& reqMsg, const OmmProviderEvent&
        event )
{
    if ( itemHandle != 0 )
    {
        processInvalidItemRequest(reqMsg, event);
        return;
    }
 
    event.getProvider().submit(RefreshMsg().domainType(MMT_MARKET_BY_ORDER).
            name(reqMsg.getName()).serviceName(reqMsg.getServiceName()).solicited(true)
 
 
            .summaryData( FieldList().addEnum( 15, 840 ).addEnum( 53, 1 ).addEnum( 3423, 1 ).
                    addEnum( 1709, 2 ).complete() )
            .addKeyAscii( OrderNr, MapEntry::AddEnum, FieldList()
                .addRealFromDouble( 3427, 7.76, OmmReal::ExponentNeg2Enum )
                .addRealFromDouble( 3429, 9600 )
                .addEnum( 3428, 2 )
                .addRmtes( 212, EmaBuffer( "Market Maker", 12 ) )
                .complete() )
            .complete() )
        .complete(), event.getHandle() );
 
    itemHandle = event.getHandle();
}
 
void AppClient::processInvalidItemRequest( const ReqMsg& reqMsg, const OmmProviderEvent&
        event )
{
    event.getProvider().submit( StatusMsg().name( reqMsg.getName() ).serviceName(
            reqMsg.getServiceName() )
        .domainType( reqMsg.getDomainType() )
        .state( OmmState::ClosedEnum, OmmState::SuspectEnum, OmmState::NotFoundEnum,
                "Item not found" ),
        event.getHandle() );
}
 
void AppClient::onReqMsg( const ReqMsg& reqMsg, const OmmProviderEvent& event )
{
    switch ( reqMsg.getDomainType() )
    {
    case MMT_LOGIN:
        processLoginRequest( reqMsg, event );
        break;
    case MMT_MARKET_BY_ORDER:
        processMarketByOrderRequest( reqMsg, event );
        break;
    default:
        processInvalidItemRequest( reqMsg, event );
        break;
    }
}