How to set groupId correctly in TREP FH

I am trying to add groupId to the refreshMsg and statusMsg in TREP FH using the following:


RsslBuffer group = RSSL_INIT_BUFFER;

group = {2, (char*)"2"};


refreshMsg.groupId = {2, (char*)"2"};

statusMsg.groupId = {2, (char*)"2"};


I see difference in testclient groupId in refreshMsg and statusMsg. Below is the data. Shouldn't they be the same? Also I enabled XML trace and the XML output is there.



XML:

<refreshMsg domainType="RSSL_DMT_MARKET_BY_ORDER" streamId="602577620" containerType="RSSL_DT_MAP" flags="0x11AA (RSSL_RFMF_HAS_PERM_DATA|RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_HAS_QOS|RSSL_RFMF_CLEAR_CACHE|RSSL_RFMF_HAS_PART_NUM)" groupId="0" partNum="0" permData="0300 0033 0C" qosDynamic="0"



TESTCLIENT:

<refreshMsg domainType="RSSL_DMT_MARKET_BY_ORDER" streamId="5" containerType="RSSL_DT_MAP" flags="0x10AA (RSSL_RFMF_HAS_PERM_DATA|RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_HAS_QOS|RSSL_RFMF_HAS_PART_NUM)" groupId="8" partNum="1" permData="0301 2A33 0C" qosDynamic="0" qosRate="1" qosTimeliness="1" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="" dataSize="64513">





statusMsg.groupId = {2, (char*)"2"};

XML:

<statusMsg domainType="RSSL_DMT_MARKET_BY_ORDER" streamId="602577620" containerType="RSSL_DT_NO_DATA" flags="0x30 (RSSL_STMF_HAS_GROUP_ID|RSSL_STMF_HAS_STATE)" groupId="12800" dataState="RSSL_DATA_SUSPECT" streamState="RSSL_STREAM_CLOSED_RECOVER"


TESTCLIENT:

<statusMsg domainType="RSSL_DMT_MARKET_BY_ORDER" streamId="5" containerType="RSSL_DT_NO_DATA" flags="0x38 (RSSL_STMF_HAS_MSG_KEY|RSSL_STMF_HAS_GROUP_ID|RSSL_STMF_HAS_STATE)" groupId="12" dataState="RSSL_DATA_SUSPECT" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE"



Best Answer

  • @vishal.anand

    Thank you for reaching out to us.

    The code should be like this:

        char groupId[] = { 0x00, 0x02};
        RsslBuffer group;
        group.length = 2;
        group.data = groupId;
        refreshMsg.groupId = group;

    If a consumer connects to a provider directly, the consumer will get this.

    <REFRESH domainType="MARKET_PRICE" streamId="3" containerType="FIELD_LIST" flags="0x1E8 (HAS_MSG_KEY|SOLICITED|REFRESH_COMPLETE|HAS_QOS|CLEAR_CACHE)" groupId="2" Qos: Realtime/TickByTick/Static - timeInfo: 0 - rateInfo: 0 State: Open/Ok/None - text: "Item Refresh Completed" dataSize="54">
        <key flags="0x07 (HAS_SERVICE_ID|HAS_NAME|HAS_NAME_TYPE)" serviceId="1" name="IBM.N" nameType="1"/>

    However, if a consumer gets the data from RTDS (TREP), RTDS may change the value of the groupId.

    Please kindly contact the RTDS support team directly via MyRefinitiv to verify the behavior of RTDS regarding the groupId.


Answers


  • @Jirapongse
    i did the following:

    I still see via RTDS that the groupId is 22 for refresh Message and 23 in status message.

    char groupId[] = { 0x00, 0x02};

    RsslBuffer group;

    group.length = 2;

    group.data = groupId;

    refreshMsg.groupId = group;

    statusMsg.groupId = group;

    <refreshMsg domainType="RSSL_DMT_MARKET_BY_ORDER" streamId="5" containerType="RSSL_DT_MAP" flags="0x11AA (RSSL_RFMF_HAS_PERM_DATA|RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_HAS_QOS|RSSL_RFMF_CLEAR_CACHE|RSSL_RFMF_HAS_PART_NUM)" groupId="22" partNum="0" permData="0301 2A33 0C" qosDynamic="0" qosRate="1" qosTimeliness="1" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="" dataSize="369">

    <statusMsg domainType="RSSL_DMT_MARKET_BY_ORDER" streamId="5" containerType="RSSL_DT_NO_DATA" flags="0x38 (RSSL_STMF_HAS_MSG_KEY|RSSL_STMF_HAS_GROUP_ID|RSSL_STMF_HAS_STATE)" groupId="23" dataState="RSSL_DATA_SUSPECT" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="*Reset Received For Source "330", MARKET_LEVEL_RESET. Clear Orderbook" dataSize="0">

  • continuing @Jirapongse

    query directly to provider


    <refreshMsg domainType="RSSL_DMT_MARKET_BY_ORDER" streamId="5" containerType="RSSL_DT_MAP" flags="0x10A8 (RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_HAS_QOS|RSSL_RFMF_HAS_PART_NUM)" groupId="0" partNum="1" qosDynamic="0" qosRate="1" qosTimeliness="1" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="" dataSize="64442">



    <statusMsg domainType="RSSL_DMT_MARKET_BY_ORDER" streamId="5" containerType="RSSL_DT_NO_DATA" flags="0x30 (RSSL_STMF_HAS_GROUP_ID|RSSL_STMF_HAS_STATE)" groupId="2" dataState="RSSL_DATA_SUSPECT" streamState="RSSL_STREAM_CLOSED_RECOVER" code="RSSL_SC_NONE" text="Reset Received For Source "330", MARKET_LEVEL_RESET. Clear Orderbook" dataSize="0">



    Why am I getting different groupId for refresh and status message even though I am using the same groupId?

  • @vishal.anand

    Could you please modify the Provider example in the ETA package to replicate this issue?

    Then, please share the code.

    What version of the ETA API are you using?