Use this class to hold or marshal data in memory. The user can nominate a buffer of memory of fixed size, or the system can provide a flexible amount of memory automatically. This class relates to the MQI calls listed in Table 7.
ImqError (see ImqError).
This attribute is not set directly. It is set indirectly using either the useEmptyBuffer or the useFullBuffer method.
If user storage is supplied, this attribute is FALSE, buffer memory cannot grow, and buffer overflow errors can occur. The address and length of the buffer remain constant.
If user storage is not supplied, this attribute is TRUE, and buffer memory can grow incrementally to accommodate an arbitrary amount of message data. However, when the buffer grows, the address of the buffer might change, and so care has to be exercised when using the buffer pointer and data pointer.
If automatic buffer is TRUE, more memory will be acquired as required; otherwise, the buffer length must already be adequate.
This method can be used to identify a fixed amount of memory, as described above (external-buffer is nonnull and length is nonzero), in which case automatic buffer is set to FALSE, or it can be used to revert to system-managed flexible memory (external-buffer is null and length is zero), in which case automatic buffer is set to TRUE.
If automatic buffer is TRUE, an adequate amount of memory is guaranteed; otherwise, the ultimate data offset must not exceed the buffer length.
MQRC_BUFFER_NOT_AUTOMATIC
MQRC_DATA_TRUNCATED
MQRC_INSUFFICIENT_BUFFER
MQRC_INSUFFICIENT_DATA
MQRC_NULL_POINTER
MQRC_STORAGE_NOT_AVAILABLE
MQRC_ZERO_LENGTH