totalCountHint incorrectly set by API for multi-part refresh
The documentation for RsslMap indicates totalCountHint should contain an approximate total for the entire map across a multi-part response. When specifying a hint of zero or none at all the library automatically fills in the count of each single refresh instead. Is this expected?
Best Answer
-
totalCountHint is optional and API should not be able to set its value because it couldn't know the total number of entries across a multi-part response sent by the application.
I believe that the application see the incorrect value because it doesn't verify its presence before accessing it. In UPA, the application should check a RSSL_MPF_HAS_TOTAL_COUNT_HINT flag before accessing the value of totalCountHint.
1
Answers
-
The hint count is being set as I have fed the message through the value-add payload cache.
0 -
From my test, I found that the value-add payload cache can update totalCountHint properly for the multi-part refresh message.
I sent these three part refresh messages and apply those message to cache.
<refreshMsg domainType="RSSL_DMT_SYMBOL_LIST" streamId="400" containerType="RSSL_DT_MAP" flags="0x11A8 (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" qosDynamic="0" qosRate="1" qosTimeliness="1" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="Item Refresh Completed" dataSize="24">
<key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="1" name="_UPA_ITEM_LIST"/>
<dataBody>
<map flags="0x0" countHint="0" keyPrimitiveType="RSSL_DT_BUFFER" containerType="RSSL_DT_NO_DATA" >
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="TRI" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="RES-DS" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING" >
</mapEntry>
</map>
</dataBody>
</refreshMsg>
<refreshMsg domainType="RSSL_DMT_SYMBOL_LIST" streamId="400" 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="Item Refresh Completed" dataSize="26">
<key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="1" name="_UPA_ITEM_LIST"/>
<dataBody>
<map flags="0x0" countHint="0" keyPrimitiveType="RSSL_DT_BUFFER" containerType="RSSL_DT_NO_DATA" >
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING1" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING2" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING3" >
</mapEntry>
</map>
</dataBody>
</refreshMsg>
<refreshMsg domainType="RSSL_DMT_SYMBOL_LIST" streamId="400" containerType="RSSL_DT_MAP" flags="0x10E8 (RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_REFRESH_COMPLETE|RSSL_RFMF_HAS_QOS|RSSL_RFMF_HAS_PART_NUM)" groupId="0" partNum="2"qosDynamic="0" qosRate="1" qosTimeliness="1" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="Item Refresh Completed" dataSize="19">
<key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="1" name="_UPA_ITEM_LIST"/>
<dataBody>
<map flags="0x0" countHint="0" keyPrimitiveType="RSSL_DT_BUFFER" containerType="RSSL_DT_NO_DATA" >
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING4" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING5" >
</mapEntry>
</map>
</dataBody>
</refreshMsg>The following is the message that I got from cache.
<refreshMsg domainType="RSSL_DMT_SYMBOL_LIST" streamId="400" containerType="RSSL_DT_MAP" flags="0x1E8 (RSSL_RFMF_HAS_MSG_KEY|RSSL_RFMF_SOLICITED|RSSL_RFMF_REFRESH_COMPLETE|RSSL_RFMF_HAS_QOS|RSSL_RFMF_CLEAR_CACHE)" groupId="0" qosDynamic="0" qosRate="1" qosTimeliness="1" dataState="RSSL_DATA_OK" streamState="RSSL_STREAM_OPEN" code="RSSL_SC_NONE" text="Item Refresh Completed" dataSize="60">
<key flags="0x3 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME)" serviceId="1" name="_UPA_ITEM_LIST"/>
<dataBody>
<map flags="0x8 (RSSL_MPF_HAS_TOTAL_COUNT_HINT)" countHint="8" keyPrimitiveType="RSSL_DT_BUFFER" containerType="RSSL_DT_NO_DATA" >
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING1" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING2" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING3" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING4" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="MING5" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="RES-DS" >
</mapEntry>
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="TRI" >
</mapEntry>
</map>
</dataBody>
</refreshMsg>The total count hint is set properly.
1 -
But can I extract a multi-part refresh from a single large payload cache?
0 -
Refer to UPAValueAddDevGuide.pdf, you can get a multi-part from the cache.
9.3.3.1 Multi-Part Retrieval
...
For multi-part retrieval, the application makes
a series of calls to rsslPayloadEntryRetrieve to get the OMM container in fragments (e.g. a sequence of maps are
retrieved which together contain the entire set of map entries for the OMM container). In this usage, the optional
RsslPayloadCursorHandle is required to maintain the state of the multi-part retrieval.1 -
Wow, great, thank you very much.
0
Categories
- All Categories
- 6 AHS
- 37 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 59 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛