Discover Refinitiv
MyRefinitiv Refinitiv Perspectives Careers
Created with Sketch.
All APIs Questions & Answers  Register |  Login
Ask a question
  • Questions
  • Tags
  • Badges
  • Unanswered
Search:
  • Home /
  • TREP APIs /
  • RFA /
avatar image
Question by Akechi Sato · Mar 06, 2017 at 01:26 AM · treprfarfa-apielektron-data-dictionary

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?

People who like this

0 Show 0
Comment
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

2 Replies

  • Sort: 
avatar image
REFINITIV
Best Answer
Answer by Jirapongse · Mar 06, 2017 at 01:55 AM

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; 
} 
Comment

People who like this

0 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

avatar image
REFINITIV
Answer by umer.nalla · Mar 06, 2017 at 05:27 AM

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.

Comment

People who like this

0 Show 0 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Watch this question

Add to watch list
Add to your watch list to receive emailed updates for this question. Too many emails? Change your settings >
7 People are following this question.

Related Questions

What is the max length of a field name (ACRONYM) in the appendix_a or RDMFieldDictionary?

As a consumer, can we download the Field/Enum Dictionary on service start up or must we load from the files provided in the API?

Proper RDM dictionaries usage questions

How to know the RIC for each Update?

RFA EU composite volume

  • Copyright
  • Cookie Policy
  • Privacy Statement
  • Terms of Use
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Alpha
  • App Studio
  • Block Chain
  • Bot Platform
  • Connected Risk APIs
  • DSS
  • Data Fusion
  • Data Model Discovery
  • Datastream
  • Eikon COM
  • Eikon Data APIs
  • Electronic Trading
    • Generic FIX
    • Local Bank Node API
    • Trading API
  • Elektron
    • EMA
    • ETA
    • WebSocket API
  • Intelligent Tagging
  • Legal One
  • Messenger Bot
  • Messenger Side by Side
  • ONESOURCE
    • Indirect Tax
  • Open Calais
  • Open PermID
    • Entity Search
  • Org ID
  • PAM
    • PAM - Logging
  • ProView
  • ProView Internal
  • Product Insight
  • Project Tracking
  • RDMS
  • Refinitiv Data Platform
    • Refinitiv Data Platform Libraries
  • Rose's Space
  • Screening
    • Qual-ID API
    • Screening Deployed
    • Screening Online
    • World-Check One
    • World-Check One Zero Footprint
  • Side by Side Integration API
  • TR Knowledge Graph
  • TREP APIs
    • CAT
    • DACS Station
    • Open DACS
    • RFA
    • UPA
  • TREP Infrastructure
  • TRKD
  • TRTH
  • Thomson One Smart
  • Transactions
    • REDI API
  • Velocity Analytics
  • Wealth Management Web Services
  • Workspace SDK
    • Element Framework
    • Grid
  • World-Check Data File
  • 中文论坛
  • Explore
  • Tags
  • Questions
  • Badges