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?
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?
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.