[EMA C++] Receive some chain code repeatly

refreshmsg-repeat.txthello:

I develop with EMA C++;

The service I connect to is "EZD";

My log is shown as the appendix.

I request chain of HKSE, but I received some chain code more than once between 9:00 and 9:30, why?

For Example in the log;

1、I request “0#/MBD.HK” at 12-28 09:26:32;

2、I received “10#/MBD.HK” at 12-28 09:26: as shown at line 523

3、I get all the MBD.HK at 12-28 09:26:53,which is shown at line 3455 in the log;

4、I request chain "0#NYSECONS.K" at 12-28 09:27:19 as showm at line 3600refreshmsg-repeat.txt

5、but I received 10#/MBD.HK at 12-28 09:27:23 again as shown at line 4791

Best Answer

  • @luxiangyuan

    1. In this case, "unsolicited refresh" was sent for data resynchronization. It did not reflect market activities.

    2. If there is any change with Chain RICs, you normally receive updates in updateMsg. However, if error is detected on stream, you should receive unsolicited refreshMsg which contains latest data for all fields.

    3. If you specify interestAfterRefresh (false), you will get only one snapshot refresh and not get any updates with Chain RICS.

    If your application needs to handle updates with Chain RICS, your application needs to specify interestAfterRefresh (true). To handle the unsolicited refresh message, application should verify whether refreshMsg is solicited or unsolicited via Refresh::getSolicited() function. If refreshMsg is unsolicited, application just updates all constituent RICs in LONGLINK1 - LONGLINK14 fields. If there is no change on LONGNEXTLR field, application skips requesting next Chain RIC.

Answers

  • @luxiangyuan

    From the log file, the application received an unsolicited Refresh message for 8#/MBD.HK at line: 4639, so that the application processed the message, and then request next Chain RICs and so on. The unsolicited refresh is a refresh pushed out by upstream provider, if some kind of information change occurs (e.g., an error detected on a stream). It is not provided as a response to a request.

    If your application doesn't aim to handle any changes (e.g. update, unsolicited refresh) on Chain RICs, your application can send snapshot requests for only Chain RICs by specifying interestAfterRefresh( false ).

  • hello .rungruengrayubkul:

    thank you very much, I read your answer, but I have some questions.

    1、 "unsolicited refresh" I received is lawful?

    2、when there is update with Chain RICS, what I receive is RefreshMsg, not the updateMSg?

    3、if I specifying interestAfterRefresh( false ), What should I do if there is update with Chain RICS?