Encoding fragmented genericMsg

When I start encoding a RefreshMsg I dont know whether the message will be fragmented
so I cannot call refreshMsg.applyRefreshComplete() when encoding the header.

If on completing the message encoding I know that this is the last message fragment so I can call
encodeIterator.setRefreshComplete().

But I have a similar issue with genericMsg.
I cant call GenericMsg.applyMessageComplete() because I dont know whether this will be the last fragment.
But EncodeIterator does not have a setMessageComplete() method.

So How can I set messageComplete on a generic msg?

Best Answer

  • wasin.w
    wasin.w admin
    Answer ✓

    kim.valentine

    Beside the GenericMsg.applyMessageComplete(), the application can also set message complete on the generic message via the following statement

    GenericMsg.flags(GenericMsgFlags.MESSAGE_COMPLETE);

Answers

  • kim.valentine

    Could you please clarify my understanding about your question? You would like to know how to set the Generic Message complete flag on the last fragment?

  • Setting the GenericMsg.flags only has an effect before calling GenericMsg.encodeInit(EncodeIterator,size). But at that point I do not know whether this will be the last fragment of a generic message. I only know that after I finish the encoding and can check that the payload has been completely encoded. If I am encoding a refresh message I can calI EncodeIterator.setRefreshComplete() which will set the refresh complete flag for an already encoded message. What I need is a similar method for generic messages, I suggest EncodeIterator.setMessageComplete().

  • @kim.valentine

    I have create the service cloud case 04967973 for process your enhancement request.

  • I too have run into this issue but with C++ UPA API.

    RSSL_API RsslRet rsslSetRefreshCompleteFlag (RsslEncodeIterator *pIter)

    is available to set the RSSL_RFMF_REFRESH_COMPLETE flag on an encoded RsslRefreshMsg buffer but there is no equivalent to set the RSSL_GNMF_MESSAGE_COMPLETE flag on an encoded RsslGenericMsg Buffer.

    I am using UPA 7.6.1L1( I have checked 8.0.0L1 and it is not available in that version either).

  • Hi @kim.valentine,

    The EncodeIterator also has a method 'setRefreshCompleteFlag()' to indicate Refresh Complete.

    Is this what you're looking for?

  • No,

    setRefreshComplete is for Refresh messages only.

    I need a similar method for Generic messages.

  • @Gordon Hunn

    I have created the case: 04974333 for tracking your request on UPA C.

  • So as not to mis-lead others, this is NOT the correct answer.

    GenericMsg.flags(GenericMsgFlags.MESSAGE_COMPLETE);

    needs to be set BEFORE encoding starts for it to take effect.

    What is required is a method that will set the flag on the encoded buffer AFTER encoding is complete.

    This is available for Refresh msgs but not for Generic msgs.

    So the correct answer is that it is not possible until the missing function/method is provided by TR.

  • Hi @kim.valentine

    This feature has been added to ETA Java 3.1.0. You can download it from Elektron SDK - Java 1.1.0 at this link.

  • Hi @Gordon Hunn

    This feature has been added to ETA C 3.1.0 as well. You can download it from Elektron SDK - C/C++ 1.1.0 at this link.