Encoded data length exceeds RWF length. Price contribution

Hello guys. Need you help, with price contribution. Here is the situation:

<!-- Outgoing Reactor message -->
<!-- java.nio.channels.SocketChannel[connected local=/172.23.0.3:56500 remote=contrib1-emea1.platform.refinitiv.com/52.51.64.48:443] -->
<!-- Thu Nov 19 17:14:00 UTC 2020 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<GENERIC domainType="SYSTEM" streamId="3" containerType="MSG" flags="0x19 (HAS_EXTENDED_HEADER|HAS_SEQ_NUM|MESSAGE_COMPLETE)" seqNum="80" dataSize="65">
    <extendedHeader data="0100"/>
    <dataBody>
        <POST domainType="MARKET_PRICE" streamId="6" containerType="MSG" flags="0x62 (HAS_POST_ID|POST_COMPLETE|ACK)" postId="79" postUserId="0" postUserAddr="0.0.0.0" dataSize="43">
            <dataBody>
                <UPDATE domainType="MARKET_PRICE" streamId="6" containerType="FIELD_LIST" flags="0x08 (HAS_MSG_KEY)" updateType="0" dataSize="14">
                    <key flags="0x02 (HAS_NAME)" name="IMSF3INAV=LEVL"/>
                    <dataBody>
                        <fieldList flags="0x08 (HAS_STANDARD_DATA)">
                            <fieldEntry fieldId="393" data="4039 6031 26E9 78D5"/>
                        </fieldList>
                    </dataBody>
                </UPDATE>
            </dataBody>
        </POST>
    </dataBody>
</GENERIC>
<!-- Incoming Reactor message -->
<!-- java.nio.channels.SocketChannel[connected local=/172.23.0.3:56500 remote=contrib1-emea1.platform.refinitiv.com/52.51.64.48:443] -->
<!-- Thu Nov 19 17:14:00 UTC 2020 -->
<!-- rwfMajorVer="14" rwfMinorVer="1" -->
<GENERIC domainType="SYSTEM" streamId="3" containerType="MSG" flags="0x19 (HAS_EXTENDED_HEADER|HAS_SEQ_NUM|MESSAGE_COMPLETE)" seqNum="80" dataSize="112">
    <extendedHeader data="0100"/>
    <dataBody>
        <ACK domainType="MARKET_PRICE" streamId="6" containerType="NO_DATA" flags="0x22 (HAS_TEXT|HAS_NAK_CODE)" ackId="79" nakCode="DENIED_BY_SRC" text="Encoded data length exceeds RWF length Fid Id [393] [Failed to apply update. Cache build failed]" dataSize="0">
            <dataBody>
            </dataBody>
        </ACK>
    </dataBody>
</GENERIC>

Here is the code:

FieldList nestedFieldList = EmaFactory.createFieldList();
val inavValue = inav.getTargetNavT1().setScale(INAV_SCALE, HALF_EVEN).doubleValue();
nestedFieldList.add(EmaFactory.createFieldEntry().doubleValue(INAV_FIELD_ID, inavValue));

UpdateMsg nestedUpdateMsg = EmaFactory.createUpdateMsg()
.streamId(postStreamId)
.name(inav.getEtp().getRic())
.payload(nestedFieldList);

val id = ++postId;
final PostMsg payload = EmaFactory.createPostMsg()
.streamId(postStreamId)
.postId(id)
.domainType(EmaRdm.MMT_MARKET_PRICE)
.solicitAck(true)
.complete(true)
.payload(nestedUpdateMsg);

consumer.submit(payload, loginStreamHandle);

That`s the current situation. Previously I was preparing field like that:

nestedFieldList.add(EmaFactory.createFieldEntry()
                .realFromDouble(INAV_FIELD_ID, inav.getTargetNavT1().setScale(INAV_SCALE, HALF_EVEN).doubleValue())
);

With that code no errors happened, but we was told that we are sending zeros.

Someone can please tell the correct way to send price as double?

Best Answer

  • wasin.w
    wasin.w admin
    Answer ✓

    Hello @dkamburov

    • What are the version of EMA Java and Java SDK that you are using?
    • Which component (ADH Cache, RCC, ATS, etc.) that the application aims to contribute data to?

    The "Encoded data length exceeds RWF length" message is generated from the infra backend. The message means the posted value is exceeded PRIMACT_1 (FID 393) field length specification.

    You can find more detail of how to contribute data with the following resources/example:



Answers

  • I will correct my question. I am searching for a correct way of price contribution and the price contains decimal plates.