DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

OFEvaluateOperation(S_ADM)


OFEvaluateOperation -- perform BMIP request

Syntax

#include <scoAdmin/osaStdDef.h>

bmipResponse_pt OFEvaluateOperation(errStatusPtr, handleId, object)

Description

This routine performs the operation indicated by the the string in the BMIP request on the object identified by object. It will return a pointer to a BMIP response which must be freed after it is handled in the function ofReturnBmipResponse.

This routine can be called repeatedly during the BMIP request and multiple bmipResponse_pt may be accumulated. This is the case when multiple objects are forwarded in the bmipRequest_t.objectInstance_pt, or the bmipRequest_t.scopePtr guides a transformation of the named object instance into many object identifiers.

If the user wants to perform atomic synchronization with a request (either all or nothing), they should store up all the responses and only return them if no errors are found (and if errors are found, implement some procedure to undo those that succeeded and then return and empty response).

Arguments


bmipResponse_pt bmipResponsePtr
This is the BMIP response structure that will be forwarded to the ofReturnBmipResponse routine.

errStatus_cl *errStatusPtr
A pointer to the error stack data structure. If an error occurs in retrieving the data, the appropriate error will be placed in the error stack. This data can be referenced using the library functions associated with the error stack.

int handleId
The handle identifier that was passed to the request processor by the SCOadmin services library (or generated by a call to ofGenerateHandleId).

objectInstance_pt object
A char * to the string representing the object identifier of the current class. This is the object that the work/operation will be performed on.

Error messages


EXECUTION_PROCEDURE_FAILURE
The execution of the operation was halted because of an error in running the operation's execution procedure.

NO_SUCH_CLASS_HANDLE
The handleId named does not correspond to an existing class in the Server APIs internal lookup table.

MISSING_ATTRIBUTE_VALUE
One of the attributes given in the BMIP request did not have a value associated with in on a request to perform an operation other than get or replace-with-default.

NO_SUCH_ACTION
The action requested by the BMIP request represented by the handleId is not listed in that BMIP request's class's CDT.

MISTYPED_ARGUMENT
The attribute list (or some portion of it) contained in the BMIP request represented by the handleId is not parseable by the Server API.

NO_SUCH_ATTRIBUTE
One of the attributes contained in the BMIP request represented by the handleId is not listed in the request's class's CDT.

UNRECOGNIZED_OPERATION
The operation contained in the BMIP request represented by the handleId is not listed in the CDT as being able to be performed on one of the attributes listed in the BMIP request.

INVALID_ATTRIBUTE_VALUE
One of the attributes listed in the BMIP request represented by the handleId is a group attribute and it has been associated with a value. Or, one of the values associated with an attribute is unparseable or a set of values is being assigned to a single value-typed attribute.

Example

void
ObjectRequestProcessor(errStatus_cl       *errStatusPtr,
                       int                 handleId,
                       bmipRequest_pt      bmipRequestPtr,
                       void *)
{
    /*---
     *
     * Generate a list of all the objects to be evaluated
     *
     */
   
    objectName_pt *objectList;
    int            objectCount;

. . .

/* Implementation to turn bmipRequestPtr->objectInstancePtr into * object. */

. . . for (int loop = 0; loop < objectCount; ++loop) { bmipResponse_t *bmipResponsePtr; bmipResponsePtr = OFEvaluateOperation(errStatusPtr, handleId, objectList[loop]); OFReturnBmipResponse(errStatusPtr, handleId, bmipResponsePtr, (loop + 1 == objectCount) ? FALSE : TRUE ); }

See also

OFReturnBmipResponse(S_ADM), OFEvaluateFilter(S_ADM).
16 September 2002
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003