Can't open request for whole directory with EMA C++ in custom application

Hello,

can somebody tell me how i can open request for MMT_DIRECTORY of all sources in custom application. If I try this, as described in RDM USAGE GUIDE, I got the following Message:

loggerMsg
TimeStamp: 12:47:51.941
ClientName: DirectoryCallbackClient
Severity: Error
Text: Internal error: failed to encode RsslRDMDirectoryMsg in DirectoryCa
llbackClient::processCallback()
RsslChannel 0x0000000000000000
Error Id -21
Internal sysError 0
Error Location rsslRDMDirectoryMsg.c:644
Error Text (ret = rsslEncodeElementEntry(pEncodeIter, &elementEntry, &pL
oad->openLimit)) == RSSL_RET_SUCCESS
loggerMsgEnd

If I request directory for a single source by setting a source name, it works, as expected.

Setting SEVERTITY to VERBOSE I see, that the hole dictionary was downloaded previous by the consumer.

Welcome!

It looks like you're new here. Sign in or register to get started.

Best Answer

  • Reinhold.Blank
    Reinhold.Blank Explorer
    Answer ✓

    hi @umer.nalla

    we currently have 11 souces in our TREP and I use v1.1. As I told before the throuble must be in configuration of the ADS. With one of our six ADS it works fine.

    Thank you

Answers

  • Hi @Reinhold.Blank,

    Within the ESDK package contains the 300 Series example: 331_Directory_Streaming which demonstrates basic usage of the EMA Library for accessing and parsing of OMM Directory data.

    image

  • Hi @nick.zincone.1,

    I used this Sample for testing this pupose. I just remove service name as descriped in USAGE GUID to get a complete source directory with all services existing in our TREP.

    But it doesn't work!

  • Hi @Reinhold.Blank,

    I was able to remove the service name and received a complete source directory, i.e.

    image

    This was my output:

    image

    I assume you are doing the same. Can you confirm which version of the ESDK you are using and show your output window?

    thanks.

  • Hi @Reinhold.Blank

    Can you confirm how many services there are on your TREP? And also what version of EMA you are using?

    There was a bug in an older version of ESDK - I just tried the 331 example in v.1.1 and it failed with a large source directory.

    When I tried the same example in ESDK v1.2 it worked with the same large source directory.

  • Hi @nick.zincone.1,

    I using EMA SDK 3.3.1. Below you see the result.

    image

    But I found out, where the throuble must be. We have 6 ADS. With one off them it works fine. On the other 5 the request fails. So I called our admins, that they check the configuration of this ADS.

    Thank you for your assistance

  • Thanks @Reinhold.Blank.

    Did you mean EMA 3.1.1? The latest version is 3.2.0 which was just recently released. It would be interesting if you get a chance to try the latest version to see if you get an internal error with those specific ADS processes.

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Reinhold.Blank

    Error Id -21 is RSSL_RET_BUFFER_TOO_SMALL. It looks like the allocated buffer is too small to encode the retrieved directory before sending to the application. I have tested with the ADS that provides a lot of services and found the same error in EMA 3.1.1..

    loggerMsg
    TimeStamp: 11:41:04.700
    ClientName: DirectoryCallbackClient
    Severity: Error
    Text: Internal error: failed to encode RsslRDMDirectoryMsg in DirectoryCallbackClie
    nt::processCallback()
    RsslChannel 0x0000000000000000
    Error Id -21
    Internal sysError 0
    Error Location rsslRDMDirectoryMsg.c:375
    Error Text (ret = rsslEncodeElementEntry(pEncodeIter, &elementEntry, &pInfo->serviceName)) == RSSL_RET_SUCCESS
    loggerMsgEnd

    However, after testing with EMA 3.2.0.L1, it works fine.

    EMA 3.2.0.L1 has been restructured and it uses CMake to generate build files. Please refer to ESDK_C_Migration_Guide.pdf in the package for more information.

Welcome!

It looks like you're new here. Sign in or register to get started.

Welcome!

It looks like you're new here. Sign in or register to get started.