RFA to download dictionary and save as a re-useable local dictionary

Is it is possible for RFA to download dictionary from ADS/ADH and save that dictionary for local use next time the app runs?
Best Answer
-
Yes, it is possible.
RDMFieldDictionary provides functions (encodeRDMFieldDictionary() and encodeRDMEnumDictionary()) to encode Series from RDMFieldDictionary. After that, the application can write the encoded buffer of Series to binary files.
#include <fstream>
…
void Consumer::processDictionariesComplete()
{
rfa::rdm::RDMFieldDictionary& dict = getRDMFieldDict();
rfa::data::Series rdmSeries;
rfa::data::Series enumSeries;
//Encode dictionary to Series
dict.encodeRDMFieldDictionary(rdmSeries);
dict.encodeRDMEnumDictionary(enumSeries);
ofstream rdmFile("rdmfield.bin", ios::out | ios::binary);
ofstream enumFile("enumtype.bin", ios::out | ios::binary);
//Get Encoded buffer of Series
const rfa::common::Buffer& rdmBuffer = rdmSeries.getEncodedBuffer();
const rfa::common::Buffer& enumBuffer = enumSeries.getEncodedBuffer();
//Write encoded buffer to binary files
rdmFile.write(reinterpret_cast<const char*>(rdmBuffer.c_buf()), rdmBuffer.size());
enumFile.write(reinterpret_cast<const char*>(enumBuffer.c_buf()), enumBuffer.size());
rdmFile.close();
enumFile.close();
…
}Then, the application can read those binary files and set the encoded buffers to the Series and then use RDMFieldDictionary::decodeRDMFieldDictionary() and RDMFieldDictionary::decodeRDMEnumDictionary() to decode the Series.
char* Consumer::ReadAllBytes(const char* filename, int* read)
{
ifstream ifs(filename, ios::binary | ios::ate);
ifstream::pos_type pos = ifs.tellg();
int length = pos;
char *pChars = new char[length];
ifs.seekg(0, ios::beg);
ifs.read(pChars, length);
ifs.close();
*read = length;
return pChars;
}
void Consumer::DecodeDictionaryFromFiles()
{
rfa::rdm::RDMFieldDictionary& newDict = rfa::rdm::RDMFieldDictionary::create();
rfa::data::Series rdmSeries, enumSeries;
rfa::common::Buffer rdmBuffer, enumBuffer;
int rdmSize, enumSize;
char* rdmSeriesData = ReadAllBytes("rdmfield.bin", &rdmSize);
char* enumSeiresData = ReadAllBytes("enumtype.bin", &enumSize);
//Set binary data to the buffers
rdmBuffer.setFrom(reinterpret_cast<const unsigned char*>(rdmSeriesData), rdmSize);
enumBuffer.setFrom(reinterpret_cast<const unsigned char*>(enumSeiresData), enumSize);
//Set buffers to Series
rdmSeries.setEncodedBuffer(rdmBuffer);
enumSeries.setEncodedBuffer(enumBuffer);
//Decode Series with RDMFieldDictionary
newDict.decodeRDMFldDictionary(rdmSeries);
newDict.decodeRDMEnumDictionary(enumSeries);
delete rdmSeriesData;
delete enumSeiresData;
}0
Answers
-
Hi @Akechi Sato
As you may know, changes are made to the dictionary as & when required by Thomson Reuters e.g. there have been 5 dictionary service packs released in the past 6 months to add new Fields and update/add Enumeration types.
If the application consumes data which contains a new Field that does not exist in the local cached dictionary or if the definition of the field or list of enumerated values have changed, the application could experience a problem.
Please make your client aware of this.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 690 Datastream
- 1.4K DSS
- 629 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 559 WebSocket API
- 39 FX Venues
- 15 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 25 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 280 Open PermID
- 45 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 717 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 106 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 95 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛