Is there way to give specific location to the emaconfig.xml file instead of using the default location (where the binary is available)
In EMA Java, it's hard code to read EmaConfig.xml where the EMA application is run from. The source code is loadFile() of ConfigReader.java in <Elektron SDK java package>\Ema\Src\main\java\impl\com\thomsonreuters\ema\access as shown below:
You can modify the source code above to read EmaConfig.xml which is not in application run directory. For example to read EmaConfig.xml in \workspace:
protected void loadFile() { _configFileName = "EmaConfig.xml"; _configFileLocation = "D:\\workspace\\"; errorTracker().append( "reading configuration file [" ) .append( _configFileName ) .append( "] from [" ).append( _configFileLocation ).append ("]") .create(Severity.INFO); XMLConfiguration config = null; try { config = new XMLConfiguration(_configFileLocation+_configFileName); } catch (ConfigurationException e) { errorTracker().append(e.getMessage()).create(Severity.ERROR); return; }
Thanks
Is this similar in c++.
We have to modify the source code and build it to give specific path other than binary location
Hi @thimalk
For the C++ version, you may also be interested in "example 421__MarketPrice__ProgrammaticConfig"
This shows how you can populate the OmmConsumerConfig programmatically - rather than relying on EmaConfig.xml
As you know if EmaConfig.xml is missing then EMA defaults values - as described in the EMACPP ConfigGuide
You could then override the defaults programatically using your config values read from another location.
The next ESDK release - ESDK release 1.1.1 - will include a feature that allows application developers to supply an optional path to a configuration file. The path may be a directory, in which case the library will load a file named EmaConfig.xml from that directory, or a filename.
In Java, one will supply this path as an argument to createOmmConsumerConfig; see the example111__MarketPrice__UserSpecifiedFileConfig example for more details. This example is new for this release.
In C++, one will supply this path as an argument to the OmmConsumerConfig constructor; see the 111__MarketPrice__UserSpecifiedFileConfig example for more details. This example is new for this release.