gtpc2memC/C++ Language Support User's Guide

TO2_replaceBLOB-Replace the Contents of a BLOB with New Data

This function allows an application program to replace the contents of a binary large object (BLOB) with an updated copy of the contents. The size of the BLOB will be made either smaller or larger depending on the content size passed as a parameter.

Note:
This function only supports BLOB collections.

Format

#include <c$to2.h>
long  TO2_replaceBLOB (const TO2_PID_PTR   pid_ptr,
                             TO2_ENV_PTR   env_ptr,
                       const void         *data,
                       const long         *dataLgh,
                       const long         *sequenceCounter);

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

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

data
The pointer to the new data to write to the BLOB. This data will replace the current contents of the BLOB.

dataLgh
The pointer to a field that contains the length of the new data.

sequenceCounter
The pointer to a field that contains the sequence counter returned when the BLOB was read to retrieve the last valid contents of the BLOB.

Normal Return

The normal return is a positive value.

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_DATA_LGH

TO2_ERROR_ENV

TO2_ERROR_METHOD

TO2_ERROR_NOT_INIT

TO2_ERROR_PID

TO2_ERROR_SEQCTR

TO2_ERROR_UPDATE_NOT_ALLOWED

TO2_ERROR_ZERO_PID

Programming Considerations

Examples

The following example replaces the contents of a BLOB with a single byte.

#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             dataLgh;         /* field to hold length of BLOB     */
char           * bufPtr;
 

  ·
  ·
  ·
if (bufPtr = (TO2_getBLOB(&blob, env_ptr, &dataLgh, &seqCtr)) == TO2_ERROR) { printf("TO2_getBLOB failed!\n"); process_error(env_ptr); } *bufPtr = 'A'; datalgh=1; if (TO2_replaceBLOB(&blob, env_ptr, bufPtr, &dataLgh, &seqctr) == TO2_ERROR) { printf("TO2_replaceBLOB failed!\n"); process_error(env_ptr); } else { printf("TO2_replaceBLOB successful!\n"); }

Related Information