question

Upvotes
Accepted
1 1 1 1

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
icon clock
10 |1500

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

1 Answer

Upvote
Accepted
38.1k 69 35 53

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


icon clock
10 |1500

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

Click below to post an Idea Post Idea