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
- 6 AHS
- 37 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 59 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛