gtpc2mdzC/C++ Language Support User's Guide

TO2_getBLOBwithBuffer-Retrieve Contents of a BLOB Using a Passed Buffer

This function allows an application program to retrieve the current contents of a binary large object (BLOB). TPF collection support (TPFCS) will read the contents of the BLOB into the storage area passed as a parameter along with the current sequence counter value of the BLOB. The size that is read is determined by the size of your buffer or the size of the BLOB, whichever is smaller.

Note:
This function only supports BLOB collections.

Format

#include <c$to2.h>
void * TO2_getBLOBwithBuffer (const TO2_PID_PTR   pid_ptr,
                                    TO2_ENV_PTR   env_ptr,
                                    void         *buffer,
                                    long         *bufferLength,
                                    long         *sequenceCounter);

pid_ptr
The pointer to the persistent identifier (PID) assigned to the collection.

env_ptr
The pointer to the environment collection as returned by the TO2_createEnv function.

buffer
The pointer to the buffer to use to read the contents of the BLOB.

bufferLength
The pointer to a field that contains the length of your buffer. TPFCS will overlay the field with the actual length of the data for the BLOB. The application program must compare the returned length of the BLOB data with the length of the buffer to determine if the data for the BLOB was completely read.

sequenceCounter
The pointer to a field that TPFCS will overlay with the current sequence counter value.

Normal Return

The normal return is a pointer to the passed buffer.

Error Return

An error return is indicated by a zero. When zero is returned, use the TO2_getErrorCode function to determine the specific error code. For more information, see Error Handling.

The following error codes are common for this function:

TO2_ERROR_ENV

TO2_ERROR_EMPTY

TO2_ERROR_METHOD

TO2_ERROR_NOT_INIT

TO2_ERROR_PID

TO2_ERROR_ZERO_PID

Note:
The update sequence counter value will also be returned for the TO2_ERROR_EMPTY error.

Programming Considerations

This function does not use TPF transaction services on behalf of the caller.

Examples

The following example retrieves the contents of a BLOB.

#include <c$to2.h>                /* TO2 API function prototypes      */
#include <stdio.h>                /* APIs for standard I/O functions  */
 
TO2_ENV_PTR    env_ptr;           /* Pointer to TO2 Environment       */
TO2_PID        blob;
long           seqCtr;            /* field to hold sequence counter   */
long           bufferLength=400;  /* field to hold length of BLOB     */
long           userBufLgh=400;    /* user buffer length               */
char           buffer[400];
 

  ·
  ·
  ·
if (TO2_getBLOBwithBuffer(&blob, env_ptr, buffer, &bufferLength, &seqctr) == TO2_ERROR) { printf("TO2_getBLOBwithBuffer failed!\n"); process_error(env_ptr); } else if (bufferLength < userBufLgh) printf("BLOB larger than passed buffer\n"); else printf("TO2_getBLOBwithBuffer was successful!\n");

Related Information