display = "ZRN", value=180
display = "ZRN", value=180
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);