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?
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:
When processing UpdateMsg using multiple threads, keep getting exception when opening the message. Is there way to clone a message for further processing. I believe the UpdateMsg objects keep getting overridden