gtpc2mc3 | C/C++ Language Support User's Guide |
This function replaces the data of the specified entry with the new data that is supplied.
Format
#include <c$to2.h> long TO2_atPut (const TO2_PID_PTR pid_ptr, TO2_ENV_PTR env_ptr, const long *index const void *data, const long *dataLength, const long *updateSeqCtr);
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_INDEX
TO2_ERROR_METHOD
TO2_ERROR_NOT_INIT
TO2_ERROR_PID
TO2_ERROR_SEQCTR
TO2_ERROR_UPDATE_NOT_ALLOWED
TO2_ERROR_ZERO_PID
Programming Considerations
A commit scope will be created for the TO2_atPut request. If the request is successful, the scope will be committed. If an error occurs while processing the TO2_atPut request, the scope will be rolled back.
Examples
The following example updates the third element of the specified collection with new data.
#include <c$to2.h> /* Needed for TO2 API functions */ #include <stdio.h> /* APIs for std I/O functions */ #include <stdlib.h> /* APIs for std library functions */ TO2_PID *collect; /* must set to point to existing collection's PID */ TO2_BUF_PTR elem_ptr; /* will hold element from TO2at */ TO2_ENV_PTR env_ptr; /* Pointer to the TO2 environment */ long position = 3; /* position to update */ const newdata[] = "NewData"; /* data */ long newdatsz; /* data size */
·
·
·
/*************************************************************************/ /* First attempt to read entry at position to get sequence counter */ /*************************************************************************/ if ((elem_ptr = TO2_atPut(&collect, env_ptr, &position)) == NULL) { printf("TO2_atPut failed./n"); process_error(env_ptr); return; } /**********************************************************************/ /* Replace data at that position with new data. */ /**********************************************************************/ newdatsz = sizeof(newdata); if (TO2_atPut(&collect, env_ptr, &position, newdata, &newdatsz, &(elem_ptr->updateSeqNbr)) == TO2_ERROR) { printf("TO2_atPut failed!\n"); process_error(env_ptr); } else { printf("TO2_atPut is successful!\n"); }
Related Information