I encode a RsslMap in a particular order, e.g.
912810RN0=TWEB 912810RP5=TWEB 912810RQ3=TWEB 912810RS9=TWEB
I feed this into a value-add payload cache (rsslPayloadEntryApply) and extract (rsslPayloadEntryRetrieve) on each client request.
With RSSL tracing enabled though the ordering is different:
<mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="912810RS9=TWEB" > </mapEntry> <mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="912810RP5=TWEB" > </mapEntry> <mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="912810RQ3=TWEB" > </mapEntry> <mapEntry flags="0x0" action="RSSL_MPEA_ADD_ENTRY" key="912810RN0=TWEB" > </mapEntry>
Please explain? Is it possible to send out an ordered symbol list? This looks like walking through a red-black tree underlying a "map" implementation. Is should be possible to publish an ordered list say through an RsslVector instead of a RsslMap.
This implies the ordering is an artifact of the TREP payload cache and thus cannot be avoided.
It is Value-Add cache that re-order the map content.
The data model for symbol lists and maps is already chosen and I believe it can’t be changed at this point. Besides, keeping these sorted denotes we effectively have to refresh the entire record everytime the ranking changes.
You should consider requesting to extend the exist symbol list map data model to allow for ranking such that client side APIs will be able to sort all symbol lists reliably.