question

Upvotes
Accepted
1 0 1 4

Message encoding error in IProvider

I’m developing Interactive Publisher using Elektron SDK v1.2.0.

And I have multiple Services in EmaConfig.xml which are used to publish data and when the number of services is 5 or less everything works fine. All services on the list are identical except the Name and ServiceId fields which differ.

But adding 6th Service to the list I’ve got the following error in emaLog:

loggerMsg
    TimeStamp: 09:39:47.658
    ClientName: DirectoryHandler
    Severity: Error
    Text:    Internal error: failed to encode RsslRDMDirectoryMsg in DirectoryHandler::handleDirectoryRequest()
        Client handle 775567904
        Instance Name Provider_1_1Error Id -21
        Internal sysError 0
        Error Location /local/jenkins/workspace/ESDKCore/OS/RH6-64/esdk/Cpp-C/Eta/Impl/RDM/rsslRDMDirectoryMsg.c:445
        Error Text (ret = rsslEncodeArrayEntry(pEncodeIter, 0, &pInfo->dictionariesUsedList[j])) == RSSL_RET_SUCCESS
loggerMsgEnd

Is there a limit for the number of services or what can I do to add more than 5?

elektronrefinitiv-realtimeelektron-sdkrrtema-apielektron-message-apiService
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Confirm, increasing the buffer size in the DirectoryHandler::initialize fixes the issue. Thank you!

1 Answer

Upvote
Accepted
55.7k 144 45 65

@dmitry.vasilenko

The error ID (-21) is "buffer too small". Therefore, it means that the buffer reserved by EMA is too small to encode the source directory. EMA is open source so you directly increase the buffer size in the DirectoryHandler::initialize(...) method (Cpp-C\Ema\Src\Access\Impl\DirectoryHandler.cpp), and then rebuild the EMA package. Otherwise, you can contact the RDC or development team to fix this issue by:


premium.png (27.8 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.