question

vishal.anand avatar image
1 1 3 5

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?

elektronelektron-sdkrrteta-apielektron-transport-api
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

Jirapongse avatar image
45.2k 103 43 60

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


10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.