In order to test our application we are using sink_driven_source reading generated XML messages based on those captured by rmdstestclient.
Can you advise on whether datasize field is required to be correct and if so how is it calculated? From the data captured I am unable to determine what this size relates to.
<!-- rwfMajorVer="14" rwfMinorVer="0" -->
<updateMsg domainType="RSSL_DMT_MARKET_PRICE" streamId="5" containerType="RSSL_DT_FIELD_LIST" flags="0x18 (RSSL_UPMF_HAS_MSG_KEY|RSSL_UPMF_HAS_SEQ_NUM)" updateType="0" seqNum="5470" dataSize="8">
<key flags="0x7 (RSSL_MKF_HAS_SERVICE_ID|RSSL_MKF_HAS_NAME|RSSL_MKF_HAS_NAME_TYPE)" serviceId="467" name="EUR=" nameType="1"/>
<fieldList flags="0x8 (RSSL_FLF_HAS_STANDARD_DATA)">
<fieldEntry fieldId="3293" dataType="RSSL_DT_REAL" data="-0.0062"/>
In another message there datasize = 24 whereas there are 16 characters?Can you advise how to populate the datasize field?
Sorry I have the answer from the Real64.h header file
Real64 values have up to 4 bytes of precision with a 63-bit mantissa (the value) and
a 5-bit value (the magnitude type) representing 22 exponent values and 9 fractional values.
Real64 has a range of -2^63*10^7 to (2^63-1)*10^7 with an accuracy of 19 to 20
decimal digits. Fewer bytes may be used if the full precision is not needed.
RSSL uses binary to represent the REAL data (RSSL_DT_REAL) so it uses 8 bytes to represent this field list.
<fieldList flags="0x8 (RSSL_FLF_HAS_STANDARD_DATA)"> <fieldEntry fieldId="3293" dataType="RSSL_DT_REAL" data="-0.0062"/> </fieldList>
The binary looks like 08 00 01 0c dd 02 0a c2.
From the binary, 0c dd is fieldId (3292) and 0a c2 represents REAL (-0.0062).
The size of the payload depends on data types of field entries.
Thanks for quick response.
In running a test and logging to an file the XML data received by out application it looks like the dataSize field is populated by the process sink_driven_src rather than using the value from the XML data file for sink_driven_src.
I was concerned if this value was incorrect in the XML data file then either sink_driven_src or our application would not behave correctly but this doesn't seem to be the case.
As trying to calculate this value for each message qould be difficult we will set this value to 0 in the data XML file (to avoid confusion) for sink_driven_src and verify a reasonable value is populated in the XML received by our applicaition.
I am struggling to work out how 0ac2 hex represents -0.0062.
Can you explain the data representation of RSSL_DT_REAL (REAL64 in the dictionary) to we can understand the accuracy of the values coming in and therefore when representing them as a string how many significant figures should be printed without loosing accuracy.