How to Post with EMA C++

Does EMA C++ support Posting? Is there a sample app I can reference?

Best Answer

Answers

  • I am asking me the same question.
    I build a test consumer based on the training examples
    Examples/Training/Consumer/300_Series/341__MarketPrice__OffStreamPost
    Examples/Training/Consumer/300_Series/340__MarketPrice__OnStreamPost
    and a test provider.
    On consumer side the post requests are answered after some time with
    an AckMsg saying "Acknowledgement timed out." This applies to "offstream post"
    as well as to "onstream post".
    (The wait period can be configured with element "PostAckTimeout" within the
    consumer element in the EmaConfig.xml, e.g. <PostAckTimeout value="2000"/>.)
    Obviously these messages are generated on consumer side, because no response from
    the provider is received.
    Therefore I stepped with a debugger through the provider program and found out,
    that in fact the handling of post messages on provider side is not implemented.
    The method "onPostMsg( const PostMsg& postMsg, const OmmProviderEvent& event )"
    in OmmProviderClient is never called.
    In module Access/Impl/MarketItemHandler.cpp you can find at line 384 this block:

    case RSSL_MC_POST:
    {
    if (OmmLoggerClient::VerboseEnum >= ommServerBaseImpl->getActiveConfig().loggerConfig.minLoggerSeverity)
    {
    EmaString temp("Received post message.");
    temp.append(CR).append("Stream Id ").append(pRsslMsg->msgBase.streamId)
    .append(CR).append("Client handle ").append(clientSession->getClientHandle())
    .append(CR).append("Instance Name ").append(ommServerBaseImpl->getInstanceName())
    .append(CR).append("Post message is not support for this release.").append(ommServerBaseImpl->getInstanceName());

    ommServerBaseImpl->getOmmLoggerClient().log(_clientName, OmmLoggerClient::VerboseEnum, temp);
    }

    break;
    }

    Conclusion: Post ist not implemented in EMA ...
    I found no hints in the documents for this behaviour.