支持Retifive

This commit is contained in:
Achilles
2024-04-10 13:56:34 +08:00
parent 03e6d9ecb9
commit 9d3bac8a9d
11 changed files with 2589 additions and 0 deletions

View File

@@ -0,0 +1,898 @@
<?xml version="1.0" encoding="UTF-8"?>
<EmaConfig>
<!-- ConsumerGroup provides set of detailed configurations to be used by named consumers -->
<!-- Application specifies which configuration to use by setting OmmConsumerConfig::consumerName() -->
<ConsumerGroup>
<!-- DefaultConsumer parameter defines which consumer configuration is used by OmmConsumer -->
<!-- if application does not specify it through OmmConsumerConfig::consumerName() -->
<!-- first consumer on the ConsumerList is a DefaultConsumer if this parameter is not specified -->
<DefaultConsumer value="Consumer_1"/>
<ConsumerList>
<Consumer>
<!-- Name is mandatory -->
<Name value="Consumer_1"/>
<!-- Channel is optional: defaulted to "RSSL_SOCKET + localhost + 14002" -->
<!-- Channel or ChannelSet may be specified -->
<Channel value="Channel_1"/>
<!-- Dictionary is optional: defaulted to "ChannelDictionary" -->
<Dictionary value="Dictionary_1"/>
<XmlTraceToStdout value="0"/>
</Consumer>
<Consumer>
<Name value="Consumer_2"/>
<!-- ChannelSet specifies an ordered list of Channels to which OmmConsumer will attempt to -->
<!-- connect, one at a time, if the previous one fails to connect -->
<ChannelSet value="Channel_1, Channel_2"/>
<Dictionary value="Dictionary_2"/>
<XmlTraceToStdout value="0"/>
</Consumer>
<Consumer>
<Name value="Consumer_3"/>
<!-- Channel set to "RSSL_ENCRYPTED" -->
<Channel value="Channel_3"/>
<!-- Dictionary is optional: defaulted to "ChannelDictionary" -->
<Dictionary value="Dictionary_1"/>
<XmlTraceToStdout value="0"/>
</Consumer>
<Consumer>
<Name value="Consumer_4"/>
<Channel value="Channel_4"/>
<Dictionary value="Dictionary_1"/>
<MaxDispatchCountApiThread value="6500"/>
<MaxDispatchCountUserThread value="6500"/>
<XmlTraceToStdout value="0"/>
</Consumer>
<Consumer>
<!-- Channel is specified to provide RSSL_WEBSOCKET connection options -->
<Name value="Consumer_5"/>
<Channel value="Channel_5"/>
<Dictionary value="Dictionary_2"/>
<XmlTraceToStdout value="0"/>
<DefaultServiceID value="1"/>
</Consumer>
<Consumer>
<!-- Name is mandatory -->
<Name value="Consumer_6"/>
<Channel value="Channel_6"/>
<!-- Dictionary is optional: defaulted to "ChannelDictionary" -->
<Dictionary value="Dictionary_1"/>
<XmlTraceToStdout value="0"/>
<DefaultServiceID value="1"/>
</Consumer>
<!-- Consumer with enabled RTT feature -->
<Consumer>
<Name value="Consumer_7"/>
<Channel value="Channel_1"/>
<Dictionary value="Dictionary_2"/>
<XmlTraceToStdout value="0"/>
<DefaultServiceID value="1"/>
<EnableRtt value="1"/>
</Consumer>
<!-- Consumer for warm standby feature -->
<Consumer>
<Name value="Consumer_8"/>
<WarmStandbyChannelSet value="WarmStandbyChannel_1"/>
<Dictionary value="Dictionary_2"/>
<XmlTraceToStdout value="0"/>
</Consumer>
<!-- Performance tools consumers -->
<Consumer>
<Name value="Perf_Consumer_1"/>
<Channel value="Perf_Channel_1"/>
<Dictionary value="Dictionary_1"/>
<MaxDispatchCountApiThread value="6500"/>
<MaxDispatchCountUserThread value="6500"/>
</Consumer>
<Consumer>
<Name value="Perf_Consumer_WSJSON_1"/>
<Channel value="Perf_Channel_WSJSON_1"/>
<Dictionary value="Dictionary_2"/>
<MaxDispatchCountApiThread value="6500"/>
<MaxDispatchCountUserThread value="6500"/>
</Consumer>
<Consumer>
<Name value="Perf_Consumer_WSRWF_1"/>
<Channel value="Perf_Channel_WSRWF_1"/>
<Dictionary value="Dictionary_1"/>
<MaxDispatchCountApiThread value="6500"/>
<MaxDispatchCountUserThread value="6500"/>
</Consumer>
<Consumer>
<Name value="Consumer_RRTViewer_SE"/>
<Channel value="Channel_RRTViewer_SE"/>
<Dictionary value="Dictionary_1"/>
<!-- 'XmlTraceToStdout == 1' is required for proper working of 'Debug' mode in RRTViewer -->
<!-- If XmlTraceToStdout set into '0', 'debug' mode will print only EMA logs. -->
<XmlTraceToStdout value="1"/>
</Consumer>
<Consumer>
<Name value="Consumer_RRTViewer_DE"/>
<Channel value="Channel_RRTViewer_DE"/>
<Dictionary value="Dictionary_1"/>
<!-- 'XmlTraceToStdout == 1' is required for proper working of 'Debug' mode in RRTViewer -->
<!-- If XmlTraceToStdout set into '0', 'debug' mode will print only EMA logs. -->
<XmlTraceToStdout value="1"/>
</Consumer>
</ConsumerList>
</ConsumerGroup>
<!-- NiProviderGroup provides set of detailed configurations to be used by named providers -->
<!-- Application specifies which configuration to use by setting OmmNiProviderConfig::providerName() -->
<NiProviderGroup>
<!-- DefaultNiProvider parameter defines which provider configuration is used by OmmProvider -->
<!-- if application does not specify it through OmmNiProviderConfig::providerName() -->
<!-- first provider on the NiProviderList is a DefaultNiProvider if this parameter is not specified -->
<DefaultNiProvider value="Provider_1"/>
<NiProviderList>
<!-- Regular providers -->
<NiProvider>
<!-- Name is mandatory -->
<Name value="Provider_1"/>
<!-- Channel is optional: defaulted to "RSSL_SOCKET + localhost + 14003" -->
<Channel value="Channel_7"/>
<!-- Directory is optional. -->
<!-- the EMA provides hardcoded directory containing a single service named "NI_PUB". -->
<!-- the EMA defaults the OmmNiProviderConfig::adminControlDirectory() to ApiControlEnum.-->
<!-- the applications may just use the hardcoded "NI_PUB" service to publish all the items.-->
<!-- if desired, a custom directory may be configured, named and used instead of the -->
<!-- hardcoded one. Please see examples in the DirectoryGroup.-->
<!-- the directory may also be specified using OmmNiProviderConfig::addAdminMsg(). -->
<!-- if desired the OmmNiProviderConfig::adminControlDirectory() to UserControlEnum -->
<!-- which allows applications to specify and control the directory. -->
<Directory value="Directory_1"/>
<XmlTraceToStdout value="0"/>
</NiProvider>
<NiProvider>
<Name value="Provider_2"/>
<Channel value="Channel_6"/>
<Directory value="Directory_2"/>
<XmlTraceToStdout value="0"/>
</NiProvider>
<NiProvider>
<Name value="Provider_3"/>
<Channel value="Channel_6"/>
<Directory value="Directory_3"/>
</NiProvider>
<NiProvider>
<Name value="Provider_4"/>
<Channel value="Channel_7"/>
<Directory value="Directory_1"/>
<XmlTraceToStdout value="0"/>
</NiProvider>
<!-- Performance tools niprovider -->
<NiProvider>
<Name value="Perf_NIProvider_1"/>
<Channel value="Perf_NIP_Channel_1"/>
<Directory value="Perf_Directory_1"/>
<XmlTraceToStdout value="0"/>
<ItemCountHint value="100000"/>
<MaxDispatchCountApiThread value="500"/>
<MaxDispatchCountUserThread value="500"/>
</NiProvider>
</NiProviderList>
</NiProviderGroup>
<!-- IProviderGroup provides set of detailed configurations to be used by named providers -->
<!-- Application specifies which configuration to use by setting OmmIProviderConfig::providerName() -->
<IProviderGroup>
<!-- DefaultIProvider parameter defines which provider configuration is used by OmmProvider -->
<!-- if application does not specify it through OmmIProviderConfig::providerName() -->
<!-- first provider on the IProviderList is a default provider if this parameter is not specified -->
<DefaultIProvider value="Provider_1"/>
<IProviderList>
<IProvider>
<!-- Name is mandatory -->
<Name value="Provider_1"/>
<!-- Server is optional: defaulted to "RSSL_SOCKET + 14002" -->
<Server value="Server_1"/>
<!-- Directory is optional: defaulted to AdminControl::UserControlEnum -->
<!-- source directory configuration to use if OmmIProviderConfig::adminModel() -->
<!-- was set to ApiControlEnum -->
<!-- this configuration also decides which dictionaries will be loaded at startup -->
<!-- this configuration may be overwritten by OmmIProviderConfig::addAdminMsg() -->
<Directory value="Directory_2"/>
<ItemCountHint value="10000"/>
<ServiceCountHint value="10000" />
<DispatchTimeoutApiThread value="500" />
<MaxDispatchCountApiThread value="500" />
<MaxDispatchCountUserThread value="500" />
<PipePort value="9009" />
<RefreshFirstRequired value="1" />
</IProvider>
<IProvider>
<!-- Name is mandatory -->
<Name value="Provider_3"/>
<!-- Server is optional: now it specifies RSSL_WEBSOCKET connection options -->
<Server value="Server_2"/>
<!-- Directory is optional: defaulted to AdminControl::UserControlEnum -->
<!-- source directory configuration to use if OmmIProviderConfig::adminModel() -->
<!-- was set to ApiControlEnum -->
<!-- this configuration also decides which dictionaries will be loaded at startup -->
<!-- this configuration may be overwritten by OmmIProviderConfig::addAdminMsg() -->
<Directory value="Directory_2"/>
<ItemCountHint value="10000"/>
<ServiceCountHint value="10000" />
<DispatchTimeoutApiThread value="500" />
<MaxDispatchCountApiThread value="500" />
<MaxDispatchCountUserThread value="500" />
<PipePort value="9009" />
<RefreshFirstRequired value="1" />
<SendJsonConvError value="1" />
</IProvider>
<IProvider>
<!-- Name is mandatory -->
<Name value="EncryptedProvider"/>
<!-- Server is optional: defaulted to "RSSL_SOCKET + 14002" -->
<Server value="EncryptedServer"/>
<!-- Directory is optional: defaulted to AdminControl::UserControlEnum -->
<!-- source directory configuration to use if OmmIProviderConfig::adminModel() -->
<!-- was set to ApiControlEnum -->
<!-- this configuration also decides which dictionaries will be loaded at startup -->
<!-- this configuration may be overwritten by OmmIProviderConfig::addAdminMsg() -->
<Directory value="Directory_2"/>
<ItemCountHint value="10000"/>
<ServiceCountHint value="10000" />
<DispatchTimeoutApiThread value="500" />
<MaxDispatchCountApiThread value="500" />
<MaxDispatchCountUserThread value="500" />
<PipePort value="9009" />
<RefreshFirstRequired value="1" />
</IProvider>
<!-- Performance tools provider -->
<IProvider>
<Name value="Perf_Provider_1"/>
<Server value="Perf_Server_1"/>
<Directory value="Directory_2"/>
<ItemCountHint value="100000"/>
<ServiceCountHint value="10000"/>
<DispatchTimeoutApiThread value="5000" />
<MaxDispatchCountApiThread value="10"/>
<MaxDispatchCountUserThread value="6500"/>
<RefreshFirstRequired value="1"/>
<XmlTraceToStdout value="0"/>
</IProvider>
</IProviderList>
</IProviderGroup>
<ChannelGroup>
<ChannelList>
<Channel>
<Name value="Channel_1"/>
<!-- ChannelType possible values are: -->
<!-- ChannelType::RSSL_SOCKET - TCP IP connection type -->
<!-- ChannelType::RSSL_HTTP - Http tunnel connection type -->
<!-- ChannelType::RSSL_ENCRYPTED - Https tunnel connection type -->
<ChannelType value="ChannelType::RSSL_SOCKET"/>
<!-- CompressionType is optional: defaulted to None -->
<!-- possible values: None, ZLib, LZ4 -->
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<!-- ConnectionPingTimeout is optional: defaulted to 30000 -->
<ConnectionPingTimeout value="30000"/>
<!-- TcpNodelay is optional: defaulted to 1 -->
<!-- possible values: 1 (tcp_nodelay option set), 0 (tcp_nodelay not set) -->
<TcpNodelay value="1"/>
<Host value="localhost"/>
<Port value="14002"/>
</Channel>
<Channel>
<Name value="Channel_2"/>
<ChannelType value="ChannelType::RSSL_SOCKET"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<Host value="localhost"/>
<Port value="14002"/>
</Channel>
<Channel>
<Name value="Channel_3"/>
<ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
<GuaranteedOutputBuffers value="5000"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="1"/>
<Host value="localhost"/>
<Port value="14002"/>
<!-- ObjectName is optional: defaulted to "" -->
<ObjectName value=""/>
</Channel>
<Channel>
<Name value="Channel_4"/>
<ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<!-- EMA discovers a host and a port from RDP service discovery for the specified location
when both of them are not set and the session management is enable. -->
<Location value="us-east-1"/>
<EnableSessionManagement value="1"/>
<ObjectName value=""/>
</Channel>
<Channel>
<Name value="Channel_5"/>
<ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<!-- EMA discovers a host and a port from RDP service discovery for the specified location
when both of them are not set and the session management is enable. -->
<Location value="us-east-1"/>
<EnableSessionManagement value="1"/>
<EncryptedProtocolType value="EncryptedProtocolType::RSSL_WEBSOCKET"/>
<WsMaxMsgSize value="61440"/>
<WsProtocols value="tr_json2"/>
</Channel>
<Channel>
<Name value="Channel_6"/>
<ChannelType value="ChannelType::RSSL_WEBSOCKET"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<Host value="localhost"/>
<Port value="15000"/>
<WsMaxMsgSize value="61440"/>
<WsProtocols value="rssl.json.v2, rssl.rwf, tr_json2"/>
</Channel>
<Channel>
<Name value="Channel_7"/>
<ChannelType value="ChannelType::RSSL_SOCKET"/>
<GuaranteedOutputBuffers value="5000"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="1"/>
<Host value="localhost"/>
<Port value="14003"/>
<!-- ObjectName is optional: defaulted to "" -->
<ObjectName value=""/>
</Channel>
<Channel>
<Name value="Channel_8"/>
<ChannelType value="ChannelType::RSSL_HTTP"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<Host value="localhost"/>
<Port value="14003"/>
<!-- ObjectName is optional: defaulted to "" -->
<ObjectName value=""/>
</Channel>
<Channel>
<Name value="Channel_9"/>
<ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<Host value="localhost"/>
<Port value="14003"/>
<!-- ObjectName is optional: defaulted to "" -->
<ObjectName value=""/>
</Channel>
<Channel>
<Name value="Channel_RRTViewer_SE"/>
<ChannelType value="ChannelType::RSSL_SOCKET"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="1"/>
<Host value="localhost"/>
<Port value="14002"/>
</Channel>
<Channel>
<Name value="Channel_RRTViewer_DE"/>
<ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<!-- EMA discovers a host and a port from RDP service discovery for the specified location
when both of them are not set and the session management is enable. -->
<Location value="us-east-1"/>
<EnableSessionManagement value="1"/>
<ObjectName value=""/>
</Channel>
<!--Performance tools channels -->
<Channel>
<Name value="Perf_Channel_1"/>
<ChannelType value="ChannelType::RSSL_SOCKET"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<NumInputBuffers value="2048"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="1"/>
<Host value="localhost"/>
<Port value="14002"/>
</Channel>
<Channel>
<Name value="Perf_Channel_WSJSON_1"/>
<ChannelType value="ChannelType::RSSL_WEBSOCKET"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="50000"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="0"/>
<DirectWrite value="1"/>
<Host value="localhost"/>
<Port value="14002"/>
<WsMaxMsgSize value="18432"/>
<WsProtocols value="rssl.json.v2"/>
</Channel>
<Channel>
<Name value="Perf_Channel_WSRWF_1"/>
<ChannelType value="ChannelType::RSSL_WEBSOCKET"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="0"/>
<DirectWrite value="1"/>
<Host value="localhost"/>
<Port value="14002"/>
<WsProtocols value="rssl.rwf"/>
</Channel>
<Channel>
<Name value="Perf_NIP_Channel_1"/>
<ChannelType value="ChannelType::RSSL_SOCKET"/>
<GuaranteedOutputBuffers value="100000"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="0"/>
<DirectWrite value="1"/>
<Host value="localhost"/>
<Port value="14003"/>
<InterfaceName value=""/>
<HighWaterMark value="6144"/>
<NumInputBuffers value="10000"/>
<SysRecvBufSize value="65535"/>
<SysSendBufSize value="65535"/>
</Channel>
</ChannelList>
</ChannelGroup>
<ServerGroup>
<ServerList>
<Server>
<Name value="Server_1"/>
<ServerType value="ServerType::RSSL_SOCKET"/>
<!-- CompressionType is optional: defaulted to None -->
<!-- possible values: None, ZLib, LZ4 -->
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<!-- ConnectionPingTimeout is optional: defaulted to 30000 -->
<ConnectionPingTimeout value="30000"/>
<!-- TcpNodelay is optional: defaulted to 1 -->
<!-- possible values: 1 (tcp_nodelay option set), 0 (tcp_nodelay not set) -->
<TcpNodelay value="1"/>
<Port value="14002"/>
</Server>
<Server>
<Name value="Server_2"/>
<!-- For WS connection server could use also RSSL_SOCKET type -->
<ServerType value="ServerType::RSSL_WEBSOCKET"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="1"/>
<Port value="15000"/>
<!-- There are optional and used for applying WS connection -->
<MaxFragmentSize value="6144"/>
<WsProtocols value="rssl.json.v2, rssl.rwf, tr_json2"/>
</Server>
<Server>
<Name value="EncryptedServer"/>
<ServerType value="ServerType::RSSL_ENCRYPTED"/>
<!-- CompressionType is optional: defaulted to None -->
<!-- possible values: None, ZLib, LZ4 -->
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<!-- ConnectionPingTimeout is optional: defaulted to 30000 -->
<ConnectionPingTimeout value="30000"/>
<!-- TcpNodelay is optional: defaulted to 1 -->
<!-- possible values: 1 (tcp_nodelay option set), 0 (tcp_nodelay not set) -->
<TcpNodelay value="1"/>
<Port value="14002"/>
</Server>
<!--Performance tools server -->
<Server>
<Name value="Perf_Server_1"/>
<ServerType value="ServerType::RSSL_SOCKET"/>
<CompressionType value="CompressionType::None"/>
<GuaranteedOutputBuffers value="5000"/>
<ConnectionPingTimeout value="30000"/>
<TcpNodelay value="0"/>
<Port value="14002"/>
<HighWaterMark value="0"/>
<InterfaceName value=""/>
<DirectWrite value="1" />
<MaxFragmentSize value="6144"/>
<NumInputBuffers value="10000"/>
<SysRecvBufSize value="65535"/>
<SysSendBufSize value="65535"/>
</Server>
</ServerList>
</ServerGroup>
<WarmStandbyServerInfoGroup>
<WarmStandbyServerInfoList>
<WarmStandbyServerInfo>
<Name value="Server_Info_1"/>
<Channel value="Channel_1"/>
<PerServiceNameSet value=""/>
</WarmStandbyServerInfo>
<WarmStandbyServerInfo>
<Name value="Server_Info_2"/>
<Channel value="Channel_7"/>
<PerServiceNameSet value=""/>
</WarmStandbyServerInfo>
</WarmStandbyServerInfoList>
</WarmStandbyServerInfoGroup>
<WarmStandbyGroup>
<WarmStandbyList>
<WarmStandbyChannel>
<Name value="WarmStandbyChannel_1"/>
<StartingActiveServer value="Server_Info_1"/>
<StandbyServerSet value="Server_Info_2"/>
<WarmStandbyMode value="WarmStandbyMode::LOGIN_BASED"/>
</WarmStandbyChannel>
</WarmStandbyList>
</WarmStandbyGroup>
<!-- source directory refresh configuration used by provider -->
<DirectoryGroup>
<!-- DefaultDirectory specifies Directory used as default if providers do not specify Directory name -->
<DefaultDirectory value="Directory_1"/>
<DirectoryList>
<!-- providers refer to the Directory by name -->
<!-- Directory is a set of Services (one or more) on which a provider will provide item data -->
<Directory>
<Name value="Directory_1"/>
<Service>
<Name value="TEST_NI_PUB"/>
<InfoFilter>
<!-- optional value; if not specified EMA will assign it -->
<ServiceId value="11"/>
<!-- optional value -->
<Vendor value="company name"/>
<!-- possible values: 0 - means consolidation service, 1 - means original provider -->
<IsSource value="0"/>
<!-- an array of market domains supported by this service -->
<!-- domains defined in the RDM Usage Guide may be refered by name -->
<!-- names of the RDM defined domains are listed in the EmaRdm.h file -->
<!-- e.g. MMT_MARKET_PRICE, MMT_MARKET_BY_ORDER -->
<!-- note that the capabilities may be specified with names and or numbers -->
<Capabilities>
<CapabilitiesEntry value="MMT_MARKET_PRICE"/>
<CapabilitiesEntry value="MMT_MARKET_BY_ORDER"/>
</Capabilities>
<!-- list of dictionary names specified in the DictionaryGroup -->
<!-- EMA will populate the Service::InfoFilter::DictionariesProvided element -->
<!-- with the respective <>ItemName values -->
<DictionariesProvided>
<DictionariesProvidedEntry value="Dictionary_3"/>
</DictionariesProvided>
<!-- list of dictionary names specified in the DictionaryGroup -->
<!-- EMA will populate the Service::InfoFilter::DictionariesUsed element -->
<!-- with the respective <>ItemName values -->
<DictionariesUsed>
<DictionariesUsedEntry value="Dictionary_3"/>
</DictionariesUsed>
<!-- list of QoS values supported by this service -->
<!-- possible values are listed in the OmmQos.h file of the EMA -->
<QoS>
<QoSEntry>
<Timeliness value="Timeliness::RealTime"/>
<Rate value="Rate::TickByTick"/>
</QoSEntry>
<QoSEntry>
<Timeliness value="Timeliness::InexactDelayed"/>
<Rate value="Rate::JustInTimeConflated"/>
</QoSEntry>
</QoS>
<!-- 0 means does not support, 1 - means supports QoS range -->
<SupportsQoSRange value="0"/>
<!-- name of item list -->
<ItemList value="#.itemlist"/>
<!-- 0 means does not accept, 1 - means accepts consumer status -->
<AcceptingConsumerStatus value="0"/>
<!-- 0 means does not support, 1 - means supports out of band snapshots -->
<SupportsOutOfBandSnapshots value="0"/>
</InfoFilter>
<!-- StateFilter is optional -->
<!-- EMA will default the values as follows: -->
<!-- for interactive provider -->
<!-- - ServiceState is "up" and AcceptingRequests is "Yes" -->
<!-- for non interactive provider -->
<!-- - ServiceState is "up" and AcceptingRequests is "No" -->
<StateFilter>
<!-- 0 means service is down, 1 - means service is up (default; 1) -->
<ServiceState value="1"/>
<!-- 0 means service does not accept, 1 - means service accepts (default; 1) -->
<AcceptingRequests value="1"/>
<!-- optional; specifies status change to apply to all items provided by this service -->
<!-- possible values are listed in the OmmState.h file of the EMA -->
<Status>
<!-- possible values are: Open, Close, CloseRecover -->
<StreamState value="StreamState::Open"/>
<!-- possibe values are: NoChange, Ok, Suspect -->
<DataState value="DataState::Ok"/>
<!-- possible values are: None, DacsDown, etc -->
<StatusCode value="StatusCode::None"/>
<!-- a text field -->
<StatusText value=""/>
</Status>
</StateFilter>
</Service>
<Service>
<Name value="NI_PUB"/>
<InfoFilter>
<DictionariesProvided>
<DictionariesProvidedEntry value="Dictionary_3"/>
</DictionariesProvided>
<DictionariesUsed>
<DictionariesUsedEntry value="Dictionary_3"/>
</DictionariesUsed>
<Vendor value="company name"/>
<IsSource value="0"/>
<Capabilities>
<CapabilitiesEntry value="6"/>
<CapabilitiesEntry value="MMT_MARKET_BY_ORDER"/>
</Capabilities>
<QoS>
<QoSEntry>
<Timeliness value="Timeliness::RealTime"/>
<Rate value="Rate::TickByTick"/>
</QoSEntry>
</QoS>
<SupportsQoSRange value="0"/>
<ItemList value="#.itemlist"/>
<AcceptingConsumerStatus value="0"/>
<SupportsOutOfBandSnapshots value="0"/>
</InfoFilter>
<StateFilter>
<ServiceState value="1"/>
<AcceptingRequests value="1"/>
<Status>
<StreamState value="StreamState::Open"/>
<DataState value="DataState::Ok"/>
<StatusCode value="StatusCode::None"/>
<StatusText value=""/>
</Status>
</StateFilter>
</Service>
</Directory>
<Directory>
<Name value="Directory_2"/>
<Service>
<Name value="DIRECT_FEED"/>
<InfoFilter>
<ServiceId value="1"/>
<DictionariesProvided>
<DictionariesProvidedEntry value="Dictionary_3"/>
</DictionariesProvided>
<DictionariesUsed>
<DictionariesUsedEntry value="Dictionary_3"/>
</DictionariesUsed>
<Vendor value="company name"/>
<IsSource value="0"/>
<Capabilities>
<CapabilitiesEntry value="6"/>
<CapabilitiesEntry value="MMT_MARKET_BY_ORDER"/>
<CapabilitiesEntry value="MMT_MARKET_BY_PRICE"/>
<CapabilitiesEntry value="MMT_DICTIONARY"/>
<CapabilitiesEntry value="200"/>
</Capabilities>
<QoS>
<QoSEntry>
<Timeliness value="Timeliness::RealTime"/>
<Rate value="Rate::TickByTick"/>
</QoSEntry>
<QoSEntry>
<Timeliness value="100"/>
<Rate value="100"/>
</QoSEntry>
</QoS>
<SupportsQoSRange value="0"/>
<ItemList value="#.itemlist"/>
<AcceptingConsumerStatus value="0"/>
<SupportsOutOfBandSnapshots value="0"/>
</InfoFilter>
<StateFilter>
<ServiceState value="1"/>
<AcceptingRequests value="1"/>
</StateFilter>
</Service>
</Directory>
<Directory>
<Name value="Directory_3"/>
<Service>
<Name value="TEST_NI_PUB"/>
<InfoFilter>
<ServiceId value="11"/>
<Vendor value="company name"/>
<IsSource value="0"/>
<Capabilities>
<CapabilitiesEntry value="MMT_MARKET_PRICE"/>
<CapabilitiesEntry value="MMT_MARKET_BY_ORDER"/>
</Capabilities>
<DictionariesProvided>
<DictionariesProvidedEntry value="Dictionary_3"/>
</DictionariesProvided>
<DictionariesUsed>
<DictionariesUsedEntry value="Dictionary_3"/>
</DictionariesUsed>
<QoS>
<QoSEntry>
<Timeliness value="Timeliness::RealTime"/>
<Rate value="Rate::TickByTick"/>
</QoSEntry>
<QoSEntry>
<Timeliness value="Timeliness::InexactDelayed"/>
<Rate value="Rate::JustInTimeConflated"/>
</QoSEntry>
</QoS>
<SupportsQoSRange value="0"/>
<ItemList value="#.itemlist"/>
<AcceptingConsumerStatus value="0"/>
<SupportsOutOfBandSnapshots value="0"/>
</InfoFilter>
<StateFilter>
<ServiceState value="1"/>
<AcceptingRequests value="1"/>
<Status>
<StreamState value="StreamState::Open"/>
<DataState value="DataState::Ok"/>
<StatusCode value="StatusCode::None"/>
<StatusText value=""/>
</Status>
</StateFilter>
</Service>
<Service>
<Name value="NI_PUB"/>
<InfoFilter>
<DictionariesProvided>
<DictionariesProvidedEntry value="Dictionary_3"/>
</DictionariesProvided>
<DictionariesUsed>
<DictionariesUsedEntry value="Dictionary_3"/>
</DictionariesUsed>
<Vendor value="company name"/>
<IsSource value="0"/>
<Capabilities>
<CapabilitiesEntry value="6"/>
<CapabilitiesEntry value="MMT_MARKET_BY_ORDER"/>
</Capabilities>
<QoS>
<QoSEntry>
<Timeliness value="Timeliness::RealTime"/>
<Rate value="Rate::TickByTick"/>
</QoSEntry>
</QoS>
<SupportsQoSRange value="0"/>
<ItemList value="#.itemlist"/>
<AcceptingConsumerStatus value="0"/>
<SupportsOutOfBandSnapshots value="0"/>
</InfoFilter>
<StateFilter>
<ServiceState value="1"/>
<AcceptingRequests value="1"/>
<Status>
<StreamState value="StreamState::Open"/>
<DataState value="DataState::Ok"/>
<StatusCode value="StatusCode::None"/>
<StatusText value=""/>
</Status>
</StateFilter>
</Service>
</Directory>
<Directory>
<Name value="Directory_4"/>
<Service>
<Name value="DIRECT_FEED"/>
<InfoFilter>
<ServiceId value="1"/>
<DictionariesProvided>
<DictionariesProvidedEntry value="Dictionary_3"/>
</DictionariesProvided>
<DictionariesUsed>
<DictionariesUsedEntry value="Dictionary_3"/>
</DictionariesUsed>
<Vendor value="company name"/>
<IsSource value="0"/>
<Capabilities>
<CapabilitiesEntry value="6"/>
<CapabilitiesEntry value="MMT_MARKET_BY_ORDER"/>
<CapabilitiesEntry value="MMT_MARKET_BY_PRICE"/>
<CapabilitiesEntry value="MMT_DICTIONARY"/>
<CapabilitiesEntry value="200"/>
</Capabilities>
<QoS>
<QoSEntry>
<Timeliness value="Timeliness::RealTime"/>
<Rate value="Rate::TickByTick"/>
</QoSEntry>
<QoSEntry>
<Timeliness value="100"/>
<Rate value="100"/>
</QoSEntry>
</QoS>
<SupportsQoSRange value="0"/>
<ItemList value="#.itemlist"/>
<AcceptingConsumerStatus value="0"/>
<SupportsOutOfBandSnapshots value="0"/>
</InfoFilter>
<StateFilter>
<ServiceState value="1"/>
<AcceptingRequests value="1"/>
</StateFilter>
</Service>
</Directory>
<Directory>
<Name value="Perf_Directory_1"/>
<Service>
<Name value="NI_PUB"/>
<InfoFilter>
<ServiceId value="1"/>
<DictionariesProvided>
<DictionariesProvidedEntry value="Dictionary_3"/>
</DictionariesProvided>
<DictionariesUsed>
<DictionariesUsedEntry value="Dictionary_3"/>
</DictionariesUsed>
<Vendor value="RefinitivDevTestLab"/>
<IsSource value="0"/>
<Capabilities>
<CapabilitiesEntry value="MMT_DICTIONARY"/>
<CapabilitiesEntry value="MMT_MARKET_PRICE"/>
<CapabilitiesEntry value="MMT_MARKET_BY_ORDER"/>
<CapabilitiesEntry value="MMT_MARKET_BY_PRICE"/>
<CapabilitiesEntry value="200"/>
</Capabilities>
<QoS>
<QoSEntry>
<Timeliness value="Timeliness::RealTime"/>
<Rate value="Rate::TickByTick"/>
</QoSEntry>
<QoSEntry>
<Timeliness value="100"/>
<Rate value="100"/>
</QoSEntry>
</QoS>
<SupportsQoSRange value="0"/>
<ItemList value="#.itemlist"/>
<AcceptingConsumerStatus value="0"/>
<SupportsOutOfBandSnapshots value="0"/>
</InfoFilter>
<StateFilter>
<ServiceState value="1"/>
<AcceptingRequests value="1"/>
</StateFilter>
</Service>
</Directory>
</DirectoryList>
</DirectoryGroup>
<DictionaryGroup>
<DictionaryList>
<Dictionary>
<Name value="Dictionary_1"/>
<!-- dictionaryType is optional: defaulted to ChannelDictionary" -->
<!-- possible values: ChannelDictionary, FileDictionary -->
<!-- if dictionaryType is set to ChannelDictionary, file names are ignored -->
<DictionaryType value="DictionaryType::ChannelDictionary"/>
</Dictionary>
<Dictionary>
<Name value="Dictionary_2"/>
<DictionaryType value="DictionaryType::FileDictionary"/>
<!-- dictionary names are optional: defaulted to RDMFieldDictionary and enumtype.def -->
<RdmFieldDictionaryFileName value="./RDMFieldDictionary"/>
<EnumTypeDefFileName value="./enumtype.def"/>
</Dictionary>
<Dictionary>
<Name value="Dictionary_3"/>
<!-- providers always assume DictionaryType = DictionaryType::FileDictionary -->
<DictionaryType value="DictionaryType::FileDictionary"/>
<!-- dictionary file names are optional: defaulted to ./RDMFieldDictionary and ./enumtype.def -->
<RdmFieldDictionaryFileName value="./RDMFieldDictionary"/>
<EnumTypeDefFileName value="./enumtype.def"/>
<!-- <dictionary>ItemName represents the names shown in DictionariesProvided and DictionariesUsed
elements of the Directory InfoFilter -->
<!-- <dictionary>ItemName is optional; default values are "RWFFld" for the RdmFieldDictionary
and "RWFEnum" for the enumtype.def -->
<RdmFieldDictionaryItemName value="RWFFld"/>
<EnumTypeDefItemName value="RWFEnum"/>
</Dictionary>
</DictionaryList>
</DictionaryGroup>
</EmaConfig>