EMA C++ Configuration Guide : 4 Enterprise Message API Configuration Processing : 4.5 Programmatic Configuration : 4.5.3 Example: Programmatic Configuration of a Consumer
 
4.5.3 Example: Programmatic Configuration of a Consumer
The following sample illustrates the Enterprise Message API programmatic configuration of a consumer:
 
 
Map configMap;
Map innerMap;
ElementList elementList;
 
elementList.addAscii( "DefaultConsumer", "Consumer_1" );
 
innerMap.addKeyAscii( "Consumer_1", MapEntry::AddEnum, ElementList()
    .addAscii( "Channel", "Channel_1" )
    .addAscii( "Logger", "Logger_1" )
    .addAscii( "Dictionary", "Dictionary_1" )
    .addUInt( "ItemCountHint", 5000 )
    .addUInt( "ServiceCountHint", 5000 )
    .addUInt( "ObeyOpenWindow", 0 )
    .addUInt( "PostAckTimeout", 5000 )
    .addUInt( "RequestTimeout", 5000 )
    .addInt("ReconnectAttemptLimit", 10)
    .addInt( "ReconnectMinDelay", 2000 )
    .addInt( "ReconnectMaxDelay", 6000 )
    .addUInt( "MaxOutstandingPosts", 5000 )
    .addInt( "DispatchTimeoutApiThread", 1 )
    .addUInt( "CatchUnhandledException", 0 )
    .addUInt( "MaxDispatchCountApiThread", 500 )
    .addUInt( "MaxDispatchCountUserThread", 500 )
    .addInt( "PipePort", 4001 )
    .addAscii( "XmlTraceFileName", "MyXMLTrace" )
    .addInt( "XmlTraceMaxFileSize", 50000000 )
    .addUInt( "XmlTraceToFile", 1 )
    .addUInt( "XmlTraceToStdout", 0 )
    .addUInt( "XmlTraceToMultipleFiles", 1 )
    .addUInt( "XmlTraceWrite", 1 )
    .addUInt( "XmlTraceRead", 1 )
    .addUInt( "XmlTracePing", 1 )
    .addUInt( "MsgKeyInUpdates", 1 ).complete() ).complete();
 
elementList.addMap( "ConsumerList", innerMap );
 
elementList.complete();
innerMap.clear();
 
configMap.addKeyAscii( "ConsumerGroup", MapEntry::AddEnum, elementList );
elementList.clear();
 
innerMap.addKeyAscii( "Channel_1", MapEntry::AddEnum, ElementList()
    .addEnum( "ChannelType", 0 )
    .addAscii( "InterfaceName", "localhost" )
    .addEnum("CompressionType", 1)
    .addUInt( "GuaranteedOutputBuffers", 5000 )
    .addUInt( "ConnectionPingTimeout", 50000 )
    .addAscii( "Host", "localhost" )
    .addAscii("Port", "14002" )
    .addUInt( "TcpNodelay", 0 ).complete() ).complete();
 
elementList.addMap( "ChannelList", innerMap );
 
elementList.complete();
innerMap.clear();
configMap.addKeyAscii( "ChannelGroup", MapEntry::AddEnum, elementList );
elementList.clear();
 
innerMap.addKeyAscii( "Logger_1", MapEntry::AddEnum,
    ElementList()
    .addEnum( "LoggerType", 0 )
    .addAscii( "FileName", "logFile" )
    .addEnum( "LoggerSeverity", 1 ).complete() ).complete();
 
elementList.addMap( "LoggerList", innerMap );
 
elementList.complete();
innerMap.clear();
 
configMap.addKeyAscii( "LoggerGroup", MapEntry::AddEnum, elementList );
elementList.clear();
 
innerMap.addKeyAscii( "Dictionary_1", MapEntry::AddEnum,
    ElementList()
    .addEnum( "DictionaryType", 1 )
    .addAscii( "RdmFieldDictionaryFileName", "./RDMFieldDictionary" )
    .addAscii( "EnumTypeDefFileName", "./enumtype.def" ).complete() ).complete();
 
elementList.addMap( "DictionaryList", innerMap );
 
elementList.complete();
 
configMap.addKeyAscii( "DictionaryGroup", MapEntry::AddEnum, elementList );
elementList.clear();
 
configMap.complete();