Exception: RSSL_RET_INCOMPLETE_DATA is received, when downloading custom dictionary from TREP

Akechi Sato
Akechi Sato Explorer

I have developed a provider application to publish internal
data in custom fields. The fields have been added to RDMFieldDictionary and
enumtype.def used by TREP. Once a RFA consumer application connects to the
TREP, and then downloads data dictionaries from TREP, the following error has
been generated.

Exception: RSSL_RET_INCOMPLETE_DATA in class
ArrayReadIterator in method forth()

I have enabled the RSSL trace message and found that the
dictionary response message was incomplete. It ends with the following message
which is for field id: -2015. What could be the cause of the issue?

<seriesEntry>
<elementList flags="0x2 (RSSL_ELF_HAS_SET_DATA)">
<elementEntry name="FIDS" dataType="RSSL_DT_ARRAY">
<array itemLength="2" primitiveType="RSSL_DT_INT">
<arrayEntry data="-2015"/>
</array>
</elementEntry>
<elementEntry name="VALUE" dataType="RSSL_DT_ARRAY">
<array itemLength="2" primitiveType="RSSL_DT_ENUM">
<arrayEntry data="0"/>
<arrayEntry data="2"/>
<arrayEntry data="4"/>
<arrayEntry data="8"/>
<arrayEntry data="16"/>
<arrayEntry data="32"/>
</array>
</elementEntry>
<elementEntry name="DISPLAY" dataType="RSSL_DT_ARRAY">
<array itemLength="7" primitiveType="RSSL_DT_ASCII_STRING">
<arrayEntry data="UNKNOWN"/>
<arrayEntry data="SPOTOUT"/>
<arrayEntry data="RIGHSWA"/>
<arrayEntry data="PDEPOSI"/>
<arrayEntry data="TFRA(0xfe)(0x05)(0x18)"/>

The custom field: -2015 is below.

RDMFieldDictionary

! TicketDealType
TICKETYPE "TICKETDEALTYPE" -2015 NULL NONE 0 ENUM 1
!

enumtype.def

!
! ACRONYM FID
! ------- ---
!
TICKETYPE -2015
!
! VALUE
DISPLAY MEANING
! ----- ------ -------
0 "UNKNOWN" Unknown
2 "SPOT" Spot
4 "OUTRIGHT" Outright
8 "SWAP" Swap
16 "DEPOSIT" Deposit
32 "FRA" FRA<br>
Tagged:

Best Answer

  • I have been able to replicate the issue with the field you
    provided. It seems that TREP encode array of DISPLAY values with a specific
    fix-width. However, the DISPLAY values in this case have different width, so
    the array is corrupt.

    Normally all values in the DISPLAY column of an enumeration
    field needs to have the same width, so white spaces need to be filled to display’s
    value. Below is the modified version of your enum value which could fix the
    issue.

    ! ACRONYM    FID
    ! ------- ---
    !
    TICKETYPE -2015
    !
    ! VALUE
    DISPLAY MEANING
    ! ----- ------- -------
    0 " UNKNOWN" Unknown
    2 " SPOT" Spot
    4 "OUTRIGHT" Outright
    8 " SWAP" Swap
    16 " DEPOSIT" Deposit
    32 " FRA" FRA