flag RSSL_UPMF_DO_NOT_CONFLATE ignored by ADH?

Using the UPA C++ API, I am setting the RsslUpdateMessage .flag = RSSL_UPMF_DO_NOT_CONFLATE. However I am seeing a flag value of 0x0 and not 0x80 as expected in the the rmdstestclient output:

<!-- rwfMajorVer="14" rwfMinorVer="0" -->
<updateMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="5" containerType="RSSL_DT_FIELD_LIST" flags="0x0" updateType="0" dataSize="91">
<dataBody>
<fieldList flags="0x9 (RSSL_FLF_HAS_FIELD_LIST_INFO|RSSL_FLF_HAS_STANDARD_DATA)" fieldListNum="0" dictionaryId="0">
<fieldEntry fieldId="12073" dataType="RSSL_DT_RMTES_STRING" data="IBM"/>
<fieldEntry fieldId="1067" dataType="RSSL_DT_TIME" data=" 13:10:46:000"/>
<fieldEntry fieldId="1021" dataType="RSSL_DT_REAL" data="9469596"/>
<fieldEntry fieldId="22" dataType="RSSL_DT_REAL" data="145.64"/>
<fieldEntry fieldId="393" dataType="RSSL_DT_REAL" data="145.64"/>
<fieldEntry fieldId="270" dataType="RSSL_DT_ENUM" data="16"/>
<fieldEntry fieldId="8935" dataType="RSSL_DT_ENUM" data="2"/>
<fieldEntry fieldId="17" dataType="RSSL_DT_DATE" data="8/31/2018"/>
<fieldEntry fieldId="5" dataType="RSSL_DT_TIME" data=" 17:10:46:846"/>
<fieldEntry fieldId="4148" dataType="RSSL_DT_UINT" data="61846846"/>
<fieldEntry fieldId="3386" dataType="RSSL_DT_DATE" data="8/31/2018"/>
<fieldEntry fieldId="1025" dataType="RSSL_DT_TIME" data=" 17:10:46:846"/>
<fieldEntry fieldId="3855" dataType="RSSL_DT_UINT" data="61846846"/>
</fieldList>
</dataBody>
</updateMsg>

Is there some other value that I am missing that needs to be set? The ADH appears to be ignoring the value when I send it across the wire.

Best Answer

  • Yes, you are correct. RSSL_UPMF_DO_NOT_CONFLATE is equivalent to RespMsg::DoNotFilterFlag in RFA C++.

    The code that I used to set the RSSL_UPMF_DO_NOT_CONFLATE flag in UPA C is:

    updateMsg.flags |= RSSL_UPMF_DO_NOT_CONFLATE;

    I have also tested with the ADH and the ADS is 2.6.11.L1. The rmdstestclient can get the RSSL_UPMF_DO_NOT_CONFLATE flag properly from ADS.

    <updateMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="5" containerType="RSSL_DT_FIELD_LIST" flags="0x98 (RSSL_UPMF_HAS_MSG_KEY|RSSL_UPMF_HAS_SEQ_NUM|RSSL_UPMF_DO_NOT_CONFLATE)" updateType="0 (RDM_UPD_EVENT_TYPE_UNSPECIFIED)" seqNum="0" dataSize="38">
    <key flags="0x7 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_NAME_TYPE)" serviceId="4512" name="IBM.N" nameType="1"/>
    </updateMsg>

    TRDPRC_1 : REAL 2 : [12 1/2]
    BID : REAL 2 : [1.03]
    ASK : REAL 2 : [1.07]
    ACVOL_1 : REAL 5 : [100000.00]
    NETCHNG_1 : REAL 3 : [2.15]
    ASK_TIME : TIME 3 : [13:39:51:000]

Answers

  • @billpinsky

    I have tested with ADH 3.2.1.L1 and ADS 3.2.1.L1. The consumer application can retrieve the update message with the RSSL_UPMF_DO_NOT_CONFLATE flag properly.

    The provider published the following update message to ADH.

    <!-- End Message (Channel IPC descriptor = 196) -->
    <!-- Outgoing Message (Channel IPC descriptor = 196) -->
    <!-- Time: 16:11:13:862 -->
    <!-- rwfMajorVer="14" rwfMinorVer="1" -->
    <updateMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="1034" containerType="RSSL_DT_FIELD
    _LIST" flags="0x80 (RSSL_UPMF_DO_NOT_CONFLATE)" updateType="0 (RDM_UPD_EVENT_TYPE_UNSPECIFIED)" dataSize="38">
    <dataBody>
    <fieldList flags="0x8 (RSSL_FLF_HAS_STANDARD_DATA)">
    <fieldEntry fieldId="6" data="1719"/>
    <fieldEntry fieldId="22" data="0C6B"/>
    <fieldEntry fieldId="25" data="0C6F"/>
    <fieldEntry fieldId="32" data="0C00 9896 80"/>
    <fieldEntry fieldId="11" data="0C00 D7"/>
    <fieldEntry fieldId="267" data="100B 0D"/>
    </fieldList>
    </dataBody>
    </updateMsg>

    The consumer application got this update from ADS.

    <!-- Incoming Message (Channel IPC descriptor = 184) -->
    <!-- Time: 16:11:13:946 -->
    <!-- rwfMajorVer="14" rwfMinorVer="1" -->
    <updateMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="6" containerType="RSSL_DT_FIELD_LIST" flags="0x90 (RSSL_UPMF_HAS_SEQ_NUM|RSSL_UPMF_DO_NOT_CONFLATE)" updateType="0 (RDM_UPD_EVENT_TYPE_UNSPECIFIED)" seqNum="0" dataSize="38">
    <dataBody>
    <fieldList flags="0x8 (RSSL_FLF_HAS_STANDARD_DATA)">
    <fieldEntry fieldId="6" data="1719"/>
    <fieldEntry fieldId="22" data="0C6B"/>
    <fieldEntry fieldId="25" data="0C6F"/>
    <fieldEntry fieldId="32" data="0C00 9896 80"/>
    <fieldEntry fieldId="11" data="0C00 D7"/>
    <fieldEntry fieldId="267" data="100B 0D"/>
    </fieldList>
    </dataBody>
    </updateMsg>
    The update message's flag is 0x90 (RSSL_UPMF_HAS_SEQ_NUM|RSSL_UPMF_DO_NOT_CONFLATE). Please verify the version of ADH and ADS.
  • The version of the ADH and the ADS is 2.6.11 load L1

    Thanks. The respnse you posted is what I had hoped to receive. My thinking is that there is some internal flag that needs to be set that I am failing to do. I also have an RFA C++ version of the code that sets the RSSL_UPMF_DO_NOT_CONFLATE flag using this same ADH and ADS, but it does so by using the RFA API's rfa::message::RespMsg::DoNotFilterFlag. Is this the equivalent of what I am doing in setting the updateMsg flag value to RSSL_UPMF_DO_NOT_CONFLATE or do I need to set some other flag in order to view the results correctly in the rmdstestclient?