rsslEncodeMsgInit

How do I handle -21 error on rsslEncodeFieldListInit. This error is buffer too small. Are there any functionalities that I ca use to handle this error?

Best Answer

  • Jirapongse
    Jirapongse admin
    Answer ✓

    @vishal.anand

    First, you need to call the rsslEncodeFieldListComplete method with RSSL_FALSE in the success parameter to roll back encoding to the last successfully encoded point in the contents.

    retCode = rsslEncodeFieldListComplete(encIter, RSSL_FALSE );

    Then, get a new larger buffer. After that, you can use the rsslRealignEncodeIteratorBuffer to dynamically associate a new, larger buffer with the encoding process, allowing encoding to continue.

    //newBuffer contains a new larger 
    bufferretVal = rsslRealignEncodeIteratorBuffer(encIter, &newBuffer);
    retCode = rsslEncodeFieldListInit(encIter, &_rsslFieldList, 0, 0 );

    Moreover, if the old buffer is retrieved from the rsslGetBuffer method, you need to call the rsslReleaseBuffer method to release the old buffer back to the transport's pool.