question

Upvotes
Accepted
21 2 6 10

Error Text: rsslPackBuffer() Error: 0017 Not a packable buffer. Error occurred when encoding RSSL_DT_ENUM for data from enumType.def file. what is best encoding for enumType.def enums?

display = "ZRN", value=180

elektronrefinitiv-realtimetrep
icon clock
10 |1500

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

@Kam.Anjorin
Thank you for your participation in the forum. Are any of the replies below satisfactory in resolving your query? If yes please click the 'Accept' text next to the reply that best answers your question. This will guide all community members who have a similar question. Otherwise please post again offering further insight into your question.
Thanks,
-AHS

@Kam.Anjorin

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?

If so please can you click the 'Accept' text next to the appropriate reply. This will guide all community members who have a similar question.

Thanks,

AHS

Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.

Thanks,

AHS

1 Answer

· Write an Answer
Upvotes
Accepted
261 1 2 3

This error indicates that the code is attempting to pack several messages into a transport buffer from rsslGetBuffer() that was not set as packable.

The ETA TCP transport provides functionality to pack multiple messages into a single transport buffer, which will then send the packed messages as a single packet on the wire when the buffer passed into rsslWrite. The maximum size allowed by the ETA API for a packable buffer is the maxMsgSize configured on the current rsslChannel. In order to use this functionality, set the packedBuffer argument to true in rsslGetBuffer.

Please see the following psudocode:

// RsslChannel chnl has already been established
RsslBuffer *buf;
RsslWriteOutArgs outArgs;
RsslWriteInArgs inArgs;
RsslError err;
<Initialize inArgs and outArgs>

// Get a packable buffer
buf = rsslGetBuffer(chnl, <Max Msg Size>, RSSL_TRUE, &err);

while(<not done with messages> && buf->length != 0)
{
<Encode message into buf>
//Set the encoded length of the buffer here
buf->len = rsslGetEncodedBufferLength(encIter);
// Call rsslPackBuffer. buf will be the new output
buf = rsslPackBuffer(chnl, buf, &err);
}

// If there's remaining usable memory in the packed buffer, set the length to 0 prior to sending it on the wire.
if(buf->length != 0)
buf->length = 0;
// Write the packed buffer to the wire
rsslWriteEx(chnl, buf, &outArgs, &inArgs, &err);

icon clock
10 |1500

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

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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