Discover Refinitiv
MyRefinitiv Refinitiv Perspectives Careers
Created with Sketch.
All APIs Questions & Answers  Register |  Login
Ask a question
  • Questions
  • Tags
  • Badges
  • Unanswered
Search:
  • Home /
  • Elektron /
  • EMA /
avatar image
Question by nm · Apr 25, 2019 at 02:27 PM · emac++how torfa marketdata migration

How to maintain an image/cache in EMA? We are moving from RFA MarketData API to EMA.

After going through the EMA documentation, I am not sure if EMA is providing any mechanism to maintain a cached image and applying updates to it.

We used to do it using only a few lines of code in RFA MarketData. We are subscribing to market price service. In RFA MarketData code we maintain a cached full image in a TibMsg object.

TibMsg m_RawImage;

We populate the TibMsg object when we get an initial image from the RFA callback using the following code:

void ProcessItemImage(const MarketDataItemEvent& event)
{
  const rfa::common::Buffer& buffer = event.getBuffer();
  switch (event.getDataFormat())
    {
      case MarketDataEnums::Marketfeed:
        if (!buffer.isEmpty())
        {
          TibMsg msg;
          TibErr err = msg.UnPack((char*)buffer.c_buf(), buffer.size());
          assert(err.code == TIBMSG_OK);
          CopyTibMsg(m_RawImage, msg);
.
.
.

When we get a update message callback from RFA we apply the update to the cached full image using the following code:

void ProcessItemUpdate(const MarketDataItemEvent& event)
{
  const rfa::common::Buffer& buffer = event.getBuffer();
  switch (event.getDataFormat())
  {
    case MarketDataEnums::Marketfeed:
      if (!buffer.isEmpty())
      {
        TibMsg msg;
        TibErr err = msg.UnPack((char*)buffer.c_buf(), buffer.size());
        assert(err.code == TIBMSG_OK);
        if (err.code != TIBMSG_OK)
          return;
        UpdateTibMsg(m_RawImage, msg);
.
.
}
bool UpdateTibMsg(TibMsg& image, TibMsg& delta)
{
  TibField field;
  bool ret = false;
  for (field.First(δ); field.status==TIBMSG_OK; field.Next())
  {
    TibErr err = image.Update(&field);
    ret |= (err.code == TIBMSG_OK);
  }
  return ret;
}

What is the equivalent thing to do in EMA? What object can we cache?

The documentation clearly says this:

Warning! The Data class and all classes that inherit from it are designed as temporary and short-lived objects. For this reason, do not use them as storage or caching devices.

Do we need to implement our own classes for caching and applying updates?

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.

1 Reply

  • Sort: 
avatar image
REFINITIV
Best Answer
Answer by chavalit.jintamalit · Apr 25, 2019 at 10:04 PM

Hi @nm

You can follow this tutorial to decode message.

You can extract any interested information from this step.

And you have to create your own class to keep the information from refresh(equivalent to image in TibMsg) or update to your own cache.

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

When does a handle returned by thomsonreuters::ema::access::OmmConsumer::registerClient become invalid?

configure channel set using programmatically

Where can I find sample EMA C++ MRN code for Elektron API 3.1? not in the Elektron-SDK1.1.0.win_0 100-440 examples.

EMA C++ - Buffer overflow on debugging with strace

Closing a batch stream in EMA

  • Feedback
  • Copyright
  • Cookie Policy
  • Privacy Statement
  • Terms of Use
  • Careers
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Alpha
  • App Studio
  • Block Chain
  • Bot Platform
  • Calais
  • Connected Risk APIs
  • DSS
  • Data Fusion
  • Data Model Discovery
  • Datastream
  • Eikon COM
  • Eikon Data APIs
  • Elektron
    • EMA
    • ETA
    • WebSocket API
  • Legal One
  • Messenger Bot
  • Messenger Side by Side
  • ONESOURCE
    • Indirect Tax
  • Open PermID
    • Entity Search
  • Org ID
  • PAM
    • PAM - Logging
  • ProView
  • ProView Internal
  • Product Insight
  • Project Tracking
  • 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
  • TRIT
  • TRKD
  • TRTH
  • Thomson One Smart
  • Transactions
    • REDI API
  • Velocity Analytics
  • Wealth Management Web Services
  • World-Check Data File
  • Explore
  • Tags
  • Questions
  • Badges