diff --git a/Makefile.am b/Makefile.am index 51fa58d..57acd7f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -# $Id: Makefile.am,v 1.40 2005/11/20 17:43:54 bestorga-oss Exp $ +# $Id: Makefile.am,v 1.41 2005/12/13 08:56:48 mihajlov Exp $ # # Makefile.am # @@ -222,7 +222,7 @@ noinst_HEADERS=array.h httpComm.h control.h providerMgr.h \ cimXmlRequest.h genericlist.h objectImpl.h trace.h \ hashtable.h utilft.h mlog.h \ cmpidt.h cmpift.h cmpiftx.h cmpimacs.h cmpimacsx.h cmpios.h \ - fileRepository.h \ + fileRepository.h internalProvider.h \ selectexp.h queryOperation.h \ sfcVersion.h mrwlock.h sqlStatement.h avltree.h diff --git a/args.c b/args.c index e72ae69..aded621 100644 --- a/args.c +++ b/args.c @@ -72,7 +72,7 @@ static CMPIStatus __aft_release(CMPIArgs * args) } -static CMPIArgs *__aft_clone(CMPIArgs * args, CMPIStatus * rc) +static CMPIArgs *__aft_clone(const CMPIArgs * args, CMPIStatus * rc) { struct native_args *a = (struct native_args *) args; struct native_args *na = __new_empty_args(MEM_NOT_TRACKED, rc); @@ -85,8 +85,8 @@ static CMPIArgs *__aft_clone(CMPIArgs * args, CMPIStatus * rc) } -static CMPIStatus __aft_addArg(CMPIArgs * args, const char *name, - CMPIValue * value, CMPIType type) +static CMPIStatus __aft_addArg(const CMPIArgs * args, const char *name, + const CMPIValue * value, CMPIType type) { ClArgs *ca = (ClArgs *) args->hdl; CMPIData data = { type, CMPI_goodValue, {0} }; @@ -109,7 +109,7 @@ static CMPIStatus __aft_addArg(CMPIArgs * args, const char *name, } -static CMPIData __aft_getArgAt(CMPIArgs * args, +static CMPIData __aft_getArgAt(const CMPIArgs * args, unsigned int i, CMPIString ** name, CMPIStatus * rc) { @@ -144,7 +144,7 @@ static CMPIData __aft_getArgAt(CMPIArgs * args, return rv; } -static CMPIData __aft_getArg(CMPIArgs * args, const char *name, CMPIStatus * rc) +static CMPIData __aft_getArg(const CMPIArgs * args, const char *name, CMPIStatus * rc) { ClArgs *ca = (ClArgs *) args->hdl; ClSection *prps = &ca->properties; @@ -161,7 +161,7 @@ static CMPIData __aft_getArg(CMPIArgs * args, const char *name, CMPIStatus * rc) } -static unsigned int __aft_getArgCount(CMPIArgs * args, CMPIStatus * rc) +static unsigned int __aft_getArgCount(const CMPIArgs * args, CMPIStatus * rc) { ClArgs *ca = (ClArgs *) args->hdl; if (rc) diff --git a/array.c b/array.c index 79ed1db..f94e447 100644 --- a/array.c +++ b/array.c @@ -75,7 +75,7 @@ static CMPIStatus __aft_release(CMPIArray * array) } -static CMPIArray *__aft_clone(CMPIArray * array, CMPIStatus * rc) +static CMPIArray *__aft_clone(const CMPIArray * array, CMPIStatus * rc) { CMPIStatus tmp; struct native_array *a = (struct native_array *) array; @@ -102,7 +102,7 @@ static CMPIArray *__aft_clone(CMPIArray * array, CMPIStatus * rc) } -static CMPICount __aft_getSize(CMPIArray * array, CMPIStatus * rc) +static CMPICount __aft_getSize(const CMPIArray * array, CMPIStatus * rc) { struct native_array *a = (struct native_array *) array; @@ -112,7 +112,7 @@ static CMPICount __aft_getSize(CMPIArray * array, CMPIStatus * rc) } -static CMPIType __aft_getSimpleType(CMPIArray * array, CMPIStatus * rc) +static CMPIType __aft_getSimpleType(const CMPIArray * array, CMPIStatus * rc) { struct native_array *a = (struct native_array *) array; @@ -122,7 +122,7 @@ static CMPIType __aft_getSimpleType(CMPIArray * array, CMPIStatus * rc) } -static CMPIData __aft_getElementAt(CMPIArray * array, +static CMPIData __aft_getElementAt(const CMPIArray * array, CMPICount index, CMPIStatus * rc) { struct native_array *a = (struct native_array *) array; @@ -187,7 +187,7 @@ static CMPIStatus __aft_setElementAt(CMPIArray * array, CMReturn(CMPI_RC_ERR_FAILED); } */ -static CMPIStatus setElementAt ( CMPIArray * array, CMPICount index, CMPIValue * val, +static CMPIStatus setElementAt ( CMPIArray * array, CMPICount index, const CMPIValue * val, CMPIType type, int opt ) { struct native_array * a = (struct native_array *) array; @@ -224,7 +224,7 @@ static CMPIStatus setElementAt ( CMPIArray * array, CMPICount index, CMPIValue * CMReturn ( CMPI_RC_ERR_FAILED ); } -static CMPIStatus __aft_setElementAt ( CMPIArray * array, CMPICount index, CMPIValue * val, +static CMPIStatus __aft_setElementAt ( CMPIArray * array, CMPICount index, const CMPIValue * val, CMPIType type ) { return setElementAt(array,index,val,type,0); @@ -265,7 +265,7 @@ CMPIStatus arraySetElementNotTrackedAt(CMPIArray * array, -void native_array_increase_size(CMPIArray * array, CMPICount increment) +void native_array_increase_size(const CMPIArray * array, CMPICount increment) { struct native_array *a = (struct native_array *) array; @@ -280,7 +280,7 @@ void native_array_increase_size(CMPIArray * array, CMPICount increment) } -void native_array_reset_size(CMPIArray * array, CMPICount increment) +void native_array_reset_size(const CMPIArray * array, CMPICount increment) { struct native_array *a = (struct native_array *) array; a->size = increment; diff --git a/brokerEnc.c b/brokerEnc.c index 861bbd1..b9a30a7 100644 --- a/brokerEnc.c +++ b/brokerEnc.c @@ -26,8 +26,8 @@ #include "constClass.h" #include "utilft.h" -extern const char *opGetClassNameChars(CMPIObjectPath * cop); -extern const char *opGetNameSpaceChars(CMPIObjectPath * cop); +extern const char *opGetClassNameChars(const CMPIObjectPath * cop); +extern const char *opGetNameSpaceChars(const CMPIObjectPath * cop); extern CMPIConstClass *getConstClass(const char *ns, const char *cn); extern CMPIObjectPathFT *CMPI_ObjectPath_FT; extern CMPIInstanceFT *CMPI_Instance_FT; @@ -39,8 +39,8 @@ extern CMPISelectExp *TrackedCMPISelectExp(const char *queryString, -static CMPIInstance *__beft_newInstance(CMPIBroker * broker, - CMPIObjectPath * cop, CMPIStatus * rc) +static CMPIInstance *__beft_newInstance(const CMPIBroker * broker, + const CMPIObjectPath * cop, CMPIStatus * rc) { _SFCB_ENTER(TRACE_ENCCALLS,"newInstance"); CMPIInstance *inst=TrackedCMPIInstance(cop, rc); @@ -48,7 +48,7 @@ static CMPIInstance *__beft_newInstance(CMPIBroker * broker, } -static CMPIObjectPath *__beft_newObjectPath(CMPIBroker * broker, +static CMPIObjectPath *__beft_newObjectPath(const CMPIBroker * broker, const char *namespace, const char *classname, CMPIStatus * rc) @@ -59,7 +59,7 @@ static CMPIObjectPath *__beft_newObjectPath(CMPIBroker * broker, } -static CMPIArgs *__beft_newArgs(CMPIBroker * broker, CMPIStatus * rc) +static CMPIArgs *__beft_newArgs(const CMPIBroker * broker, CMPIStatus * rc) { _SFCB_ENTER(TRACE_ENCCALLS,"newArgs"); CMPIArgs *args=TrackedCMPIArgs(rc); @@ -67,7 +67,7 @@ static CMPIArgs *__beft_newArgs(CMPIBroker * broker, CMPIStatus * rc) } -static CMPIString *__beft_newString(CMPIBroker * broker, +static CMPIString *__beft_newString(const CMPIBroker * broker, const char *str, CMPIStatus * rc) { _SFCB_ENTER(TRACE_ENCCALLS,"newString"); @@ -76,7 +76,7 @@ static CMPIString *__beft_newString(CMPIBroker * broker, } -static CMPIArray *__beft_newArray(CMPIBroker * broker, +static CMPIArray *__beft_newArray(const CMPIBroker * broker, CMPICount size, CMPIType type, CMPIStatus * rc) { @@ -86,7 +86,7 @@ static CMPIArray *__beft_newArray(CMPIBroker * broker, } -static CMPIDateTime *__beft_newDateTime(CMPIBroker * broker, CMPIStatus * rc) +static CMPIDateTime *__beft_newDateTime(const CMPIBroker * broker, CMPIStatus * rc) { _SFCB_ENTER(TRACE_ENCCALLS,"newDateTime"); CMPIDateTime *dt=native_new_CMPIDateTime(rc); @@ -94,7 +94,7 @@ static CMPIDateTime *__beft_newDateTime(CMPIBroker * broker, CMPIStatus * rc) } -static CMPIDateTime *__beft_newDateTimeFromBinary(CMPIBroker * broker, +static CMPIDateTime *__beft_newDateTimeFromBinary(const CMPIBroker * broker, CMPIUint64 time, CMPIBoolean interval, CMPIStatus * rc) @@ -105,8 +105,8 @@ static CMPIDateTime *__beft_newDateTimeFromBinary(CMPIBroker * broker, } -static CMPIDateTime *__beft_newDateTimeFromChars(CMPIBroker * broker, - char *string, CMPIStatus * rc) +static CMPIDateTime *__beft_newDateTimeFromChars(const CMPIBroker * broker, + const char *string, CMPIStatus * rc) { _SFCB_ENTER(TRACE_ENCCALLS,"newDateTimeFromChars"); CMPIDateTime *dt=native_new_CMPIDateTime_fromChars(string, rc); @@ -114,7 +114,7 @@ static CMPIDateTime *__beft_newDateTimeFromChars(CMPIBroker * broker, } -static CMPISelectExp *__beft_newSelectExp(CMPIBroker * broker, +static CMPISelectExp *__beft_newSelectExp(const CMPIBroker * broker, const char *queryString, const char *language, CMPIArray ** projection, @@ -126,8 +126,8 @@ static CMPISelectExp *__beft_newSelectExp(CMPIBroker * broker, } -static CMPIBoolean __beft_classPathIsA(CMPIBroker * broker, - CMPIObjectPath * cop, +static CMPIBoolean __beft_classPathIsA(const CMPIBroker * broker, + const CMPIObjectPath * cop, const char *type, CMPIStatus * rc) { CMPIConstClass *cc; @@ -155,8 +155,8 @@ static CMPIBoolean __beft_classPathIsA(CMPIBroker * broker, _SFCB_RETURN(0); } -static CMPIString *__beft_toString(CMPIBroker * broker, - void *object, CMPIStatus * rc) +static CMPIString *__beft_toString(const CMPIBroker * broker, + const void *object, CMPIStatus * rc) { CMPIString *str; _SFCB_ENTER(TRACE_ENCCALLS,"toString"); @@ -178,8 +178,8 @@ static CMPIString *__beft_toString(CMPIBroker * broker, } -static CMPIBoolean __beft_isOfType(CMPIBroker * broker, - void *object, +static CMPIBoolean __beft_isOfType(const CMPIBroker * broker, + const void *object, const char *type, CMPIStatus * rc) { char *t = *((char **) object); @@ -191,54 +191,49 @@ static CMPIBoolean __beft_isOfType(CMPIBroker * broker, } -static CMPIString *__beft_getType(CMPIBroker * broker, - void *object, CMPIStatus * rc) +static CMPIString *__beft_getType(const CMPIBroker * broker, + const void *object, CMPIStatus * rc) { _SFCB_ENTER(TRACE_ENCCALLS,"getType"); _SFCB_RETURN(__beft_newString(broker, *((char **) object), rc)); } -static CMPIString *__beft_getMessage(CMPIBroker * broker, +static CMPIString *__beft_getMessage(const CMPIBroker * broker, const char *msgId, const char *defMsg, CMPIStatus * rc, unsigned int count, ...) { - CMPIStatus nrc; - CMPIString *msg; - va_list argptr; - va_start(argptr, count); - - msg = - ((NativeCMPIBrokerFT *) (broker->bft))->getMessage(broker, msgId, - defMsg, &nrc, - count, argptr); - if (rc) - *rc = nrc; - return msg; + if (rc) CMSetStatus(rc,CMPI_RC_ERR_NOT_SUPPORTED); + _SFCB_ENTER(TRACE_ENCCALLS,"getMessage"); + _SFCB_TRACE(1,("This operation is not yet supported.")); + _SFCB_RETURN(__beft_newString(broker,defMsg,NULL)); } +static CMPIStatus __beft_logMessage + (const CMPIBroker* broker,int severity ,const char *id,const char *text, + const CMPIString *string) +{ + CMPIStatus rc = {CMPI_RC_ERR_NOT_SUPPORTED,NULL}; + _SFCB_ENTER(TRACE_ENCCALLS,"logMessage"); + _SFCB_TRACE(1,("This operation is not yet supported.")); + _SFCB_RETURN(rc); +} -static CMPIArray *__beft_getKeyNames(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, CMPIStatus * rc) +static CMPIStatus __beft_trace + (const CMPIBroker* broker, int level,const char *component,const char *text, + const CMPIString *string) { - CMPIArray *ar; - CMPIConstClass *cc; - - cc = (CMPIConstClass *) - getConstClass(opGetNameSpaceChars(cop), opGetClassNameChars(cop)); - if (cc) { - ar=cc->ft->getKeyList(cc); - // cc->ft->release(cc); - return ar; - } - else return NewCMPIArray(0, CMPI_string, NULL); + CMPIStatus rc = {CMPI_RC_ERR_NOT_SUPPORTED,NULL}; + _SFCB_ENTER(TRACE_ENCCALLS,"trace"); + _SFCB_TRACE(1,("This operation is not yet supported.")); + _SFCB_RETURN(rc); } + CMPIArray *getKeyListAndVerifyPropertyList(CMPIObjectPath * cop, - char **props, - int *ok, - CMPIStatus * rc) + char **props, + int *ok, + CMPIStatus * rc) { CMPIArray *ar; CMPIConstClass *cc; @@ -272,7 +267,8 @@ CMPIBrokerEncFT native_brokerEncFT = { __beft_isOfType, __beft_getType, __beft_getMessage, - __beft_getKeyNames, + __beft_logMessage, + __beft_trace }; CMPIBrokerEncFT *BrokerEncFT = &native_brokerEncFT; diff --git a/brokerUpc.c b/brokerUpc.c index 7e63f95..cc9578e 100644 --- a/brokerUpc.c +++ b/brokerUpc.c @@ -41,10 +41,10 @@ extern int indicationEnabled; #endif -extern MsgSegment setArgsMsgSegment(CMPIArgs * args); +extern MsgSegment setArgsMsgSegment(const CMPIArgs * args); extern CMPIArgs *relocateSerializedArgs(void *area); extern UtilStringBuffer *instanceToString(CMPIInstance * ci, char **props); -extern MsgSegment setInstanceMsgSegment(CMPIInstance * ci); +extern MsgSegment setInstanceMsgSegment(const CMPIInstance * ci); extern void memLinkObjectPath(CMPIObjectPath *op); extern ProviderInfo *activProvs; @@ -57,8 +57,6 @@ extern void setStatus(CMPIStatus *st, CMPIrc rc, char *msg); void closeProviderContext(BinRequestContext * ctx); -CMPIContext *native_clone_CMPIContext(CMPIContext *ctx); - //--------------------------------------------------- //--- //- Thread support @@ -68,18 +66,18 @@ CMPIContext *native_clone_CMPIContext(CMPIContext *ctx); static CMPI_MUTEX_TYPE mtx=NULL; -void lockUpCall(CMPIBroker* mb) +void lockUpCall(const CMPIBroker* mb) { if (mtx==NULL) mtx=mb->xft->newMutex(0); mb->xft->lockMutex(mtx); } -void unlockUpCall(CMPIBroker* mb) +void unlockUpCall(const CMPIBroker* mb) { mb->xft->unlockMutex(mtx); } -static CMPIContext* prepareAttachThread(CMPIBroker* mb, CMPIContext* ctx) +static CMPIContext* prepareAttachThread(const CMPIBroker* mb, const CMPIContext* ctx) { CMPIContext *nctx; _SFCB_ENTER(TRACE_INDPROVIDER | TRACE_UPCALLS, "prepareAttachThread"); @@ -87,24 +85,24 @@ static CMPIContext* prepareAttachThread(CMPIBroker* mb, CMPIContext* ctx) _SFCB_RETURN(nctx); } -static CMPIStatus attachThread(CMPIBroker* mb, CMPIContext* ctx) +static CMPIStatus attachThread(const CMPIBroker* mb, const CMPIContext* ctx) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER | TRACE_UPCALLS, "attachThread"); _SFCB_RETURN(st); } -static CMPIStatus detachThread(CMPIBroker* mb, CMPIContext* ctx) +static CMPIStatus detachThread(const CMPIBroker* mb, const CMPIContext* ctx) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER | TRACE_UPCALLS, "detachThread"); - ctx->ft->release(ctx); + ctx->ft->release((CMPIContext*)ctx); _SFCB_RETURN(st); } -static CMPIStatus deliverIndication(CMPIBroker* mb, CMPIContext* ctx, - const char *ns, CMPIInstance* ind) +static CMPIStatus deliverIndication(const CMPIBroker* mb, const CMPIContext* ctx, + const char *ns, const CMPIInstance* ind) { #ifdef SFCB_INCL_INDICATION_SUPPORT @@ -203,7 +201,7 @@ static CMPIStatus setErrorStatus(int code) } static void setContext(BinRequestContext * binCtx, OperationHdr * oHdr, - BinRequestHdr * bHdr, int size, CMPIObjectPath * cop) + BinRequestHdr * bHdr, int size, const CMPIObjectPath * cop) { memset(binCtx,0,sizeof(BinRequestContext)); oHdr->nameSpace = setCharsMsgSegment((char *) @@ -263,10 +261,10 @@ static void cpyResponse(BinResponseHdr *resp, CMPIArray *ar, int *c, CMPIType ty //--------------------------------------------------- -static CMPIInstance *getInstance(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, - char **props, CMPIStatus * rc) +static CMPIInstance *getInstance(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, + const char **props, CMPIStatus * rc) { BinRequestContext binCtx; BinResponseHdr *resp; @@ -327,10 +325,10 @@ static CMPIInstance *getInstance(CMPIBroker * broker, _SFCB_RETURN(tInst); } -static CMPIObjectPath *createInstance(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, - CMPIInstance * inst, CMPIStatus * rc) +static CMPIObjectPath *createInstance(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, + const CMPIInstance * inst, CMPIStatus * rc) { BinRequestContext binCtx; BinResponseHdr *resp; @@ -393,14 +391,14 @@ static CMPIObjectPath *createInstance(CMPIBroker * broker, _SFCB_RETURN(tOp); } -static CMPIStatus modifyInstance(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, - CMPIInstance * inst, char **props) +static CMPIStatus modifyInstance(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, + const CMPIInstance * inst, const char **props) { BinRequestContext binCtx; BinResponseHdr *resp; - char **p=props; + const char **p=props; ModifyInstanceReq *sreq=NULL; OperationHdr oHdr = { OPS_ModifyInstance, 2 }; CMPIStatus st = { CMPI_RC_OK, NULL }; @@ -432,7 +430,7 @@ static CMPIStatus modifyInstance(CMPIBroker * broker, if (pInfo->provIds.ids == binCtx.provA.ids.ids) { CMPIResult *result = native_new_CMPIResult(0,1,NULL); unlockUpCall(broker); - st = pInfo->instanceMI->ft->setInstance(pInfo->instanceMI,context,result,cop,inst,props); + st = pInfo->instanceMI->ft->modifyInstance(pInfo->instanceMI,context,result,cop,inst,props); if (sreq) free(sreq); return st; } @@ -458,8 +456,8 @@ static CMPIStatus modifyInstance(CMPIBroker * broker, _SFCB_RETURN(st); } -static CMPIStatus deleteInstance(CMPIBroker * broker, - CMPIContext * context, CMPIObjectPath * cop) +static CMPIStatus deleteInstance(const CMPIBroker * broker, + const CMPIContext * context, const CMPIObjectPath * cop) { BinRequestContext binCtx; BinResponseHdr *resp; @@ -509,9 +507,9 @@ static CMPIStatus deleteInstance(CMPIBroker * broker, } -static CMPIEnumeration *execQuery(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, const char *query, +static CMPIEnumeration *execQuery(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, const char *query, const char *lang, CMPIStatus * rc) { BinRequestContext binCtx; @@ -531,8 +529,8 @@ static CMPIEnumeration *execQuery(CMPIBroker * broker, setContext(&binCtx, &oHdr, &sreq.hdr, sizeof(sreq), cop); _SFCB_TRACE(1,("--- for %s %s",(char*)oHdr.nameSpace.data,(char*)oHdr.className.data)); - sreq.query = setCharsMsgSegment((char*)query); - sreq.queryLang = setCharsMsgSegment((char*)lang); + sreq.query = setCharsMsgSegment(query); + sreq.queryLang = setCharsMsgSegment(lang); irc = getProviderContext(&binCtx, &oHdr); @@ -550,7 +548,7 @@ static CMPIEnumeration *execQuery(CMPIBroker * broker, local=1; unlockUpCall(broker); rci = pInfo->instanceMI->ft->execQuery( - pInfo->instanceMI, context, result, cop, (char*)query, (char*)lang); + pInfo->instanceMI, context, result, cop, query, lang); lockUpCall(broker); if (rci.rc == CMPI_RC_OK) cpyResult(result, ar, &c); else st=rci; @@ -582,10 +580,10 @@ static CMPIEnumeration *execQuery(CMPIBroker * broker, _SFCB_RETURN(enm); } -static CMPIEnumeration *enumInstances(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, - char **props, CMPIStatus * rc) +static CMPIEnumeration *enumInstances(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, + const char **props, CMPIStatus * rc) { BinRequestContext binCtx; EnumInstancesReq sreq = BINREQ(OPS_EnumerateInstances, 2); @@ -651,9 +649,9 @@ static CMPIEnumeration *enumInstances(CMPIBroker * broker, _SFCB_RETURN(enm); } -static CMPIEnumeration *enumInstanceNames(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, CMPIStatus * rc) +static CMPIEnumeration *enumInstanceNames(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, CMPIStatus * rc) { BinRequestContext binCtx; EnumInstanceNamesReq sreq = BINREQ(OPS_EnumerateInstanceNames, 2); @@ -726,13 +724,13 @@ static CMPIEnumeration *enumInstanceNames(CMPIBroker * broker, -static CMPIEnumeration *associators(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, +static CMPIEnumeration *associators(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, const char *assocclass, const char *resultclass, const char *role, - const char *resultrole, char **props, + const char *resultrole, const char **props, CMPIStatus * rc) { CMPIStatus rci = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; @@ -741,9 +739,9 @@ static CMPIEnumeration *associators(CMPIBroker * broker, return NULL; } -static CMPIEnumeration *associatorNames(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, +static CMPIEnumeration *associatorNames(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, const char *assocclass, const char *resultclass, const char *role, @@ -755,11 +753,11 @@ static CMPIEnumeration *associatorNames(CMPIBroker * broker, return NULL; } -static CMPIEnumeration *references(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, +static CMPIEnumeration *references(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, const char *assocclass, - const char *role, char **props, + const char *role, const char **props, CMPIStatus * rc) { CMPIStatus rci = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; @@ -768,9 +766,9 @@ static CMPIEnumeration *references(CMPIBroker * broker, return NULL; } -static CMPIEnumeration *referenceNames(CMPIBroker * broker, - CMPIContext * context, - CMPIObjectPath * cop, +static CMPIEnumeration *referenceNames(const CMPIBroker * broker, + const CMPIContext * context, + const CMPIObjectPath * cop, const char *assocclass, const char *role, CMPIStatus * rc) { @@ -794,9 +792,9 @@ struct native_args { }; -static CMPIData invokeMethod(CMPIBroker * broker, CMPIContext * context, - CMPIObjectPath * cop, const char *method, - CMPIArgs * in, CMPIArgs * out, CMPIStatus * rc) +static CMPIData invokeMethod(const CMPIBroker * broker, const CMPIContext * context, + const CMPIObjectPath * cop, const char *method, + const CMPIArgs * in, CMPIArgs * out, CMPIStatus * rc) { BinRequestContext binCtx; BinResponseHdr *resp; @@ -826,7 +824,7 @@ static CMPIData invokeMethod(CMPIBroker * broker, CMPIContext * context, sreq->in = setArgsMsgSegment(in); sreq->out = setArgsMsgSegment(NULL); - sreq->method = setCharsMsgSegment((char*)method); + sreq->method = setCharsMsgSegment(method); if (x) for (n=5,i=0,s=CMGetArgCount(in,NULL); iparamValues.first; p; p = p->next) { // this is a problem: - paramvalue without type - if (p->type==NULL) p->type=CMPI_string; + if (p->type==0) p->type=CMPI_string; CMPIValue val = str2CMPIValue(p->type, p->value.value, &p->valueRef); CMAddArg(in, p->name, &val, p->type); } diff --git a/classProvider.c b/classProvider.c index 1314417..d886d45 100644 --- a/classProvider.c +++ b/classProvider.c @@ -47,7 +47,7 @@ #define LOCALCLASSNAME "ClassProvider" -static CMPIBroker *_broker; +static const CMPIBroker *_broker; extern char * configfile; extern ProviderRegister *pReg; @@ -74,7 +74,7 @@ struct _Class_Register_FT { ClassRegister *(*clone) (ClassRegister * br); CMPIConstClass *(*getClass) (ClassRegister * br, const char *clsName); int (*putClass) (ClassRegister * br, CMPIConstClass * cls); - int (*removeClass) (ClassRegister * br, const char *className); + void (*removeClass) (ClassRegister * br, const char *className); UtilList *(*getChildren) (ClassRegister * br, const char *className); void (*rLock)(ClassRegister * cr); void (*wLock)(ClassRegister * cr); @@ -384,8 +384,8 @@ static int addClass(ClassRegister * cr,CMPIConstClass *ccp, char *cn, char *p) static UtilHashTable *gatherNameSpaces(char *dn, UtilHashTable *ns, int first) { - DIR *dir; - struct dirent *de, *de_test; + DIR *dir, *dir_test; + struct dirent *de; char *n; int l; ClassRegister *cr; @@ -405,12 +405,12 @@ static UtilHashTable *gatherNameSpaces(char *dn, UtilHashTable *ns, int first) strcpy(n,dn); strcat(n,"/"); strcat(n,de->d_name); - de_test = opendir(n); - if (de_test == NULL) { + dir_test = opendir(n); + if (dir_test == NULL) { free(n); continue; } - free(de_test); + closedir(dir_test); cr=newClassRegister(n); if (cr) { ns->ft->put(ns, n+nsBaseLen, cr); @@ -443,7 +443,7 @@ static UtilHashTable *buildClassRegisters() } -static ClassRegister *getNsReg(CMPIObjectPath *ref, int *rc) +static ClassRegister *getNsReg(const CMPIObjectPath *ref, int *rc) { char *ns; CMPIString *nsi=CMGetNameSpace(ref,NULL); @@ -930,18 +930,20 @@ static void loopOnChildCount(ClassRegister *cReg, char *cn, int *i, int ignprov) } -static CMPIStatus ClassProviderMethodCleanup(CMPIMethodMI * mi, CMPIContext * ctx) +static CMPIStatus ClassProviderMethodCleanup(CMPIMethodMI * mi, + const CMPIContext * ctx, + CMPIBoolean terminate) { CMPIStatus st = { CMPI_RC_OK, NULL }; return st; } static CMPIStatus ClassProviderInvokeMethod(CMPIMethodMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, const char *methodName, - CMPIArgs * in, CMPIArgs * out) + const CMPIArgs * in, CMPIArgs * out) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIArray *ar; diff --git a/cmpidt.h b/cmpidt.h index d677a73..638f4a4 100644 --- a/cmpidt.h +++ b/cmpidt.h @@ -28,7 +28,7 @@ extern "C" { #endif -// defintion of version numbers to be used by providers using CMBrokerVersion() +// Definition of version numbers to be used by providers using CMBrokerVersion() // They indicate what CMPI version is supported by both the broker and its adapter #define CMPIVersion051 51 // 0.51 @@ -39,7 +39,7 @@ extern "C" { #define CMPIVersion086 86 // 0.86 #define CMPIVersion087 87 // 0.87 #define CMPIVersion090 90 // 0.90 - + #define CMPIVersion100 100 // 1.00 // CMPI_VERSION compile switch should be used during MI compilation only. // It is used define minimal version support needed from Management Broker. @@ -56,11 +56,13 @@ extern "C" { #define CMPI_VER_87 1 #elif (CMPI_VERSION==90) #define CMPI_VER_90 1 + #elif (CMPI_VERSION==100) + #define CMPI_VER_100 1 #else #error Unsupported CMPI_VERSION defined #endif #else - #define CMPI_VER_86 + #define CMPI_VER_100 #endif @@ -75,8 +77,14 @@ extern "C" { // During MI loading MBs must ensure that // _CreateMI.miVersion<=_CreateMI.ftVersion // If this is not the case, the MI might require higher version MB support. - -#if defined (CMPI_VER_90) || defined(CMPI_VER_ALL) +#if defined (CMPI_VER_100) || defined(CMPI_VER_ALL) + #define CMPI_VER_90 + #define CMPI_VER_87 + #define CMPI_VER_86 + #define CMPI_VER_85 + #define CMPI_VER_80 + #define CMPICurrentVersion CMPIVersion100 +#elif defined (CMPI_VER_90) || defined(CMPI_VER_ALL) // added Ext function table and getKeyList #define CMPI_VER_87 #define CMPI_VER_86 @@ -369,8 +377,15 @@ extern "C" { #define CMPI_FLAG_IncludeQualifiers 4 #define CMPI_FLAG_IncludeClassOrigin 8 - #define CMPIInvocationFlags "CMPIInvocationFlags" + /* Authenticated ID of the user requesting this MI invocation.*/ #define CMPIPrincipal "CMPIPrincipal" + /* CMPIFlags - invocation flags as specified by the client. */ + #define CMPIInvocationFlags "CMPIInvocationFlags" + /* Namespace for which the MI is started. */ + #define CMPIInitNameSpace "CMPIInitNameSpace" + /* The role assumed by the current authenticated user.*/ + #define CMPIRole "CMPIRole" + typedef enum _CMPIrc { CMPI_RC_OK =0, @@ -391,8 +406,13 @@ extern "C" { CMPI_RC_ERR_INVALID_QUERY =15, CMPI_RC_ERR_METHOD_NOT_AVAILABLE =16, CMPI_RC_ERR_METHOD_NOT_FOUND =17, + /* The following return codes are used by cleanup() calls only. */ CMPI_RC_DO_NOT_UNLOAD =50, CMPI_RC_NEVER_UNLOAD =51, + /* Internal CMPI return codes. */ + CMPI_RC_ERR_INVALID_HANDLE =60, + CMPI_RC_ERR_INVALID_DATA_TYPE =61, + /* Hosting OS errors. */ CMPI_RC_ERROR_SYSTEM =100, CMPI_RC_ERROR =200 } CMPIrc; @@ -416,6 +436,16 @@ extern "C" { #define CMPI_MB_Supports_Qualifier 0x00001000 #define CMPI_MB_Supports_Schema 0x00003000 +#define CMPI_MB_BasicRead 0x00000001 +#define CMPI_MB_BasicWrite 0x00000003 +#define CMPI_MB_InstanceManipulation 0x00000007 +#define CMPI_MB_AssociationTraversal 0x00000009 +#define CMPI_MB_QueryExecution 0x00000011 +#define CMPI_MB_QueryNormalization 0x00000031 +#define CMPI_MB_BasicQualifierSupport 0x00000047 +#define CMPI_MB_OSEncapsulationSupport 0x00000100 + + /* Query Predicate operations */ typedef enum _CMPIPredOp { diff --git a/cmpift.h b/cmpift.h index e59dfb5..b1de09c 100644 --- a/cmpift.h +++ b/cmpift.h @@ -55,7 +55,7 @@ extern "C" { @return The newly created Instance. */ CMPIInstance* (*newInstance) - (CMPIBroker* mb,CMPIObjectPath* op,CMPIStatus* rc); + (const CMPIBroker* mb,const CMPIObjectPath* op,CMPIStatus* rc); /** ObjectPath factory service. @param mb Broker this pointer @@ -65,7 +65,7 @@ extern "C" { @return The newly created ObjectPath. */ CMPIObjectPath* (*newObjectPath) - (CMPIBroker* mb, const char *ns, const char *cn, CMPIStatus* rc); + (const CMPIBroker* mb, const char *ns, const char *cn, CMPIStatus* rc); /** Args container factory service. @param mb Broker this pointer @@ -73,7 +73,7 @@ extern "C" { @return The newly created Args container. */ CMPIArgs* (*newArgs) - (CMPIBroker* mb, CMPIStatus* rc); + (const CMPIBroker* mb, CMPIStatus* rc); /** String container factory service. @param mb Broker this pointer @@ -82,7 +82,7 @@ extern "C" { @return The newly created String. */ CMPIString* (*newString) - (CMPIBroker* mb, const char *data, CMPIStatus* rc); + (const CMPIBroker* mb, const char *data, CMPIStatus* rc); /** Array container factory service. @param mb Broker this pointer @@ -92,7 +92,7 @@ extern "C" { @return The newly created Array. */ CMPIArray* (*newArray) - (CMPIBroker* mb, CMPICount max, CMPIType type, CMPIStatus* rc); + (const CMPIBroker* mb, CMPICount max, CMPIType type, CMPIStatus* rc); /** DateTime factory service. Initialized with the time of day. @param mb Broker this pointer @@ -100,7 +100,7 @@ extern "C" { @return The newly created DateTime. */ CMPIDateTime* (*newDateTime) - (CMPIBroker* mb, CMPIStatus* rc); + (const CMPIBroker* mb, CMPIStatus* rc); /** DateTime factory service. Initialized from <binTime>. @param mb Broker this pointer @@ -111,7 +111,7 @@ extern "C" { @return The newly created DateTime. */ CMPIDateTime* (*newDateTimeFromBinary) - (CMPIBroker* mb, CMPIUint64 binTime, CMPIBoolean interval, + (const CMPIBroker* mb, CMPIUint64 binTime, CMPIBoolean interval, CMPIStatus* rc); /** DateTime factory service. Is initialized from <utcTime>. @@ -121,7 +121,7 @@ extern "C" { @return The newly created DateTime. */ CMPIDateTime* (*newDateTimeFromChars) - (CMPIBroker* mb, char *utcTime, CMPIStatus* rc); + (const CMPIBroker* mb, const char *utcTime, CMPIStatus* rc); /** SelectExp factory service. TBD. @param mb Broker this pointer @@ -132,7 +132,7 @@ extern "C" { @return The newly created SelectExp. */ CMPISelectExp* (*newSelectExp) - (CMPIBroker* mb, const char *query, const char *lang, + (const CMPIBroker* mb, const char *query, const char *lang, CMPIArray** projection, CMPIStatus* st); /** Function to determine whether a CIM class is of <type> or any of @@ -144,7 +144,7 @@ extern "C" { @return True if test successful. */ CMPIBoolean (*classPathIsA) - (CMPIBroker* mb, CMPIObjectPath* op, const char *type, CMPIStatus* rc); + (const CMPIBroker* mb, const CMPIObjectPath* op, const char *type, CMPIStatus* rc); /** Attempts to transforms an CMPI object to a broker specific string format. Intended for debugging purposes only. @@ -154,7 +154,7 @@ extern "C" { @return String from representation of <object>. */ CMPIString* (*toString) - (CMPIBroker* mb, void* object, CMPIStatus* rc); + (const CMPIBroker* mb, const void* object, CMPIStatus* rc); /** Verifies whether <object> is of CMPI type <type>. Intended for debugging purposes only. @@ -166,7 +166,7 @@ extern "C" { @return True if test successful. */ CMPIBoolean (*isOfType) - (CMPIBroker* mb, void* object, const char *type, CMPIStatus* rc); + (const CMPIBroker* mb, const void* object, const char *type, CMPIStatus* rc); /** Retrieves the CMPI type of <object>. Intended for debugging purposes only. @@ -176,7 +176,7 @@ extern "C" { @return CMPI object type. */ CMPIString* (*getType) - (CMPIBroker* mb, void* object, CMPIStatus* rc); + (const CMPIBroker* mb, const void* object, CMPIStatus* rc); /** Retrieves translated message. @param mb Broker this pointer @@ -188,14 +188,24 @@ extern "C" { */ #if defined(CMPI_VER_85) CMPIString* (*getMessage) - (CMPIBroker* mb, const char *msgId, const char *defMsg, CMPIStatus* rc, unsigned int count, ...); + (const CMPIBroker* mb, const char *msgId, const char *defMsg, CMPIStatus* rc, CMPICount count, ...); #endif // CMPI_VER_85 - #if defined(CMPI_VER_90) +#if defined(CMPI_VER_100) + CMPIStatus (*logMessage) + (const CMPIBroker*,int severity ,const char *id,const char *text, + const CMPIString *string); + + CMPIStatus (*trace) + (const CMPIBroker*,int level,const char *component,const char *text, + const CMPIString *string); + +#else CMPIArray *(*getKeyList) (CMPIBroker *mb, CMPIContext *ctx, CMPIObjectPath *op, CMPIStatus *rc); - #endif // CMPI_VER_90 +#endif // CMPI_VER_100 + }; @@ -219,7 +229,7 @@ extern "C" { unsigned long brokerClassification; /** CIMOM version as defined by CIMOM */ - int brokerVersion; + unsigned int brokerVersion; /** CIMOM name */ const char *brokerName; @@ -233,7 +243,7 @@ extern "C" { @return New Context object to be used by thread to be attached. */ CMPIContext* (*prepareAttachThread) - (CMPIBroker* mb, CMPIContext* ctx); + (const CMPIBroker* mb, const CMPIContext* ctx); /** This function informs the CMPI run time system that the current thread with Context will begin using CMPI services. @@ -242,7 +252,7 @@ extern "C" { @return Service return status. */ CMPIStatus (*attachThread) - (CMPIBroker*,CMPIContext*); + (const CMPIBroker*,const CMPIContext*); /** This function informs the CMPI run time system that the current thread will not be using CMPI services anymore. The Context object will be @@ -252,7 +262,7 @@ extern "C" { @return Service return status. */ CMPIStatus (*detachThread) - (CMPIBroker* mb, CMPIContext* ctx); + (const CMPIBroker* mb, const CMPIContext* ctx); // class 0 services @@ -265,8 +275,8 @@ extern "C" { @return Service return status. */ CMPIStatus (*deliverIndication) - (CMPIBroker* mb, CMPIContext* ctx, - const char *ns, CMPIInstance* ind); + (const CMPIBroker* mb, const CMPIContext* ctx, + const char *ns, const CMPIInstance* ind); // class 1 services /** Enumerate Instance Names of the class (and subclasses) defined by <op>. @@ -277,8 +287,8 @@ extern "C" { @return Enumeration of ObjectPathes. */ CMPIEnumeration* (*enumInstanceNames) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, CMPIStatus* rc); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, CMPIStatus* rc); /** Get Instance using <op> as reference. Instance structure can be controled using the CMPIInvocationFlags entry in <ctx>. @@ -292,8 +302,8 @@ extern "C" { @return The Instance. */ CMPIInstance* (*getInstance) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char** properties, CMPIStatus* rc); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char** properties, CMPIStatus* rc); // class 2 services @@ -306,8 +316,8 @@ extern "C" { @return The assigned instance reference. */ CMPIObjectPath* (*createInstance) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, CMPIInstance* inst, CMPIStatus* rc); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const CMPIInstance* inst, CMPIStatus* rc); /** Replace an existing Instance from <inst> using <op> as reference. @param mb Broker this pointer. @@ -316,9 +326,9 @@ extern "C" { @param inst Complete instance. @return Service return status. */ - CMPIStatus (*setInstance) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, CMPIInstance* inst, char ** properties); + CMPIStatus (*modifyInstance) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const CMPIInstance* inst, const char ** properties); /** Delete an existing Instance using <op> as reference. @param mb Broker this pointer. @@ -327,8 +337,8 @@ extern "C" { @return Service return status. */ CMPIStatus (*deleteInstance) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op); /** Query the enumeration of instances of the class (and subclasses) defined by <op> using <query> expression. @@ -341,8 +351,8 @@ extern "C" { @return Resulting eumeration of Instances. */ CMPIEnumeration* (*execQuery) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, const char *query, const char *lang, CMPIStatus* rc); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char *query, const char *lang, CMPIStatus* rc); /** Enumerate Instances of the class (and subclasses) defined by <op>. Instance structure and inheritance scope can be controled using the @@ -357,8 +367,8 @@ extern "C" { @return Enumeration of Instances. */ CMPIEnumeration* (*enumInstances) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char** properties, CMPIStatus* rc); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char** properties, CMPIStatus* rc); /** Enumerate instances associated with the Instance defined by the <op>. @param mb Broker this pointer. @@ -391,9 +401,9 @@ extern "C" { @return Enumeration of Instances. */ CMPIEnumeration* (*associators) - (CMPIBroker* mb,CMPIContext* ctx, - CMPIObjectPath* op, const char *assocClass, const char *resultClass, - const char *role, const char *resultRole, char** properties, CMPIStatus* rc); + (const CMPIBroker* mb,const CMPIContext* ctx, + const CMPIObjectPath* op, const char *assocClass, const char *resultClass, + const char *role, const char *resultRole, const char** properties, CMPIStatus* rc); /** Enumerate ObjectPaths associated with the Instance defined by <op>. @param mb Broker this pointer. @@ -423,8 +433,8 @@ extern "C" { @return Enumeration of ObjectPaths. */ CMPIEnumeration* (*associatorNames) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, const char *assocClass, const char *resultClass, + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char *assocClass, const char *resultClass, const char *role, const char *resultRole, CMPIStatus* rc); /** Enumerates the association instances that refer to the instance defined by @@ -449,9 +459,9 @@ extern "C" { @return Enumeration of ObjectPaths. */ CMPIEnumeration* (*references) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, const char *resultClass ,const char *role , - char** properties, CMPIStatus* rc); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char *resultClass ,const char *role , + const char** properties, CMPIStatus* rc); /** Enumerates the association ObjectPaths that refer to the instance defined by <op>. @@ -472,8 +482,8 @@ extern "C" { @return Enumeration of ObjectPaths. */ CMPIEnumeration* (*referenceNames) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, const char *resultClass ,const char *role, + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char *resultClass ,const char *role, CMPIStatus* rc); /** Invoke a named, extrinsic method of an Instance @@ -488,9 +498,9 @@ extern "C" { @return Method return value. */ CMPIData (*invokeMethod) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op,const char *method, - CMPIArgs* in, CMPIArgs* out, CMPIStatus* rc); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op,const char *method, + const CMPIArgs* in, CMPIArgs* out, CMPIStatus* rc); /** Set the named property value of an Instance defined by the <op> parameter. @param mb Broker this pointer. @@ -502,9 +512,9 @@ extern "C" { @return Service return status. */ CMPIStatus (*setProperty) - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, const char *name , CMPIValue* value, - CMPIType type); + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char *name , const CMPIValue* value, + const CMPIType type); /** Get the named property value of an Instance defined by the <op> parameter. @param mb Broker this pointer. @@ -515,8 +525,8 @@ extern "C" { @return Property value. */ CMPIData (*getProperty) - (CMPIBroker *mb, CMPIContext *ctx, - CMPIObjectPath *op, const char *name, CMPIStatus *rc); + (const CMPIBroker *mb, const CMPIContext *ctx, + const CMPIObjectPath *op, const char *name, CMPIStatus *rc); }; @@ -675,7 +685,8 @@ extern "C" { @return Pointer to copied Context object. */ CMPIContext* (*clone) - (CMPIContext* ctx, CMPIStatus* rc); + (const CMPIContext* ctx, CMPIStatus* rc); + /** Gets a named Context entry value. @param ctx Context this pointer. @@ -684,7 +695,7 @@ extern "C" { @return Entry value. */ CMPIData (*getEntry) - (CMPIContext* ctx, const char *name, CMPIStatus* rc); + (const CMPIContext* ctx, const char *name, CMPIStatus* rc); /** Gets a Context entry value defined by its index. @param ctx Context this pointer. @@ -694,7 +705,7 @@ extern "C" { @return Entry value. */ CMPIData (*getEntryAt) - (CMPIContext* ctx, unsigned int index, CMPIString** name, + (const CMPIContext* ctx, unsigned int index, CMPIString** name, CMPIStatus* rc); /** Gets the number of entries contained in this Context. @@ -702,7 +713,7 @@ extern "C" { @return Number of entries. */ unsigned int (*getEntryCount) - (CMPIContext* ctx, CMPIStatus* rc); + (const CMPIContext* ctx, CMPIStatus* rc); /** adds/replaces a named Context entry @param ctx Context this pointer. @@ -712,7 +723,7 @@ extern "C" { @return Service return status. */ CMPIStatus (*addEntry) - (CMPIContext* ctx, const char *name, CMPIValue* value, CMPIType type); + (CMPIContext* ctx, const char *name, const CMPIValue* value, const CMPIType type); }; @@ -793,7 +804,7 @@ extern "C" { @return Pointer to copied Result object. */ CMPIResult* (*clone) - (CMPIResult* rslt,CMPIStatus* rc); + (const CMPIResult* rslt,CMPIStatus* rc); /** Return a value/type pair. @param rslt Result this pointer. @@ -802,7 +813,7 @@ extern "C" { @return Service return status. */ CMPIStatus (*returnData) - (CMPIResult* rslt,const CMPIValue* value,CMPIType type); + (const CMPIResult* rslt,const CMPIValue* value,const CMPIType type); /** Return a Instance object. @param rslt Result this pointer. @@ -810,7 +821,7 @@ extern "C" { @return Service return status. */ CMPIStatus (*returnInstance) - (CMPIResult* rslt,CMPIInstance* inst); + (const CMPIResult* rslt,const CMPIInstance* inst); /** Return a ObjectPath object.. @param rslt Result this pointer. @@ -818,14 +829,14 @@ extern "C" { @return Service return status. */ CMPIStatus (*returnObjectPath) - (CMPIResult* rslt, CMPIObjectPath* ref); + (const CMPIResult* rslt, const CMPIObjectPath* ref); /** Indicates no further data to be returned. @param rslt Result this pointer. @return Service return status. */ CMPIStatus (*returnDone) - (CMPIResult* rslt); + (const CMPIResult* rslt); }; @@ -884,7 +895,7 @@ extern "C" { @return Pointer to copied Instance object. */ CMPIInstance* (*clone) - (CMPIInstance* inst, CMPIStatus* rc); + (const CMPIInstance* inst, CMPIStatus* rc); /** Gets a named property value. @param inst Instance this pointer. @@ -893,7 +904,7 @@ extern "C" { @return Property value. */ CMPIData (*getProperty) - (CMPIInstance* inst, const char *name, CMPIStatus* rc); + (const CMPIInstance* inst, const char *name, CMPIStatus* rc); /** Gets a Property value defined by its index. @param inst Instance this pointer. @@ -903,7 +914,7 @@ extern "C" { @return Property value. */ CMPIData (*getPropertyAt) - (CMPIInstance* inst, unsigned int index, CMPIString** name, + (const CMPIInstance* inst, unsigned int index, CMPIString** name, CMPIStatus* rc); /** Gets the number of properties contained in this Instance. @@ -912,7 +923,7 @@ extern "C" { @return Number of properties. */ unsigned int (*getPropertyCount) - (CMPIInstance* inst, CMPIStatus* rc); + (const CMPIInstance* inst, CMPIStatus* rc); /** Adds/replaces a named Property. @param inst Instance this pointer. @@ -923,7 +934,7 @@ extern "C" { */ CMPIStatus (*setProperty) (CMPIInstance* inst, const char *name, - CMPIValue* value, CMPIType type); + const CMPIValue* value, CMPIType type); /** Generates an ObjectPath out of the namespace, classname and key propeties of this Instance. @@ -932,7 +943,7 @@ extern "C" { @return the generated ObjectPath. */ CMPIObjectPath* (*getObjectPath) - (CMPIInstance* inst, CMPIStatus* rc); + (const CMPIInstance* inst, CMPIStatus* rc); /** Directs CMPI to ignore any setProperty operations for this instance for any properties not in this list. @@ -944,7 +955,12 @@ extern "C" { @return Service return status. */ CMPIStatus (*setPropertyFilter) - (CMPIInstance* inst, char **propertyList, char **keys); + ( CMPIInstance* inst, const char **propertyList, const char **keys); + +#ifdef CMPI_VER_100 + CMPIStatus (*setObjectPath) + (CMPIInstance*, const CMPIObjectPath*); +#endif }; @@ -1003,7 +1019,7 @@ extern "C" { @return Pointer to copied ObjectPath object. */ CMPIObjectPath* (*clone) - (CMPIObjectPath* op, CMPIStatus* rc); + (const CMPIObjectPath* op, CMPIStatus* rc); /** Set/replace the namespace component. @param op ObjectPath this pointer. @@ -1019,7 +1035,7 @@ extern "C" { @return The namespace component. */ CMPIString* (*getNameSpace) - (CMPIObjectPath* op, CMPIStatus* rc); + (const CMPIObjectPath* op, CMPIStatus* rc); /** Set/replace the hostname component. @param op ObjectPath this pointer. @@ -1035,7 +1051,7 @@ extern "C" { @return The hostname component. */ CMPIString* (*getHostname) - (CMPIObjectPath* op, CMPIStatus* rc); + (const CMPIObjectPath* op, CMPIStatus* rc); /** Set/replace the classname component. @param op ObjectPath this pointer. @@ -1051,7 +1067,7 @@ extern "C" { @return The classname component. */ CMPIString* (*getClassName) - (CMPIObjectPath* op, CMPIStatus* rc); + (const CMPIObjectPath* op, CMPIStatus* rc); /** Adds/replaces a named key property. @param op ObjectPath this pointer. @@ -1062,7 +1078,7 @@ extern "C" { */ CMPIStatus (*addKey) (CMPIObjectPath* op, const char *name, - CMPIValue* value, CMPIType type); + const CMPIValue* value, const CMPIType type); /** Gets a named key property value. @param op ObjectPath this pointer. @@ -1071,7 +1087,7 @@ extern "C" { @return Entry value. */ CMPIData (*getKey) - (CMPIObjectPath* op, const char *name, CMPIStatus* rc); + (const CMPIObjectPath* op, const char *name, CMPIStatus* rc); /** Gets a key property value defined by its index. @param op ObjectPath this pointer. @@ -1081,7 +1097,7 @@ extern "C" { @return Data value. */ CMPIData (*getKeyAt) - (CMPIObjectPath* op, unsigned int index, CMPIString** name, + (const CMPIObjectPath* op, unsigned int index, CMPIString** name, CMPIStatus* rc); /** Gets the number of key properties contained in this ObjectPath. @@ -1090,7 +1106,7 @@ extern "C" { @return Number of properties. */ unsigned int (*getKeyCount) - (CMPIObjectPath* op, CMPIStatus* rc); + (const CMPIObjectPath* op, CMPIStatus* rc); /** Set/replace namespace and classname components from <src>. @param op ObjectPath this pointer. @@ -1098,7 +1114,7 @@ extern "C" { @return Service return status. */ CMPIStatus (*setNameSpaceFromObjectPath) - (CMPIObjectPath* op, CMPIObjectPath* src); + (CMPIObjectPath* op, const CMPIObjectPath* src); /** Set/replace hostname, namespace and classname components from <src>. @param op ObjectPath this pointer. @@ -1107,7 +1123,7 @@ extern "C" { */ CMPIStatus (*setHostAndNameSpaceFromObjectPath) (CMPIObjectPath* op, - CMPIObjectPath* src); + const CMPIObjectPath* src); @@ -1121,7 +1137,7 @@ extern "C" { @return Qualifier value. */ CMPIData (*getClassQualifier) - (CMPIObjectPath* op, + (const CMPIObjectPath* op, const char *qName, CMPIStatus *rc); @@ -1133,7 +1149,7 @@ extern "C" { @return Qualifier value. */ CMPIData (*getPropertyQualifier) - (CMPIObjectPath* op, + (const CMPIObjectPath* op, const char *pName, const char *qName, CMPIStatus *rc); @@ -1146,7 +1162,7 @@ extern "C" { @return Qualifier value. */ CMPIData (*getMethodQualifier) - (CMPIObjectPath* op, + (const CMPIObjectPath* op, const char *methodName, const char *qName, CMPIStatus *rc); @@ -1160,7 +1176,7 @@ extern "C" { @return Qualifier value. */ CMPIData (*getParameterQualifier) - (CMPIObjectPath* op, + (const CMPIObjectPath* op, const char *mName, const char *pName, const char *qName, @@ -1173,7 +1189,7 @@ extern "C" { @return String representation. */ CMPIString *(*toString) - (CMPIObjectPath* op, CMPIStatus *rc); + (const CMPIObjectPath* op, CMPIStatus *rc); #endif }; @@ -1234,7 +1250,7 @@ extern "C" { @return Pointer to copied SelectExp object. */ CMPISelectExp* (*clone) - (CMPISelectExp* se, CMPIStatus* rc); + (const CMPISelectExp* se, CMPIStatus* rc); /** Evaluate the instance using this select expression. @param se SelectExp this pointer. @@ -1243,7 +1259,7 @@ extern "C" { @return True or false incicator. */ CMPIBoolean (*evaluate) - (CMPISelectExp* se, CMPIInstance* inst, CMPIStatus* rc); + (const CMPISelectExp* se, const CMPIInstance* inst, CMPIStatus* rc); /** Return the select expression in string format. @param se SelectExp this pointer. @@ -1251,7 +1267,7 @@ extern "C" { @return The select expression. */ CMPIString* (*getString) - (CMPISelectExp* se, CMPIStatus* rc); + (const CMPISelectExp* se, CMPIStatus* rc); /** Return the select expression as disjunction of conjunctions. @param se SelectExp this pointer. @@ -1259,7 +1275,7 @@ extern "C" { @return The disjunction. */ CMPISelectCond* (*getDOC) - (CMPISelectExp* se, CMPIStatus* rc); + (const CMPISelectExp* se, CMPIStatus* rc); /** Return the select expression as conjunction of disjunctions. @param se SelectExp this pointer. @@ -1267,7 +1283,7 @@ extern "C" { @return The conjunction. */ CMPISelectCond* (*getCOD) - (CMPISelectExp* se, CMPIStatus* rc); + (const CMPISelectExp* se, CMPIStatus* rc); /** Evaluate this select expression by using a data value accessor routine. @param se SelectExp this pointer. @@ -1278,7 +1294,7 @@ extern "C" { */ #if defined(CMPI_VER_87) CMPIBoolean (*evaluateUsingAccessor) - (CMPISelectExp* se, CMPIAccessor *accessor, void *parm, CMPIStatus* rc); + (const CMPISelectExp* se, CMPIAccessor *accessor, void *parm, CMPIStatus* rc); #endif }; @@ -1338,7 +1354,7 @@ extern "C" { @return Pointer to copied SelectExp object. */ CMPISelectCond* (*clone) - (CMPISelectCond* sc, CMPIStatus* rc); + (const CMPISelectCond* sc, CMPIStatus* rc); /** Return the number of sub conditions that are partof this SelectCond. Optionally, the SelectCond type (COD or DOC) will be returned. @@ -1348,7 +1364,7 @@ extern "C" { @return Number of SubCond elements. */ CMPICount (*getCountAndType) - (CMPISelectCond* sc, int* type, CMPIStatus* rc); + (const CMPISelectCond* sc, int* type, CMPIStatus* rc); /** Return a SubCond element based on its index. @param sc SelectCond this pointer. @@ -1357,7 +1373,7 @@ extern "C" { @return The indexed SubCond element. */ CMPISubCond* (*getSubCondAt) - (CMPISelectCond* sc, unsigned int index, CMPIStatus* rc); + (const CMPISelectCond* sc, unsigned int index, CMPIStatus* rc); }; @@ -1416,7 +1432,7 @@ extern "C" { @return Pointer to copied SelectExp object. */ CMPISubCond* (*clone) - (CMPISubCond* sc,CMPIStatus* rc); + (const CMPISubCond* sc,CMPIStatus* rc); /** Return the number of predicates that are part of sub condition. @param sc SubCond this pointer. @@ -1424,7 +1440,7 @@ extern "C" { @return Number of Predicate elements. */ CMPICount (*getCount) - (CMPISubCond* sc, CMPIStatus* rc); + (const CMPISubCond* sc, CMPIStatus* rc); /** Return a Predicate element based on its index. @param sc SubCond this pointer. @@ -1433,7 +1449,7 @@ extern "C" { @return The indexed Predicate element. */ CMPIPredicate* (*getPredicateAt) - (CMPISubCond* sc, unsigned int index, CMPIStatus* rc); + (const CMPISubCond* sc, unsigned int index, CMPIStatus* rc); /** Return a named Predicate element. @param sc SubCond this pointer. @@ -1442,7 +1458,7 @@ extern "C" { @return The named Predicate element. */ CMPIPredicate* (*getPredicate) - (CMPISubCond* sc, const char *name, CMPIStatus* rc); + (const CMPISubCond* sc, const char *name, CMPIStatus* rc); }; @@ -1502,7 +1518,7 @@ extern "C" { @return Pointer to copied Predicate object. */ CMPIPredicate* (*clone) - (CMPIPredicate* pr, CMPIStatus* rc); + (const CMPIPredicate* pr, CMPIStatus* rc); /** Get the predicate components. @param pr Predicate this pointer. @@ -1513,7 +1529,7 @@ extern "C" { @return Service return status. */ CMPIStatus (*getData) - (CMPIPredicate* pr, CMPIType* type, + (const CMPIPredicate* pr, CMPIType* type, CMPIPredOp* op, CMPIString** lhs, CMPIString** rhs); /** Evaluate the predicate using a specific value. @@ -1524,9 +1540,18 @@ extern "C" { @param rc Output: Service return status (suppressed when NULL). @return Evaluation result. */ + +#if defined(CMPI_VER_87) && !defined(CMPI_VER_100) +// Deprecated in the CMPI spec. int (*evaluate) (CMPIPredicate* pr, CMPIValue* value, CMPIType type, CMPIStatus* rc); +#endif + +#if defined(CMPI_VER_100) + CMPIBoolean (*evaluateUsingAccessor) + (const CMPIPredicate*, CMPIAccessor *, void *, CMPIStatus *rc); +#endif }; @@ -1585,7 +1610,7 @@ extern "C" { @return Pointer to copied Args object. */ CMPIArgs* (*clone) - (CMPIArgs* as, CMPIStatus* rc); + (const CMPIArgs* as, CMPIStatus* rc); /** Adds/replaces a named argument. @param as Args this pointer. @@ -1595,8 +1620,8 @@ extern "C" { @return Service return status. */ CMPIStatus (*addArg) - (CMPIArgs* as, const char *name ,CMPIValue* value, - CMPIType type); + (const CMPIArgs* as, const char *name ,const CMPIValue* value, + const CMPIType type); /** Gets a named argument value. @param as Args this pointer. @@ -1605,7 +1630,7 @@ extern "C" { @return Argument value. */ CMPIData (*getArg) - (CMPIArgs* as, const char *name, CMPIStatus* rc); + (const CMPIArgs* as, const char *name, CMPIStatus* rc); /** Gets a Argument value defined by its index. @param as Args this pointer. @@ -1615,7 +1640,7 @@ extern "C" { @return Argument value. */ CMPIData (*getArgAt) - (CMPIArgs* as, unsigned int index, CMPIString** name, + (const CMPIArgs* as, unsigned int index, CMPIString** name, CMPIStatus* rc); /** Gets the number of arguments contained in this Args. @@ -1624,7 +1649,7 @@ extern "C" { @return Number of properties. */ unsigned int (*getArgCount) - (CMPIArgs* as, CMPIStatus* rc); + (const CMPIArgs* as, CMPIStatus* rc); }; @@ -1683,7 +1708,7 @@ extern "C" { @return Pointer to copied String object. */ CMPIString* (*clone) - (CMPIString* st, CMPIStatus* rc); + (const CMPIString* st, CMPIStatus* rc); /** Get a pointer to a C char *representation of this String. @param st String this pointer. @@ -1691,7 +1716,7 @@ extern "C" { @return Pointer to char *representation. */ char *(*getCharPtr) - (CMPIString* st, CMPIStatus* rc); + (const CMPIString* st, CMPIStatus* rc); }; @@ -1750,7 +1775,7 @@ extern "C" { @return Pointer to copied Array object. */ CMPIArray* (*clone) - (CMPIArray* ar, CMPIStatus* rc); + (const CMPIArray* ar, CMPIStatus* rc); /** Gets the number of elements contained in this Array. @param ar Array this pointer. @@ -1758,7 +1783,7 @@ extern "C" { @return Number of elements. */ CMPICount (*getSize) - (CMPIArray* ar, CMPIStatus* rc); + (const CMPIArray* ar, CMPIStatus* rc); /** Gets the element type. @param ar Array this pointer. @@ -1766,7 +1791,7 @@ extern "C" { @return Number of elements. */ CMPIType (*getSimpleType) - (CMPIArray* ar, CMPIStatus* rc); + (const CMPIArray* ar, CMPIStatus* rc); /** Gets an element value defined by its index. @param ar Array this pointer. @@ -1775,7 +1800,7 @@ extern "C" { @return Element value. */ CMPIData (*getElementAt) - (CMPIArray* ar, CMPICount index, CMPIStatus* rc); + (const CMPIArray* ar, CMPICount index, CMPIStatus* rc); /** Sets an element value defined by its index. @param ar Array this pointer. @@ -1785,7 +1810,7 @@ extern "C" { @return Service return status. */ CMPIStatus (*setElementAt) - (CMPIArray* ar, CMPICount index, CMPIValue* value, CMPIType type); + (CMPIArray* ar, CMPICount index, const CMPIValue* value, CMPIType type); }; @@ -1845,7 +1870,7 @@ extern "C" { @return Pointer to copied Enumeration object. */ CMPIEnumeration* (*clone) - (CMPIEnumeration* en, CMPIStatus* rc); + (const CMPIEnumeration* en, CMPIStatus* rc); /** Get the next element of this Enumeration. @param en Enumeration this pointer. @@ -1853,7 +1878,7 @@ extern "C" { @return Element value. */ CMPIData (*getNext) - (CMPIEnumeration* en, CMPIStatus* rc); + (const CMPIEnumeration* en, CMPIStatus* rc); /** Test for any elements left in this Enumeration. @param en Enumeration this pointer. @@ -1861,7 +1886,7 @@ extern "C" { @return True or false. */ CMPIBoolean (*hasNext) - (CMPIEnumeration* en, CMPIStatus* rc); + (const CMPIEnumeration* en, CMPIStatus* rc); /** Convert this Enumeration into an Array. @param en Enumeration this pointer. @@ -1869,7 +1894,7 @@ extern "C" { @return The Array. */ CMPIArray* (*toArray) - (CMPIEnumeration* en, CMPIStatus* rc); + (const CMPIEnumeration* en, CMPIStatus* rc); }; @@ -1929,7 +1954,7 @@ extern "C" { @return Pointer to copied DateTime object. */ CMPIDateTime* (*clone) - (CMPIDateTime* dt, CMPIStatus* rc); + (const CMPIDateTime* dt, CMPIStatus* rc); /** Get DateTime setting in binary format (in microsecods starting since 00:00:00 GMT, Jan 1,1970). @@ -1938,7 +1963,7 @@ extern "C" { @return DateTime in binary. */ CMPIUint64 (*getBinaryFormat) - (CMPIDateTime* dt, CMPIStatus* rc); + (const CMPIDateTime* dt, CMPIStatus* rc); /** Get DateTime setting in UTC string format. @param dt DateTime this pointer. @@ -1946,7 +1971,7 @@ extern "C" { @return DateTime as UTC string. */ CMPIString* (*getStringFormat) - (CMPIDateTime* dt, CMPIStatus* rc); + (const CMPIDateTime* dt, CMPIStatus* rc); /** Tests whether DateTime is an interval value. @param dt DateTime this pointer. @@ -1954,7 +1979,7 @@ extern "C" { @return True if interval value. */ CMPIBoolean (*isInterval) - (CMPIDateTime* dt, CMPIStatus* rc); + (const CMPIDateTime* dt, CMPIStatus* rc); }; @@ -2008,15 +2033,28 @@ extern "C" { /** Provider name */ - char *miName; + const char *miName; - /** Cleanup is called prior to unloading of the provider. - @param mi Provider this pointer. - @param ctx Invocation Context + /** The CMPIInstanceMIFT.cleanup() function shall perform any necessary cleanup + operation prior to the unloading of the library of which this MI group is part. + This function is called prior to the unloading of the provider. + + @param mi The mi argument is a pointer to a CMPIInstanceMI structure. + @param ctx The ctx argument is a pointer to a CMPIContext structure containing the Invocation + Context. + @param terminating When true, the terminating argument indicates that the MB is in the process of + terminating and that cleanup must be done. When set to false, the MI may respond with + CMPI_IRC_DO_NOT_UNLOAD, or CMPI_IRC_NEVER_UNLOAD, indicating that unload will + interfere with current MI processing. @return Function return status. + The following CMPIrc codes shall be recognized: + CMPI_RC_OK Operation successful. + CMPI_RC_ERR_FAILED Unspecific error occurred. + CMPI_RC_DO_NOT_UNLOAD Operation successful - do not unload now. + CMPI_RC_NEVER_UNLOAD Operation successful - never unload.o */ CMPIStatus (*cleanup) - (CMPIInstanceMI* mi, CMPIContext* ctx); + (CMPIInstanceMI* mi, const CMPIContext* ctx, CMPIBoolean terminating); /** Enumerate ObjectPaths of Instances serviced by this provider. @param mi Provider this pointer. @@ -2026,8 +2064,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*enumInstanceNames) - (CMPIInstanceMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op); + (CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op); /** Enumerate the Instances serviced by this provider. @param mi Provider this pointer. @@ -2040,8 +2078,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*enumInstances) - (CMPIInstanceMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, char** properties); + (CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const char** properties); /** Get the Instances defined by <op>. @param mi Provider this pointer. @@ -2054,8 +2092,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*getInstance) - (CMPIInstanceMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, char** properties); + (CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const char** properties); /** Create Instance from <inst> using <op> as reference. @param mi Provider this pointer. @@ -2066,8 +2104,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*createInstance) - (CMPIInstanceMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, CMPIInstance* inst); + (CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const CMPIInstance* inst); /** Replace an existing Instance from <inst> using <op> as reference. @param mi Provider this pointer. @@ -2081,9 +2119,9 @@ extern "C" { will be replaced. @return Function return status. */ - CMPIStatus (*setInstance) - (CMPIInstanceMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, CMPIInstance* inst, char** properties); + CMPIStatus (*modifyInstance) + (CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const CMPIInstance* inst, const char** properties); /** Delete an existing Instance defined by <op>. @param mi Provider this pointer. @@ -2093,8 +2131,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*deleteInstance) - (CMPIInstanceMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op); + (CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op); /** Query the enumeration of instances of the class (and subclasses) defined by <op> using <query> expression. @@ -2107,8 +2145,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*execQuery) - (CMPIInstanceMI*,CMPIContext*,CMPIResult*, - CMPIObjectPath*,char*,char*); + (CMPIInstanceMI*,const CMPIContext*, const CMPIResult*, + const CMPIObjectPath*, const char*, const char*); }; @@ -2161,15 +2199,27 @@ extern "C" { /** Provider name */ - char *miName; + const char *miName; /** Cleanup is called prior to unloading of the provider. - @param mi Provider this pointer. - @param ctx Invocation Context - @return Function return status. + This function shall perform any necessary cleanup + operations prior to the unloading of the library of which this MI group is part. + + @param mi This argument is a pointer to a CMPIAssociationMI structure. + @param ctx This argument is a pointer to a CMPIContext structure containing the Invocation Context. + @param terminating When true, the terminating argument indicates that the MB is in the process of + terminating and that cleanup must be done. When set to false, the MI may respond with + CMPI_IRC_DO_NOT_UNLOAD, or CMPI_IRC_NEVER_UNLOAD, indicating that unload will + interfere with current MI processing. + @return Function return status. The following CMPIrc codes shall be recognized: + CMPI_RC_OK Operation successful. + CMPI_RC_ERR_FAILED Unspecific error occurred. + CMPI_RC_DO_NOT_UNLOAD Operation successful - do not unload now. + CMPI_RC_NEVER_UNLOAD Operation successful - never unload. + */ CMPIStatus (*cleanup) - (CMPIAssociationMI* mi, CMPIContext* ctx); + (CMPIAssociationMI* mi, const CMPIContext* ctx, CMPIBoolean terminating); /** Enumerate ObjectPaths associated with the Instance defined by <op>. @param mi Provider this pointer. @@ -2202,9 +2252,9 @@ extern "C" { @return Function return status. */ CMPIStatus (*associators) - (CMPIAssociationMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, const char *asscClass, const char *resultClass, - const char *role, const char *resultRole, char** properties); + (CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const char *asscClass, const char *resultClass, + const char *role, const char *resultRole, const char** properties); /** Enumerate ObjectPaths associated with the Instance defined by <op>. @param mi Provider this pointer. @@ -2234,8 +2284,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*associatorNames) - (CMPIAssociationMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, const char *assocClass, const char *resultClass, + (CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const char *assocClass, const char *resultClass, const char *role, const char *resultRole); /** Enumerates the association instances that refer to the instance defined by @@ -2260,9 +2310,9 @@ extern "C" { @return Function return status. */ CMPIStatus (*references) - (CMPIAssociationMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, const char *resultClass, const char *role , - char** properties); + (CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const char *resultClass, const char *role , + const char** properties); /** Enumerates the association ObjectPaths that refer to the instance defined by <op>. @@ -2283,8 +2333,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*referenceNames) - (CMPIAssociationMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, const char* resultClass, const char* role); + (CMPIAssociationMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const char* resultClass, const char* role); }; @@ -2338,15 +2388,28 @@ extern "C" { /** Provider name */ - char *miName; + const char *miName; - /** Cleanup is called prior to unloading of the provider. - @param mi Provider this pointer. - @param ctx Invocation Context + /** The CMPIMethodMIFT.cleanup() function shall perform any necessary cleanup operation + prior to the unloading of the library of which this MI group is part. This function is called + prior to the unloading of the provider. + + @param mi The mi argument is a pointer to a CMPIMethodMI structure. + @param ctx The ctx argument is a pointer to a CMPIContext structure containing the Invocation + Context. + @param terminating When true, the terminating argument indicates that the MB is in the process of + terminating and that cleanup must be done. When set to false, the MI may respond with + CMPI_IRC_DO_NOT_UNLOAD, or CMPI_IRC_NEVER_UNLOAD, indicating that unload will + interfere with current MI processing. @return Function return status. + The following CMPIrc codes shall be recognized: + CMPI_RC_OK Operation successful. + CMPI_RC_ERR_FAILED Unspecific error occurred. + CMPI_RC_DO_NOT_UNLOAD Operation successful - do not unload now. + CMPI_RC_NEVER_UNLOAD Operation successful - never unload. */ CMPIStatus (*cleanup) - (CMPIMethodMI* mi, CMPIContext* ctx); + (CMPIMethodMI* mi, const CMPIContext* ctx, CMPIBoolean terminating); /** Invoke a named, extrinsic method of an Instance defined by the <op> parameter. @@ -2360,8 +2423,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*invokeMethod) - (CMPIMethodMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, const char *method, CMPIArgs* in, CMPIArgs* out); + (CMPIMethodMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const char *method, const CMPIArgs* in, CMPIArgs* out); }; @@ -2414,7 +2477,7 @@ extern "C" { /** Provider name */ - char *miName; + const char *miName; /** Cleanup is called prior to unloading of the provider. @param mi Provider this pointer. @@ -2422,7 +2485,7 @@ extern "C" { @return Function return status. */ CMPIStatus (*cleanup) - (CMPIPropertyMI* mi, CMPIContext* ctx); + (CMPIPropertyMI* mi, const CMPIContext* ctx, CMPIBoolean *term); /** Set the named property value of an Instance defined by the <op> parameter. @param mi Provider this pointer. @@ -2434,8 +2497,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*setProperty) - (CMPIPropertyMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPIObjectPath* op, const char *name, CMPIData data); + (CMPIPropertyMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, + const CMPIObjectPath* op, const char *name, const CMPIData data); /** Get the named property value of an Instance defined by the <op> parameter. @param mi Provider this pointer. @@ -2446,8 +2509,8 @@ extern "C" { @return Function return status. */ CMPIStatus (*getProperty) - (CMPIPropertyMI*,CMPIContext*,CMPIResult*, - CMPIObjectPath*, const char*); + (CMPIPropertyMI*,const CMPIContext*,const CMPIResult*, + const CMPIObjectPath*, const char*); }; @@ -2500,33 +2563,46 @@ extern "C" { /** Provider name */ - char *miName; + const char *miName; /** Cleanup is called prior to unloading of the provider. - @param mi Provider this pointer. - @param ctx Invocation Context + This function shall perform any necessary cleanup + operation prior to the unloading of the library of which this MI group is part. + + @param mi The mi argument is a pointer to a CMPIIndicationMI structure. + @param ctx The ctx argument is a pointer to a CMPIContext structure containing the Invocation + Context. + @param terminating When true, the terminating argument indicates that the MB is in the process of + terminating and that cleanup must be done. When set to false, the MI may respond with + CMPI_IRC_DO_NOT_UNLOAD, or CMPI_IRC_NEVER_UNLOAD, indicating that unload will + interfere with current MI processing. + @return Function return status. + The following CMPIrc codes shall be recognized: + CMPI_RC_OK Operation successful. + CMPI_RC_ERR_FAILED Unspecific error occurred. + CMPI_RC_DO_NOT_UNLOAD Operation successful %Gâ ³%@ do not unload now. + CMPI_RC_NEVER_UNLOAD Operation successful %Gâ ³%@ never unload.W */ CMPIStatus (*cleanup) - (CMPIIndicationMI* mi, CMPIContext* ctx); + (CMPIIndicationMI* mi, const CMPIContext* ctx, CMPIBoolean terminating); CMPIStatus (*authorizeFilter) - (CMPIIndicationMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPISelectExp* se, const char *ns, CMPIObjectPath* op, const char *user); + (CMPIIndicationMI* mi, const CMPIContext* ctx, + const CMPISelectExp* se, const char *ns, const CMPIObjectPath* op, const char *user); CMPIStatus (*mustPoll) - (CMPIIndicationMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPISelectExp* se, const char *ns, CMPIObjectPath* op); + (CMPIIndicationMI* mi, const CMPIContext* ctx, + const CMPISelectExp* se, const char *ns, const CMPIObjectPath* op); CMPIStatus (*activateFilter) - (CMPIIndicationMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPISelectExp* se, const char *ns, CMPIObjectPath* op, CMPIBoolean first); + (CMPIIndicationMI* mi, const CMPIContext* ctx, + const CMPISelectExp* se, const char *ns, const CMPIObjectPath* op, CMPIBoolean first); CMPIStatus (*deActivateFilter) - (CMPIIndicationMI* mi, CMPIContext* ctx, CMPIResult* rslt, - CMPISelectExp* se, const char *ns, CMPIObjectPath* op, CMPIBoolean last); - #if defined(CMPI_VER_86) + (CMPIIndicationMI* mi, const CMPIContext* ctx, + const CMPISelectExp* se, const char *ns, const CMPIObjectPath* op, CMPIBoolean last); void (*enableIndications) - (CMPIIndicationMI* mi); + (CMPIIndicationMI* mi, const CMPIContext *); void (*disableIndications) - (CMPIIndicationMI* mi); - #endif // CMPI_VER_86 + (CMPIIndicationMI* mi, const CMPIContext *); + }; diff --git a/cmpimacs.h b/cmpimacs.h index 20ac030..ace53cd 100644 --- a/cmpimacs.h +++ b/cmpimacs.h @@ -68,7 +68,7 @@ @param msg the message as character string @return This macro contains a return statement and leaves the function. */ - noReturn CMReturnWithChars(CMPIBroker *mb, CMPIrc rc, char *msg); + noReturn CMReturnWithChars(const CMPIBroker *mb, CMPIrc rc, char *msg); #else #define CMReturnWithChars(b,rc,chars) \ { CMPIStatus stat={(rc),NULL}; \ @@ -97,8 +97,8 @@ inline static void CMSetStatus(CMPIStatus* st, CMPIrc rcp) @param rcp CMPI return code @param string Message string */ -inline static void CMSetStatusWithString(CMPIBroker *mb, CMPIStatus *st, CMPIrc rcp, - CMPIString *string) +inline static void CMSetStatusWithString(const CMPIBroker *mb, CMPIStatus *st, CMPIrc rcp, + const CMPIString *string) { (st)->rc=(rcp); (st)->msg=(string); } #else #define CMSetStatusWithString(st,rcp,string) \ @@ -113,8 +113,8 @@ inline static void CMSetStatusWithString(CMPIBroker *mb, CMPIStatus *st, CMPIr @param rcp CMPI return code @param chars Message character string */ -inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc rcp, - char* chars) +inline static void CMSetStatusWithChars(const CMPIBroker *mb, CMPIStatus* st, CMPIrc rcp, + const char* chars) { (st)->rc=(rcp); (st)->msg=(mb)->eft->newString((mb),(chars),NULL); } #else @@ -125,7 +125,11 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc #ifndef DOC_ONLY #ifdef CMPI_PLATFORM_WIN32_IX86_MSVC + #ifdef __cplusplus + #define CMPI_EXTERN_C extern "C" __declspec(dllexport) + #else #define CMPI_EXTERN_C __declspec(dllexport) + #endif #else #ifdef __cplusplus #define CMPI_EXTERN_C extern "C" @@ -139,7 +143,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc /** Tests for encapsulated NULL object. @param obj CMPI Object pointer */ - inline static CMPIBoolean CMIsNullObject(void* obj) + inline static CMPIBoolean CMIsNullObject(constant void* obj) { return ((obj)==NULL || *((void**)(obj))==NULL); } #else #define CMIsNullObject(o) ((o)==NULL || *((void**)(o))==NULL) @@ -191,7 +195,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @param rc Output: Service return status (suppressed when NULL). @return The newly created Instance. */ - inline static CMPIInstance* CMNewInstance(CMPIBroker *mb, CMPIObjectPath *op, + inline static CMPIInstance* CMNewInstance(const CMPIBroker *mb, const CMPIObjectPath *op, CMPIStatus *rc) { return ((mb)->eft->newInstance((mb),(op),(rc))); } #else @@ -206,7 +210,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @param rc Output: Service return status (suppressed when NULL). @return The newly created ObjectPath. */ - inline static CMPIObjectPath* CMNewObjectPath(CMPIBroker *mb, char *ns, char *cn, + inline static CMPIObjectPath* CMNewObjectPath(const CMPIBroker *mb, const char *ns, const char *cn, CMPIStatus *rc) { return ((mb)->eft->newObjectPath((mb),(ns),(cn),(rc))); } #else @@ -221,7 +225,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @param rc Output: Service return status (suppressed when NULL). @return The newly created String. */ - inline static CMPIString* CMNewString(CMPIBroker* mb, char *data, CMPIStatus *rc) + inline static CMPIString* CMNewString(const CMPIBroker* mb, const char *data, CMPIStatus *rc) { return ((mb)->eft->newString((mb),(data),(rc))); } #else #define CMNewString(b,s,rc) ((b)->eft->newString((b),(s),(rc))) @@ -233,7 +237,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @param rc Output: Service return status (suppressed when NULL). @return The newly created Args container. */ - inline static CMPIArgs* CMNewArgs(CMPIBroker* mb, CMPIStatus* rc) + inline static CMPIArgs* CMNewArgs(const CMPIBroker* mb, CMPIStatus* rc) { return ((mb)->eft->newArgs((mb),(rc))); } #else #define CMNewArgs(b,rc) ((b)->eft->newArgs((b),(rc))) @@ -247,7 +251,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @param rc Output: Service return status (suppressed when NULL). @return The newly created Array. */ - inline static CMPIArray* CMNewArray(CMPIBroker* mb, CMPICount max, CMPIType type, + inline static CMPIArray* CMNewArray(const CMPIBroker* mb, CMPICount max, CMPIType type, CMPIStatus* rc) { return ((mb)->eft->newArray((mb),(max),(type),(rc))); } #else @@ -260,7 +264,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @param rc Output: Service return status (suppressed when NULL). @return The newly created DateTime. */ - inline static CMPIDateTime* CMNewDateTime(CMPIBroker* mb, CMPIStatus* rc) + inline static CMPIDateTime* CMNewDateTime(const CMPIBroker* mb, CMPIStatus* rc) { return ((mb)->eft->newDateTime((mb),(rc))); } #else #define CMNewDateTime(b,rc) ((b)->eft->newDateTime((b),(rc))) @@ -276,7 +280,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The newly created DateTime. */ inline static CMPIDateTime* CMNewDateTimeFromBinary - (CMPIBroker* mb, CMPIUint64 binTime, CMPIBoolean interval, + (const CMPIBroker* mb, CMPIUint64 binTime, CMPIBoolean interval, CMPIStatus* rc) { return ((mb)->eft->newDateTimeFromBinary((mb),(binTime),(interval),(rc))); } #else @@ -292,7 +296,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The newly created DateTime. */ inline static CMPIDateTime* CMNewDateTimeFromChars - (CMPIBroker* mb, char* utcTime, CMPIStatus* rc) + (const CMPIBroker* mb, char* utcTime, CMPIStatus* rc) { return ((mb)->eft->newDateTimeFromChars((mb),(utcTime),(rc))); } #else #define CMNewDateTimeFromChars(b,d,rc) \ @@ -309,8 +313,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The newly created SelectExp. */ inline static CMPISelectExp* CMNewSelectExp - (CMPIBroker* mb, char* query, char* lang, - CMPIArray** projection, CMPIStatus* rc) + (const CMPIBroker* mb, const char* query, const char* lang, + const CMPIArray** projection, CMPIStatus* rc) { return ((mb)->eft->newSelectExp((mb),(query),(lang),(projection),(rc))); } #else #define CMNewSelectExp(b,q,l,p,rc) \ @@ -327,7 +331,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return True if test successful. */ inline static CMPIBoolean CMClassPathIsA - (CMPIBroker* mb, CMPIObjectPath* op, char* type, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIObjectPath* op, const char* type, CMPIStatus* rc) { return ((mb)->eft->classPathIsA((mb),(op),(type),(rc))); } #else #define CMClassPathIsA(b,p,pn,rc) \ @@ -345,7 +349,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return String from representation of <object>. */ inline static CMPIString* CDToString - (CMPIBroker* mb, void* object, CMPIStatus* rc) + (const CMPIBroker* mb, const void* object, CMPIStatus* rc) { return ((mb)->eft->toString((mb),(void*)(object),(rc))); } #else #define CDToString(b,o,rc) ((b)->eft->toString((b),(void*)(o),(rc))) @@ -362,11 +366,11 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return True if test successful. */ inline static CMPIBoolean CDIsOfType - (CMPIBroker* mb, void* object, char* type, CMPIStatus* rc) + (const CMPIBroker* mb, const void* object, const char* type, CMPIStatus* rc) { return ((mb)->eft->isOfType((mb),(void*)(object),(type),(rc))); } #else #define CDIsOfType(b,o,t,rc) \ - (b)->eft->isOfType((b),(void*)(o),(t),(rc))) + (b)->eft->isOfType((b),(void*)(o),(t),(rc)) #endif #ifdef CMPI_INLINE @@ -378,7 +382,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return CMPI object type. */ inline static CMPIString* CDGetType - (CMPIBroker* mb, void* object, CMPIStatus* rc) + (const CMPIBroker* mb, const void* object, CMPIStatus* rc) { return ((mb)->eft->getType((mb),(object),(rc))); } #else #define CDGetType(b,o,rc) ((b)->eft->getType((b),(void*)(o),(rc))) @@ -411,8 +415,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc CMFmtString(v) CMPIString @return the translated message. */ - inline static CMPIString* CMgetMessage - (CMPIBroker* mb, char *msgId, char *defMsg, CMPIStatus* rc, unsigned int, ...); + inline static CMPIString* CMGetMessage + (const CMPIBroker* mb, const char *msgId, const char *defMsg, CMPIStatus* rc, unsigned int, ...); #endif #define CMFmtSint(v) CMPI_sint32,((long int)v) @@ -449,6 +453,36 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc #define CMGetMessage(b,id,def,rc,parms) ((b)->eft->getMessage((b),(id),(def),(rc),parms)) #endif //CMPI_VER_85 + +#ifdef CMPI_VER_100 +#ifdef CMPI_INLINE + /** IBMKR + @param rc Output: Service return status (suppressed when NULL). + @return Property value. + */ + inline static CMPIStatus CMLogMessage + (const CMPIBroker *b, int severity, const char *id, + const char *text, const CMPIString *string) + { return ((b)->eft->logMessage((b),(severity),(id), (text), (string))); } +#else + #define CMLogMessage(b,severity,id, text, string) ((b)->eft->logMessage((b),(severity),(id),(text),(string))) +#endif +#endif + +#ifdef CMPI_VER_100 +#ifdef CMPI_INLINE + /** IBMKR + @return Property value. + */ + inline static CMPIStatus CMTraceMessage + (const CMPIBroker *b, int level, const char *component, + const char *text, const CMPIString *string) + { return ((b)->eft->logMessage((b),(level),(component), (text), (string))); } +#else + #define CMTraceMessage(b,level,component, text, string) ((b)->eft->trace((b),(level),(component),(text),(string))) +#endif +#endif + // CMPIInstance macros @@ -460,7 +494,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Property value. */ inline static CMPIData CMGetProperty - (CMPIInstance* inst, char* name, CMPIStatus* rc) + (const CMPIInstance* inst, const char* name, CMPIStatus* rc) { return ((inst)->ft->getProperty((inst),(name),(rc))); } #else #define CMGetProperty(i,n,rc) ((i)->ft->getProperty((i),(n),(rc))) @@ -475,7 +509,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Property value. */ inline static CMPIData CMGetPropertyAt - (CMPIInstance* inst, unsigned int index, CMPIString** name, + (const CMPIInstance* inst, unsigned int index, CMPIString** name, CMPIStatus* rc) { return ((inst)->ft->getPropertyAt((inst),(index),(name),(rc))); } #else @@ -492,9 +526,9 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMSetProperty - (CMPIInstance* inst, char* name, - void* value, CMPIType type) - { return ((inst)->ft->setProperty((inst),(name),(CMPIValue*)(value),(type))); } + (const CMPIInstance* inst,const char* name, + const CMPIValue* value, CMPIType type) + { return ((inst)->ft->setProperty((inst),(name),(value),(type))); } #else #define CMSetProperty(i,n,v,t) \ ((i)->ft->setProperty((i),(n),(CMPIValue*)(v),(t))) @@ -507,7 +541,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Number of properties. */ inline static unsigned int CMGetPropertyCount - (CMPIInstance* inst, CMPIStatus* rc) + (const CMPIInstance* inst, CMPIStatus* rc) { return ((inst)->ft->getPropertyCount((inst),(rc))); } #else #define CMGetPropertyCount(i,rc) ((i)->ft->getPropertyCount((i),(rc))) @@ -521,12 +555,24 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return the generated ObjectPath. */ inline static CMPIObjectPath* CMGetObjectPath - (CMPIInstance* inst, CMPIStatus* rc) + (const CMPIInstance* inst, CMPIStatus* rc) { return ((inst)->ft->getObjectPath((inst),(rc))); } #else #define CMGetObjectPath(i,rc) ((i)->ft->getObjectPath((i),(rc))) #endif +#ifdef CMPI_VER_100 +#ifdef CMPI_INLINE + /* IBMKR + */ + inline static CMPIStatus CMSetObjectPath + ( CMPIInstance* inst, const CMPIObjectPath *obj) + { return ((inst)->ft->setObjectPath((inst),(obj))); } +#else + #define CMSetObjectPath(i,obj) ((i)->ft->getObjectPath((i),(obj))) +#endif +#endif + #ifdef CMPI_INLINE /** Directs CMPI to ignore any setProperty operations for this instance for any properties not in this list. @@ -537,7 +583,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMSetPropertyFilter - (CMPIInstance* inst, char** propertyList, char **keys) + (CMPIInstance* inst, const char** propertyList, char **keys) { return ((inst)->ft->setPropertyFilter((inst),(propertyList),(keys))); } #else #define CMSetPropertyFilter(i,pl,k) ((i)->ft->setPropertyFilter((i),(pl),(k))) @@ -555,7 +601,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMSetHostname - (CMPIObjectPath* op, char* hn) + (CMPIObjectPath* op, const char* hn) { return ((op)->ft->setHostname((op),(hn))); } #else #define CMSetHostname(p,n) ((p)->ft->setHostname((p),(n))) @@ -568,7 +614,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The hostname component. */ inline static CMPIString* CMGetHostname - (CMPIObjectPath* op,CMPIStatus* rc) + (const CMPIObjectPath* op,CMPIStatus* rc) { return ((op)->ft->getHostname((op),(rc))); } #else #define CMGetHostname(p,rc) ((p)->ft->getHostname((p),(rc))) @@ -581,7 +627,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMSetNameSpace - (CMPIObjectPath* op,char* ns) + (CMPIObjectPath* op,const char* ns) { return ((op)->ft->setNameSpace((op),(ns))); } #else #define CMSetNameSpace(p,n) ((p)->ft->setNameSpace((p),(n))) @@ -594,7 +640,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The namespace component. */ inline static CMPIString* CMGetNameSpace - (CMPIObjectPath* op, CMPIStatus* rc) + (const CMPIObjectPath* op, CMPIStatus* rc) { return ((op)->ft->getNameSpace((op),(rc))); } #else #define CMGetNameSpace(p,rc) ((p)->ft->getNameSpace((p),(rc))) @@ -607,7 +653,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMSetClassName - (CMPIObjectPath* op, char* cn) + (CMPIObjectPath* op, const char* cn) { return ((op)->ft->setClassName((op),(cn))); } #else #define CMSetClassName(p,n) ((p)->ft->setClassName((p),(n))) @@ -620,7 +666,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The classname component. */ inline static CMPIString* CMGetClassName - (CMPIObjectPath* op,CMPIStatus* rc) + (const CMPIObjectPath* op,CMPIStatus* rc) { return ((op)->ft->getClassName((op),(rc))); } #else #define CMGetClassName(p,rc) ((p)->ft->getClassName((p),(rc))) @@ -635,9 +681,9 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMAddKey - (CMPIObjectPath* op, char* name, - void* value, CMPIType type) - { return ((op)->ft->addKey((op),(name),(CMPIValue*)(value),(type))); } + (CMPIObjectPath* op, const char* name, + const CMPIValue * value, const CMPIType type) + { return ((op)->ft->addKey((op),(name),(value),(type))); } #else #define CMAddKey(p,n,v,t) \ ((p)->ft->addKey((p),(n),(CMPIValue*)(v),(t))) @@ -651,7 +697,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Entry value. */ inline static CMPIData CMGetKey - (CMPIObjectPath* op, char* name, CMPIStatus* rc) + (const CMPIObjectPath* op, const char* name, CMPIStatus* rc) { return ((op)->ft->getKey((op),(name),(rc))); } #else #define CMGetKey(p,n,rc) ((p)->ft->getKey((p),(n),(rc))) @@ -666,7 +712,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Data value. */ inline static CMPIData CMGetKeyAt - (CMPIObjectPath* op,unsigned int index, CMPIString** name, + (const CMPIObjectPath* op,unsigned int index, CMPIString** name, CMPIStatus* rc) { return ((op)->ft->getKeyAt((op),(index),(name),(rc))); } #else @@ -681,7 +727,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Number of properties. */ inline static unsigned int CMGetKeyCount - (CMPIObjectPath* op, CMPIStatus* rc) + (const CMPIObjectPath* op, CMPIStatus* rc) { return ((op)->ft->getKeyCount((op),(rc))); } #else #define CMGetKeyCount(p,rc) ((p)->ft->getKeyCount((p),(rc))) @@ -694,7 +740,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMSetNameSpaceFromObjectPath - (CMPIObjectPath* op, CMPIObjectPath* src) + (CMPIObjectPath* op, const CMPIObjectPath* src) { return ((op)->ft->setNameSpaceFromObjectPath((op),(src))); } #else #define CMSetNameSpaceFromObjectPath(p,s) \ @@ -709,7 +755,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc */ inline static CMPIStatus CMSetHostAndNameSpaceFromObjectPath (CMPIObjectPath* op, - CMPIObjectPath* src) + const CMPIObjectPath* src) { return ((op)->ft->setHostAndNameSpaceFromObjectPath((op),(src))); } #else #define CMSetHostAndNameSpaceFromObjectPath(p,s) \ @@ -724,8 +770,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIString* CMObjectPathToString - (CMPIObjectPath* op, CMPIStatus* rc) - { return ((op)->ft->toString(op),(rc))); } + (const CMPIObjectPath* op, CMPIStatus* rc) + { return ((op)->ft->toString((op),(rc))); } #else #define CMObjectPathToString(p,rc) \ ((p)->ft->toString((p),(rc))) @@ -742,7 +788,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Number of elements. */ inline static CMPICount CMGetArrayCount - (CMPIArray* ar, CMPIStatus* rc) + (const CMPIArray* ar, CMPIStatus* rc) { return ((ar)->ft->getSize((ar),(rc))); } #else #define CMGetArrayCount(a,rc) ((a)->ft->getSize((a),(rc))) @@ -755,7 +801,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Number of elements. */ inline static CMPIType CMGetArrayType - (CMPIArray* ar, CMPIStatus* rc) + (const CMPIArray* ar, CMPIStatus* rc) { return ((ar)->ft->getSimpleType((ar),(rc))); } #else #define CMGetArrayType(a,rc) ((a)->ft->getSimpleType((a),(rc))) @@ -769,7 +815,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Element value. */ inline static CMPIData CMGetArrayElementAt - (CMPIArray* ar, CMPICount index, CMPIStatus* rc) + (const CMPIArray* ar, CMPICount index, CMPIStatus* rc) { return ((ar)->ft->getElementAt((ar),(index),(rc))); } #else #define CMGetArrayElementAt(a,n,rc) \ @@ -785,7 +831,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMSetArrayElementAt - (CMPIArray* ar, CMPICount index, CMPIValue* value, CMPIType type) + (CMPIArray* ar, CMPICount index, const CMPIValue* value, CMPIType type) { return ((ar)->ft->setElementAt((ar),(index),(value),(type))); } #else #define CMSetArrayElementAt(a,n,v,t) \ @@ -794,7 +840,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc - // CMPIARgs macros + // CMPIArgs macros #ifdef CMPI_INLINE @@ -822,7 +868,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Argument value. */ inline static CMPIData CMGetArg - (CMPIArgs* as, char* name, CMPIStatus* rc) + (const CMPIArgs* as, const char* name, CMPIStatus* rc) { return ((as)->ft->getArg((as),(name),(rc))); } #else #define CMGetArg(a,n,rc) ((a)->ft->getArg((a),(n),(rc))) @@ -837,7 +883,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Argument value. */ inline static CMPIData CMGetArgAt - (CMPIArgs* as, unsigned int index, CMPIString** name, + (const CMPIArgs* as, unsigned int index, CMPIString** name, CMPIStatus* rc) { return ((as)->ft->getArgAt((as),(index),(name),(rc))); } #else @@ -851,7 +897,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Number of properties. */ inline static unsigned int CMGetArgCount - (CMPIArgs* as, CMPIStatus* rc) + (const CMPIArgs* as, CMPIStatus* rc) { return ((as)->ft->getArgCount((as),(rc))); } #else #define CMGetArgCount(a,rc) ((a)->ft->getArgCount((a),(rc))) @@ -869,7 +915,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Pointer to char* representation. */ inline static char* CMGetCharsPtr - (CMPIString* st, CMPIStatus* rc) + (const CMPIString* st, CMPIStatus* rc) { return ((st)->ft->getCharPtr((st),(rc))); } #else #define CMGetCharsPtr(st,rc) ((st)->ft->getCharPtr((st),(rc))) @@ -887,7 +933,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return DateTime as UTC string. */ inline static CMPIString* CMGetStringFormat - (CMPIDateTime* dt, CMPIStatus* rc) + (const CMPIDateTime* dt, CMPIStatus* rc) { return ((dt)->ft->getStringFormat((dt),(rc))); } #else #define CMGetStringFormat(d,rc) ((d)->ft->getStringFormat((d),(rc))) @@ -901,7 +947,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return DateTime in binary. */ inline static CMPIUint64 CMGetBinaryFormat - (CMPIDateTime* dt, CMPIStatus* rc) + (const CMPIDateTime* dt, CMPIStatus* rc) { return ((dt)->ft->getBinaryFormat((dt),(rc))); } #else #define CMGetBinaryFormat(d,rc) ((d)->ft->getBinaryFormat((d),(rc))) @@ -914,7 +960,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return True if interval value. */ inline static CMPIBoolean CMIsInterval - (CMPIDateTime* dt, CMPIStatus* rc) + (const CMPIDateTime* dt, CMPIStatus* rc) { return ((dt)->ft->isInterval((dt),(rc))); } #else #define CMIsInterval(d,rc) ((d)->ft->isInterval((d),(rc))) @@ -931,7 +977,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Element value. */ inline static CMPIData CMGetNext - (CMPIEnumeration* en, CMPIStatus* rc) + (const CMPIEnumeration* en, CMPIStatus* rc) { return ((en)->ft->getNext((en),(rc))); } #else #define CMGetNext(n,rc) ((n)->ft->getNext((n),(rc))) @@ -944,7 +990,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return True or false. */ inline static CMPIBoolean CMHasNext - (CMPIEnumeration* en, CMPIStatus* rc) + (const CMPIEnumeration* en, CMPIStatus* rc) { return ((en)->ft->hasNext((en),(rc))); } #else #define CMHasNext(n,rc) ((n)->ft->hasNext((n),(rc))) @@ -957,7 +1003,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The Array. */ inline static CMPIArray* CMToArray - (CMPIEnumeration* en, CMPIStatus* rc) + (const CMPIEnumeration* en, CMPIStatus* rc) { return ((en)->ft->toArray((en),(rc))); } #else #define CMToArray(n,rc) ((n)->ft->toArray((n),(rc))) @@ -975,8 +1021,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMReturnData - (CMPIResult* rslt, void* value, CMPIType type) - { return ((rslt)->ft->returnData((rslt),(CMPIValue*)(value),(type))); } + (const CMPIResult* rslt, const CMPIValue* value, const CMPIType type) + { return ((rslt)->ft->returnData((rslt),(value),(type))); } #else #define CMReturnData(r,v,t) \ ((r)->ft->returnData((r),(CMPIValue*)(v),(t))) @@ -989,7 +1035,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMReturnInstance - (CMPIResult* rslt,CMPIInstance* inst) + (const CMPIResult* rslt,const CMPIInstance* inst) { return ((rslt)->ft->returnInstance((rslt),(inst))); } #else #define CMReturnInstance(r,i) ((r)->ft->returnInstance((r),(i))) @@ -1002,7 +1048,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMReturnObjectPath - (CMPIResult* rslt, CMPIObjectPath* ref) + (const CMPIResult* rslt, const CMPIObjectPath* ref) { return ((rslt)->ft->returnObjectPath((rslt),(ref))); } #else #define CMReturnObjectPath(r,o) ((r)->ft->returnObjectPath((r),(o))) @@ -1014,7 +1060,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMReturnDone - (CMPIResult* rslt) + (const CMPIResult* rslt) { return ((rslt)->ft->returnDone((rslt))); } #else #define CMReturnDone(r) ((r)->ft->returnDone((r))) @@ -1033,7 +1079,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Entry value. */ inline static CMPIData CMGetContextEntry - (CMPIContext* ctx, char* name, CMPIStatus* rc) + (const CMPIContext* ctx, const char* name, CMPIStatus* rc) { return ((ctx)->ft->getEntry((ctx),(name),(rc))); } #else #define CMGetContextEntry(c,n,rc) \ @@ -1049,7 +1095,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Entry value. */ inline static CMPIData CMGetContextEntryAt - (CMPIContext* ctx, unsigned int index, CMPIString** name, + (const CMPIContext* ctx, unsigned int index, CMPIString** name, CMPIStatus* rc) { return ((ctx)->ft->getEntryAt((ctx),(index),(name),(rc))); } #else @@ -1064,7 +1110,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Number of entries. */ inline static unsigned int CMGetContextEntryCount - (CMPIContext* ctx, CMPIStatus* rc) + (const CMPIContext* ctx, CMPIStatus* rc) { return ((ctx)->ft->getEntryCount((ctx),(rc))); } #else #define CMGetContextEntryCount(c,rc) \ @@ -1080,8 +1126,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMAddContextEntry - (CMPIContext* ctx, char* name, void* value, CMPIType type) - { return ((ctx)->ft->addEntry((ctx),(name),(CMPIValue*)(value),(type))); } + (const CMPIContext* ctx, const char* name, const CMPIValue* value, const CMPIType type) + { return ((ctx)->ft->addEntry((ctx),(name),(value),(type))); } #else #define CMAddContextEntry(c,n,v,t) \ ((c)->ft->addEntry((c),(n),(CMPIValue*)(v),(t))) @@ -1100,7 +1146,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The select expression. */ inline static CMPIString* CMGetSelExpString - (CMPISelectExp* se, CMPIStatus* rc) + (const CMPISelectExp* se, CMPIStatus* rc) { return ((se)->ft->getString((se),(rc))); } #else #define CMGetSelExpString(s,rc) ((s)->ft->getString((s),(rc))) @@ -1114,7 +1160,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return True or false incicator. */ inline static CMPIBoolean CMEvaluateSelExp - (CMPISelectExp* se, CMPIInstance* inst, CMPIStatus* rc) + (const CMPISelectExp* se, const CMPIInstance* inst, CMPIStatus* rc) { return ((se)->ft->evaluate((se),(inst),(rc))); } #else #define CMEvaluateSelExp(s,i,r) ((s)->ft->evaluate((s),(i),(r))) @@ -1130,8 +1176,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return True or false incicator. */ inline static CMPIBoolean CMEvaluateSelExpUsingAccessor - (CMPISelectExp* se, CMPIAccessor* accessor, void *parm, CMPIStatus* rc) - { return ((se)->ft->evaluateUsingAccessor((se),(inst),(rc))); } + (const CMPISelectExp* se, CMPIAccessor* accessor, void *parm, CMPIStatus* rc) + { return ((se)->ft->evaluateUsingAccessor((se),(accessor),(parm),(rc))); } #else #define CMEvaluateSelExpUsingAccessor(s,i,p,r) \ ((s)->ft->evaluateUsingAccessor((s),(i),(p),(r))) @@ -1145,7 +1191,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The disjunction. */ inline static CMPISelectCond* CMGetDoc - (CMPISelectExp* se, CMPIStatus* rc) + (const CMPISelectExp* se, CMPIStatus* rc) { return ((se)->ft->getDOC((se),(rc))); } #else #define CMGetDoc(s,rc) ((s)->ft->getDOC((s),(rc))) @@ -1158,7 +1204,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The conjunction. */ inline static CMPISelectCond* CMGetCod - (CMPISelectExp* se, CMPIStatus* rc) + (const CMPISelectExp* se, CMPIStatus* rc) { return ((se)->ft->getCOD((se),(rc))); } #else #define CMGetCod(s,rc) ((s)->ft->getCOD((s),(rc))) @@ -1179,7 +1225,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Number of SubCond elements. */ inline static CMPICount CMGetSubCondCountAndType - (CMPISelectCond* sc, int* type, CMPIStatus* rc) + (const CMPISelectCond* sc, int* type, CMPIStatus* rc) { return ((sc)->ft->getCountAndType((sc),(type),(rc))); } #else #define CMGetSubCondCountAndType(c,t,rc) \ @@ -1194,7 +1240,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The indexed SubCond element. */ inline static CMPISubCond* CMGetSubCondAt - (CMPISelectCond* sc, unsigned int index, CMPIStatus* rc) + (const CMPISelectCond* sc, unsigned int index, CMPIStatus* rc) { return ((sc)->ft->getSubCondAt((sc),(index),(rc))); } #else #define CMGetSubCondAt(c,p,rc) ((c)->ft->getSubCondAt((c),(p),(rc))) @@ -1213,7 +1259,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Number of Predicate elements. */ inline static CMPICount CMGetPredicateCount - (CMPISubCond* sc, CMPIStatus* rc) + (const CMPISubCond* sc, CMPIStatus* rc) { return ((sc)->ft->getCount((sc),(rc))); } #else #define CMGetPredicateCount(s,rc) ((s)->ft->getCount((s),(rc))) @@ -1227,7 +1273,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The indexed Predicate element. */ inline static CMPIPredicate* CMGetPredicateAt - (CMPISubCond* sc, unsigned int index, CMPIStatus* rc) + (const CMPISubCond* sc, unsigned int index, CMPIStatus* rc) { return ((sc)->ft->getPredicateAt((sc),(index),(rc))); } #else #define CMGetPredicateAt(s,p,rc) \ @@ -1242,7 +1288,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The named Predicate element. */ inline static CMPIPredicate* CMGetPredicate - (CMPISubCond* sc, char* name, CMPIStatus* rc) + (const CMPISubCond* sc, const char* name, CMPIStatus* rc) { return ((sc)->ft->getPredicate((sc),(name),(rc))); } #else #define CMGetPredicate(s,n,rc) ((s)->ft->getPredicate((s),(n),(rc))) @@ -1263,7 +1309,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CMGetPredicateData - (CMPIPredicate* pr, CMPIType* type, + (const CMPIPredicate* pr, CMPIType* type, CMPIPredOp* op, CMPIString** lhs, CMPIString** rhs) { return ((pr)->ft->getData((pr),(type),(op),(lhs),(rhs))); } #else @@ -1271,6 +1317,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc ((p)->ft->getData((p),(t),(o),(n),(v))) #endif +#if defined(CMPI_VER_87) && !defined(CMPI_VER_100) #ifdef CMPI_INLINE /** Evaluate the predicate using a specific value. @param pr Predicate this pointer. @@ -1288,6 +1335,29 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc #define CMEvaluatePredicate(p,v,t,rc) \ ((p)->ft->evaluate((p),(CMPIValue*)(v),(t),(rc))) #endif +#endif + +#if defined(CMPI_VER_100) +#ifdef CMPI_INLINE + /** Evaluate the predicate using a specific value. +IBMKR + @param pr Predicate this pointer. + @param type Property type. + @param value Address of value structure. + @param type Value type. + @param rc Output: Service return status (suppressed when NULL). + @return Evaluation result. + */ + inline static int CMEvaluatePredicateUsingAccessor + (const CMPIPredicate* pr, CMPIAccessor *accessor, void* parm, + CMPIStatus* rc) + { return ((pr)->ft->evaluateUsingAccessor((pr),(accessor), (parm), (rc))); } +#else + #define CMEvaluatePredicateUsingAccessor(p,a,parm,rc) \ + ((p)->ft->evaluateUsingAccessor((p),(a),(parm),(rc))) +#endif + +#endif // CMPI_VER_100 @@ -1299,7 +1369,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc /** 32 bits describing CMPI features supported by this CIMOM. See CMPI_MB_Class_x and CMPI_MB_Supports_xxx flags. */ - inline static unsigned long CBGetClassification(CMPIBroker* mb) + inline static unsigned long CBGetClassification(const CMPIBroker* mb) { return ((mb)->bft->brokerClassification); } #else #define CBGetClassification(b) ((b)->bft->brokerClassification) @@ -1308,7 +1378,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc #ifdef CMPI_INLINE /** CIMOM version as defined by CIMOM */ - inline static int CBBrokerVersion(CMPIBroker* mb) + inline static int CBBrokerVersion(const CMPIBroker* mb) { return ((mb)->bft->brokerVersion); } #else #define CBBrokerVersion(b) ((b)->bft->brokerVersion) @@ -1317,7 +1387,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc #ifdef CMPI_INLINE /** CIMOM name */ - inline static char* CBbrokerName(CMPIBroker* mb) + inline static char* CBBrokerName(CMPIBroker* mb) { return ((mb)->bft->brokerName); } #else #define CBBrokerName(b) ((b)->bft->brokerName) @@ -1334,7 +1404,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return New Context object to be used by thread to be attached. */ inline static CMPIContext* CBPrepareAttachThread - (CMPIBroker* mb, CMPIContext* ctx) + (const CMPIBroker* mb, const CMPIContext* ctx) { return ((mb)->bft->prepareAttachThread((mb),(ctx))); } #else #define CBPrepareAttachThread(b,c) \ @@ -1349,7 +1419,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CBAttachThread - (CMPIBroker* mb, CMPIContext* ctx) + (const CMPIBroker* mb, const CMPIContext* ctx) { return ((mb)->bft->attachThread((mb),(ctx))); } #else #define CBAttachThread(b,c) ((b)->bft->attachThread((b),(c))) @@ -1364,7 +1434,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CBDetachThread - (CMPIBroker* mb, CMPIContext* ctx) + (const CMPIBroker* mb, const CMPIContext* ctx) { return ((mb)->bft->detachThread((mb),(ctx))); } #else #define CBDetachThread(b,c) ((b)->bft->detachThread((b),(c))) @@ -1382,8 +1452,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CBDeliverIndication - (CMPIBroker* mb, CMPIContext* ctx, - char* ns, CMPIInstance* ind) + (const CMPIBroker* mb, const CMPIContext* ctx, + const char* ns, const CMPIInstance* ind) { return ((mb)->bft->deliverIndication((mb),(ctx),(ns),(ind))); } #else #define CBDeliverIndication(b,c,n,i) \ @@ -1399,8 +1469,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Enumeration of ObjectPathes. */ inline static CMPIEnumeration* CBEnumInstanceNames - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, CMPIStatus* rc) { return ((mb)->bft->enumInstanceNames((mb),(ctx),(op),(rc))); } #else #define CBEnumInstanceNames(b,c,p,rc) \ @@ -1421,8 +1491,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Enumeration of Instances. */ inline static CMPIEnumeration* CBEnumInstances - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char** properties, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char** properties, CMPIStatus* rc) { return ((mb)->bft->enumInstances((mb),(ctx),(op),(properties),(rc))); } #else #define CBEnumInstances(b,c,p,pr,rc) \ @@ -1442,8 +1512,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The Instance. */ inline static CMPIInstance* CBGetInstance - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char** properties, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char** properties, CMPIStatus* rc) { return ((mb)->bft->getInstance((mb),(ctx),(op),(properties),(rc))); } #else #define CBGetInstance(b,c,p,pr,rc) \ @@ -1460,8 +1530,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return The assigned instance reference. */ inline static CMPIObjectPath* CBCreateInstance - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, CMPIInstance* inst, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const CMPIInstance* inst, CMPIStatus* rc) { return ((mb)->bft->createInstance((mb),(ctx),(op),(inst),(rc))); } #else #define CBCreateInstance(b,c,p,i,rc) \ @@ -1469,6 +1539,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc #endif #if defined(CMPI_VER_90) + #ifdef CMPI_INLINE /** Replace an existing Instance from <inst> using <op> as reference. @param mb Broker this pointer. @@ -1478,12 +1549,23 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @param properties Specifies which properties to set. All properties will be ste if NULL. @return Service return status. */ + #if defined(CMPI_VER_100) + inline static CMPIStatus CBModifyInstance + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const CMPIInstance* inst, const char** properties) + { return ((mb)->bft->modifyInstance((mb),(ctx),(op),(inst),(properties))); } + #else // CMPI_VER_100 inline static CMPIStatus CBSetInstance - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, CMPIInstance* inst, char** properties) - { return ((mb)->bft->setInstance((mb),(ctx),(op),(inst)(properties))); } + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const CMPIInstance* inst, const char** properties) + { return ((mb)->bft->setInstance((mb),(ctx),(op),(inst),(properties))); } + #endif // CMPI_VER_!00 + #else // CMPI_INLINE + #if defined(CMPI_VER_100) + #define CBModifyInstance(b,c,p,i,pr) ((b)->bft->modifyInstance((b),(c),(p),(i),(pr))) #else #define CBSetInstance(b,c,p,i,pr) ((b)->bft->setInstance((b),(c),(p),(i),(pr))) + #endif //CMPI_VER_100 #endif #else #ifdef CMPI_INLINE @@ -1511,8 +1593,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CBDeleteInstance - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op) { return ((mb)->bft->deleteInstance((mb),(ctx),(op))); } #else #define CBDeleteInstance(b,c,p) ((b)->bft->deleteInstance((b),(c),(p))) @@ -1530,8 +1612,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Resulting eumeration of Instances. */ inline static CMPIEnumeration* CBExecQuery - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char* query, char* lang, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char* query, const char* lang, CMPIStatus* rc) { return ((mb)->bft->execQuery((mb),(ctx),(op),(query),(lang),(rc))); } #else #define CBExecQuery(b,c,p,l,q,rc) \ @@ -1571,9 +1653,9 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Enumeration of Instances. */ inline static CMPIEnumeration* CBAssociators - (CMPIBroker* mb,CMPIContext* ctx, - CMPIObjectPath* op, char* assocClass, char* resultClass, - char* role, char* resultRole, char** properties, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char* assocClass, const char* resultClass, + const char* role, const char* resultRole, const char** properties, CMPIStatus* rc) { return ((mb)->bft->associators((mb),(ctx),(op),(assocClass),(resultClass), (role),(resultRole),(properties),(rc))); } #else @@ -1610,9 +1692,9 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Enumeration of ObjectPaths. */ inline static CMPIEnumeration* CBAssociatorNames - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char* assocClass, char* resultClass, - char* role, char* resultRole, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char* assocClass, const char* resultClass, + const char* role, const char* resultRole, CMPIStatus* rc) { return ((mb)->bft->associatorNames((mb),(ctx),(op), (assocClass),(resultClass),(role),(resultRole),(rc))); } #else @@ -1643,9 +1725,9 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Enumeration of ObjectPaths. */ inline static CMPIEnumeration* CBReferences - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char* resultClass ,char* role , - char** properties, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char* resultClass ,const char* role , + const char** properties, CMPIStatus* rc) { return ((mb)->bft->references((mb),(ctx),(op), (resultClass),(role),(properties),(rc))); } #else @@ -1673,8 +1755,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Enumeration of ObjectPaths. */ inline static CMPIEnumeration* CBReferenceNames - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char* resultClass ,char* role, + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char* resultClass ,const char* role, CMPIStatus* rc) { return ((mb)->bft->referenceNames((mb),(ctx),(op),(resultClass),(role),(rc))); } #else @@ -1696,9 +1778,9 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Method return value. */ inline static CMPIData CBInvokeMethod - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op,char* method, - CMPIArgs* in, CMPIArgs* out, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char* method, + const CMPIArgs* in, CMPIArgs* out, CMPIStatus* rc) { return ((mb)->bft->invokeMethod((mb),(ctx),(op),(method),(in),(out),(rc))); } #else #define CBInvokeMethod(b,c,p,m,ai,ao,rc) \ @@ -1716,9 +1798,9 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Service return status. */ inline static CMPIStatus CBSetProperty - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char* name , void* value, - CMPIType type) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char* name , + const CMPIValue *value, CMPIType type) { return ((mb)->bft->setProperty((mb),(ctx),(op),(name), (CMPIValue*)(value),(type))); } #else @@ -1736,8 +1818,8 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc @return Property value. */ inline static CMPIData CBGetProperty - (CMPIBroker* mb, CMPIContext* ctx, - CMPIObjectPath* op, char* name, CMPIStatus* rc) + (const CMPIBroker* mb, const CMPIContext* ctx, + const CMPIObjectPath* op, const char* name, CMPIStatus* rc) { return (mb)->bft->getProperty((mb),(ctx),(op),(name),(rc)); } #else #define CBGetProperty(b,c,p,n,rc) \ @@ -1748,7 +1830,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc #ifndef DOC_ONLY // MI factory stubs - #define CMNoHook if (brkr) + #define CMNoHook #endif /* @@ -1778,6 +1860,13 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc CMPIInstanceMI* CMInstanceMIStub(chars pfx, chars pn, CMPIBroker *broker, statement hook); #else + + #if defined(CMPI_VER_100) + #define CMInstanceMIStubChange(pfx) pfx##ModifyInstance + #else + #define CMInstanceMIStubChange(pfx) pfx##SetInstance + #endif + #define CMInstanceMIStub(pfx,pn,broker,hook) \ static CMPIInstanceMIFT instMIFT__={ \ CMPICurrentVersion, \ @@ -1788,12 +1877,12 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc pfx##EnumInstances, \ pfx##GetInstance, \ pfx##CreateInstance, \ - pfx##SetInstance, \ + CMInstanceMIStubChange(pfx), \ pfx##DeleteInstance, \ pfx##ExecQuery, \ }; \ CMPI_EXTERN_C \ - CMPIInstanceMI* pn##_Create_InstanceMI(CMPIBroker* brkr,CMPIContext *ctx) { \ + CMPIInstanceMI* pn##_Create_InstanceMI(const CMPIBroker* brkr,const CMPIContext *ctx, CMPIStatus *rc) { \ static CMPIInstanceMI mi={ \ NULL, \ &instMIFT__, \ @@ -1802,6 +1891,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc hook; \ return &mi; \ } + #endif #ifdef DOC_ONLY @@ -1840,7 +1930,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc pfx##ReferenceNames, \ }; \ CMPI_EXTERN_C \ - CMPIAssociationMI* pn##_Create_AssociationMI(CMPIBroker* brkr,CMPIContext *ctx) { \ + CMPIAssociationMI* pn##_Create_AssociationMI(const CMPIBroker* brkr,const CMPIContext *ctx, CMPIStatus *rc) { \ static CMPIAssociationMI mi={ \ NULL, \ &assocMIFT__, \ @@ -1881,7 +1971,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc pfx##InvokeMethod, \ }; \ CMPI_EXTERN_C \ - CMPIMethodMI* pn##_Create_MethodMI(CMPIBroker* brkr,CMPIContext *ctx) { \ + CMPIMethodMI* pn##_Create_MethodMI(const CMPIBroker* brkr, const CMPIContext *ctx, CMPIStatus *rc) { \ static CMPIMethodMI mi={ \ NULL, \ &methMIFT__, \ @@ -1925,7 +2015,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc pfx##GetProperty, \ }; \ CMPI_EXTERN_C \ - CMPIPropertyMI* pn##_Create_PropertyMI(CMPIBroker* brkr,CMPIContext *ctx) { \ + CMPIPropertyMI* pn##_Create_PropertyMI(const CMPIBroker* brkr,const CMPIContext *ctx, CMPIStatus *rc) { \ static CMPIPropertyMI mi={ \ NULL, \ &propMIFT__, \ @@ -1979,7 +2069,7 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc CMIndicationMIStubExtensions(pfx) \ }; \ CMPI_EXTERN_C \ - CMPIIndicationMI* pn##_Create_IndicationMI(CMPIBroker* brkr,CMPIContext *ctx) { \ + CMPIIndicationMI* pn##_Create_IndicationMI(const CMPIBroker* brkr,const CMPIContext *ctx,CMPIStatus *rc) { \ static CMPIIndicationMI mi={ \ NULL, \ &indMIFT__, \ @@ -2009,13 +2099,13 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc CMPIInstanceMI* CMInstanceMIFactory(chars cn, chars pn); #else #define CMInstanceMIFactory(cn,pn) \ - extern "C" \ - CMPIInstanceMI* pn##_Create_InstanceMI(CMPIBroker* broker, CMPIContext *ctxp) { \ + CMPI_EXTERN_C \ + CMPIInstanceMI* pn##_Create_InstanceMI(const CMPIBroker* broker, const CMPIContext *ctxp, CMPIStatus *rc) { \ static CMPIInstanceMIFT instMIFT={ \ CMPICurrentVersion, \ CMPICurrentVersion, \ "instance" #pn, \ - (CMPIStatus(*)(CMPIInstanceMI*,CMPIContext*))CmpiBaseMI::driveBaseCleanup, \ + (CMPIStatus(*)(CMPIInstanceMI*,const CMPIContext*,CMPIBoolean*))CmpiBaseMI::driveBaseCleanup, \ CmpiInstanceMI::driveEnumInstanceNames, \ CmpiInstanceMI::driveEnumInstances, \ CmpiInstanceMI::driveGetInstance, \ @@ -2026,11 +2116,11 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc }; \ static CMPIInstanceMI mi; \ fprintf(stderr,"--- _Create_InstanceMI() broker: %p\n",broker); \ - CmpiContext ctx(ctxp); \ + CmpiContext ctx((CMPIContext*)ctxp); \ mi.ft=&instMIFT; \ CmpiBaseMI *provider=base##pn.getBaseMI(); \ if (provider == 0) {\ - provider = new cn(CmpiBroker(broker),ctx); \ + provider = new cn(CmpiBroker((CMPIBroker*)broker),ctx); \ provider->setProviderBase(&base##pn); \ provider->initialize(ctx); \ base##pn.setBaseMI(provider); \ @@ -2057,13 +2147,13 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc CMPIAssociationMI* CMAssociationMIFactory(chars cn, chars pn); #else #define CMAssociationMIFactory(cn,pn) \ - extern "C" \ - CMPIAssociationMI* pn##_Create_AssociationMI(CMPIBroker* broker, CMPIContext *ctxp) { \ + CMPI_EXTERN_C \ + CMPIAssociationMI* pn##_Create_AssociationMI(const CMPIBroker* broker, const CMPIContext *ctxp, CMPIStatus *rc) { \ static CMPIAssociationMIFT assocMIFT={ \ CMPICurrentVersion, \ CMPICurrentVersion, \ "association" #pn, \ - (CMPIStatus(*)(CMPIAssociationMI*,CMPIContext*))CmpiBaseMI::driveBaseCleanup, \ + (CMPIStatus(*)(CMPIAssociationMI*,const CMPIContext*,CMPIBoolean*))CmpiBaseMI::driveBaseCleanup, \ CmpiAssociationMI::driveAssociators, \ CmpiAssociationMI::driveAssociatorNames, \ CmpiAssociationMI::driveReferences, \ @@ -2071,11 +2161,11 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc }; \ static CMPIAssociationMI mi; \ fprintf(stderr,"--- _Create_AssociationMI() broker: %p\n",broker); \ - CmpiContext ctx(ctxp); \ + CmpiContext ctx((CMPIContext*)ctxp); \ mi.ft=&assocMIFT; \ CmpiBaseMI *provider=base##pn.getBaseMI(); \ if (provider == 0) {\ - provider = new cn(CmpiBroker(broker),ctx); \ + provider = new cn(CmpiBroker((CMPIBroker*)broker),ctx); \ provider->setProviderBase(&base##pn); \ provider->initialize(ctx); \ base##pn.setBaseMI(provider); \ @@ -2102,22 +2192,22 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc CMPIMethodMI* CMMethodMIFactory(chars cn, chars pn); #else #define CMMethodMIFactory(cn,pn) \ - extern "C" \ - CMPIMethodMI* pn##_Create_MethodMI(CMPIBroker* broker, CMPIContext *ctxp) { \ + CMPI_EXTERN_C \ + CMPIMethodMI* pn##_Create_MethodMI(const CMPIBroker* broker, const CMPIContext *ctxp, CMPIStatus *rc) { \ static CMPIMethodMIFT methMIFT={ \ CMPICurrentVersion, \ CMPICurrentVersion, \ "method" #pn, \ - (CMPIStatus(*)(CMPIMethodMI*,CMPIContext*))CmpiBaseMI::driveBaseCleanup, \ + (CMPIStatus(*)(CMPIMethodMI*,const CMPIContext*, CMPIBoolean*))CmpiBaseMI::driveBaseCleanup, \ CmpiMethodMI::driveInvokeMethod, \ }; \ static CMPIMethodMI mi; \ fprintf(stderr,"--- _Create_MethodMI() broker: %p\n",broker); \ - CmpiContext ctx(ctxp); \ + CmpiContext ctx((CMPIContext*)ctxp); \ mi.ft=&methMIFT; \ CmpiBaseMI *provider=base##pn.getBaseMI(); \ if (provider == 0) {\ - provider = new cn(CmpiBroker(broker),ctx); \ + provider = new cn(CmpiBroker((CMPIBroker*)broker),ctx); \ provider->setProviderBase(&base##pn); \ provider->initialize(ctx); \ base##pn.setBaseMI(provider); \ @@ -2143,23 +2233,23 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc CMPIPropertyMI* CMPropertyMIFactory(chars cn, chars pn): #else #define CMPropertyMIFactory(cn,pn) \ - extern "C" \ - CMPIMethodMI* pn##_Create_PropertyMI(CMPIBroker* broker, CMPIContext *ctxp) { \ + CMPI_EXTERN_C \ + CMPIMethodMI* pn##_Create_PropertyMI(const CMPIBroker* broker, const CMPIContext *ctxp, CMPIStatus *rc) { \ static CMPIPropertyMIFT propMIFT={ \ CMPICurrentVersion, \ CMPICurrentVersion, \ "property" #pn, \ - (CMPIStatus(*)(CMPIPropertyMI*,CMPIContext*))CmpiBaseMI::driveBaseCleanup, \ + (CMPIStatus(*)(CMPIPropertyMI*,const CMPIContext*,CMPIBoolean*))CmpiBaseMI::driveBaseCleanup, \ CmpiPropertyMI::driveSetProperty, \ CmpiPropertyMI::driveGetProperty, \ }; \ static CMPIPropertyMI mi; \ fprintf(stderr,"--- _Create_MethodMI() broker: %p\n",broker); \ - CmpiContext ctx(ctxp); \ + CmpiContext ctx((CMPIContext*)ctxp); \ mi.ft=&propMIFT; \ CmpiBaseMI *provider=base##pn.getBaseMI(); \ if (provider == 0) {\ - provider = new cn(CmpiBroker(broker),ctx); \ + provider = new cn(CmpiBroker((CMPIBroker*)broker),ctx); \ provider->setProviderBase(&base##pn); \ provider->initialize(ctx); \ base##pn.setBaseMI(provider); \ @@ -2176,44 +2266,44 @@ inline static void CMSetStatusWithChars(CMPIBroker *mb, CMPIStatus* st, CMPIrc for an indication provider. The initialization routine <pn>Create_IndicationMI is called when this provider module is loaded by the broker. This macro is for CMPI providers written in C++ using the Cmpi* classes. - @param cn The C++ class name of this method provider - (a subclass of CmpiMethodMI). + @param cn The C++ class name of this indication provider + (a subclass of CmpiIndicationMI). This is a character string without quotes. @param pn The provider name under which this provider is registered. This is a character string without quotes. @return The function table of this association provider. */ - CMPIIndicationMI* CMIndicationMIFactor(chars cn, chars pn); + CMPIIndicationMI* CMIndicationMIFactory(chars cn, chars pn); #else #if defined(CMPI_VER_86) - #define CMIndicationMIFactoryExtensions Indication::driveEnableIndications, \ - Indication::driveDisableIndications, + #define CMIndicationMIFactoryExtensions CmpiIndicationMI::driveEnableIndications, \ + CmpiIndicationMI::driveDisableIndications, #else #define CMIndicationMIFactoryExtensions #endif #define CMIndicationMIFactory(cn,pn) \ - extern "C" \ - CMPIMethodMI* pn##_Create_IndicationMI(CMPIBroker* broker, CMPIContext *ctxp) { \ + CMPI_EXTERN_C \ + CMPIIndicationMI* pn##_Create_IndicationMI(const CMPIBroker* broker, const CMPIContext *ctxp, CMPIStatus *rc) { \ static CMPIIndicationMIFT indMIFT={ \ CMPICurrentVersion, \ CMPICurrentVersion, \ "indication" #pn, \ - (CMPIStatus(*)(CMPIPropertyMI*,CMPIContext*))CmpiBaseMI::driveBaseCleanup, \ - Indication::driveAuthorizeFilter, \ - Indication::driveMustPoll, \ - Indication::driveActivateFilter, \ - Indication::driveDeActivateFilter, \ + (CMPIStatus(*)(CMPIIndicationMI*,const CMPIContext*,CMPIBoolean*))CmpiBaseMI::driveBaseCleanup, \ + CmpiIndicationMI::driveAuthorizeFilter, \ + CmpiIndicationMI::driveMustPoll, \ + CmpiIndicationMI::driveActivateFilter, \ + CmpiIndicationMI::driveDeActivateFilter, \ CMIndicationMIFactoryExtensions \ }; \ - static CMPIPropertyMI mi; \ + static CMPIIndicationMI mi; \ fprintf(stderr,"--- _Create_IndicationMI() broker: %p\n",broker); \ - CmpiContext ctx(ctxp); \ + CmpiContext ctx((CMPIContext*)ctxp); \ mi.ft=&indMIFT; \ CmpiBaseMI *provider=base##pn.getBaseMI(); \ if (provider == 0) {\ - provider = new cn(CmpiBroker(broker),ctx); \ + provider = new cn(CmpiBroker((CMPIBroker*)broker),ctx); \ provider->setProviderBase(&base##pn); \ provider->initialize(ctx); \ base##pn.setBaseMI(provider); \ diff --git a/cmpios.h b/cmpios.h index efc991f..5b40485 100644 --- a/cmpios.h +++ b/cmpios.h @@ -38,9 +38,14 @@ struct timespec { }; #elif defined( CMPI_PLATFORM_ZOS_ZSERIES_IBM) + +#ifndef __cplusplus + #define CMPI_THREAD_CDECL +#else #define CMPI_THREAD_CDECL __cdecl - #define CMPI_THREAD_KEY_TYPE pthread_key_t +#endif + #define CMPI_THREAD_KEY_TYPE pthread_key_t #else #define CMPI_THREAD_CDECL #define CMPI_THREAD_KEY_TYPE unsigned long int diff --git a/context.c b/context.c index 69af467..9f5ca09 100644 --- a/context.c +++ b/context.c @@ -56,7 +56,7 @@ static CMPIStatus __cft_release(CMPIContext * ctx) } -static CMPIContext *__cft_clone(CMPIContext * ctx, CMPIStatus * rc) +static CMPIContext *__cft_clone(const CMPIContext * ctx, CMPIStatus * rc) { if (rc) CMSetStatus(rc, CMPI_RC_ERR_NOT_SUPPORTED); @@ -64,7 +64,7 @@ static CMPIContext *__cft_clone(CMPIContext * ctx, CMPIStatus * rc) } -static CMPIData __cft_getEntry(CMPIContext * ctx, +static CMPIData __cft_getEntry(const CMPIContext * ctx, const char *name, CMPIStatus * rc) { struct native_context *c = (struct native_context *) ctx; @@ -73,7 +73,7 @@ static CMPIData __cft_getEntry(CMPIContext * ctx, } -static CMPIData __cft_getEntryAt(CMPIContext * ctx, +static CMPIData __cft_getEntryAt(const CMPIContext * ctx, unsigned int index, CMPIString ** name, CMPIStatus * rc) { @@ -83,7 +83,7 @@ static CMPIData __cft_getEntryAt(CMPIContext * ctx, } -static unsigned int __cft_getEntryCount(CMPIContext * ctx, CMPIStatus * rc) +static unsigned int __cft_getEntryCount(const CMPIContext * ctx, CMPIStatus * rc) { struct native_context *c = (struct native_context *) ctx; @@ -93,7 +93,7 @@ static unsigned int __cft_getEntryCount(CMPIContext * ctx, CMPIStatus * rc) static CMPIStatus __cft_addEntry(CMPIContext * ctx, const char *name, - CMPIValue * value, CMPIType type) + const CMPIValue * value, CMPIType type) { struct native_context *c = (struct native_context *) ctx; @@ -156,7 +156,7 @@ void native_release_CMPIContext(CMPIContext * ctx) } } -CMPIContext *native_clone_CMPIContext(CMPIContext* ctx) +CMPIContext *native_clone_CMPIContext(const CMPIContext* ctx) { CMPIString *name; struct native_context *c = (struct native_context *) ctx; @@ -218,7 +218,7 @@ static int __addProperty ( struct native_property ** prop, const char * name, CMPIType type, CMPIValueState state, - CMPIValue * value ) + const CMPIValue * value ) { CMPIValue v; diff --git a/datetime.c b/datetime.c index b0bf0c7..b207e10 100644 --- a/datetime.c +++ b/datetime.c @@ -42,7 +42,7 @@ struct native_datetime { }; -static struct native_datetime *__new_datetime(int state, char* cimDt, CMPIStatus *rc); +static struct native_datetime *__new_datetime(int state, const char* cimDt, CMPIStatus *rc); /****************************************************************************/ @@ -82,7 +82,7 @@ static CMPIStatus __dtft_release(CMPIDateTime * dt) \return a copy of the given CMPIDateTime object that won't be freed from memory before calling __dtft_release(). */ -static CMPIDateTime *__dtft_clone(CMPIDateTime * dt, CMPIStatus * rc) +static CMPIDateTime *__dtft_clone(const CMPIDateTime * dt, CMPIStatus * rc) { struct native_datetime *ndt = (struct native_datetime *) dt; struct native_datetime *new = __new_datetime(MEM_NOT_TRACKED, ndt->cimDt,rc); @@ -194,7 +194,7 @@ static void bin2chars(CMPIUint64 msecs, CMPIBoolean interval, CMPIStatus * rc, c \return an amount of microseconds. */ -static CMPIUint64 __dtft_getBinaryFormat(CMPIDateTime * dt, CMPIStatus * rc) +static CMPIUint64 __dtft_getBinaryFormat(const CMPIDateTime * dt, CMPIStatus * rc) { struct native_datetime *ndt = (struct native_datetime *) dt; @@ -221,7 +221,7 @@ void dateTime2chars(CMPIDateTime * dt, CMPIStatus * rc, char *str_time) if (rc) CMSetStatus(rc, CMPI_RC_OK); } -static CMPIString *__dtft_getStringFormat(CMPIDateTime * dt, CMPIStatus * rc) +static CMPIString *__dtft_getStringFormat(const CMPIDateTime * dt, CMPIStatus * rc) { struct native_datetime *ndt = (struct native_datetime *) dt; @@ -229,7 +229,7 @@ static CMPIString *__dtft_getStringFormat(CMPIDateTime * dt, CMPIStatus * rc) return native_new_CMPIString(ndt->cimDt, rc); } -static CMPIBoolean __dtft_isInterval(CMPIDateTime * dt, CMPIStatus * rc) +static CMPIBoolean __dtft_isInterval(const CMPIDateTime * dt, CMPIStatus * rc) { struct native_datetime *ndt = (struct native_datetime *) dt; @@ -252,7 +252,7 @@ static CMPIBoolean __dtft_isInterval(CMPIDateTime * dt, CMPIStatus * rc) \return a fully initialized native_datetime object pointer. */ static struct native_datetime *__new_datetime(int mm_add, - char *cimDt, + const char *cimDt, CMPIStatus * rc) { static CMPIDateTimeFT dtft = { diff --git a/enumeration.c b/enumeration.c index 4d05a06..bc9ec12 100644 --- a/enumeration.c +++ b/enumeration.c @@ -52,7 +52,7 @@ static CMPIStatus __eft_release(CMPIEnumeration * enumeration) } -static CMPIEnumeration *__eft_clone(CMPIEnumeration * enumeration, +static CMPIEnumeration *__eft_clone(const CMPIEnumeration * enumeration, CMPIStatus * rc) { CMPIStatus tmp; @@ -70,21 +70,21 @@ static CMPIEnumeration *__eft_clone(CMPIEnumeration * enumeration, } -static CMPIData __eft_getNext(CMPIEnumeration * enumeration, CMPIStatus * rc) +static CMPIData __eft_getNext(const CMPIEnumeration * enumeration, CMPIStatus * rc) { struct native_enum *e = (struct native_enum *) enumeration; return CMGetArrayElementAt(e->data, e->current++, rc); } -static CMPIBoolean __eft_hasNext(CMPIEnumeration * enumeration, CMPIStatus * rc) +static CMPIBoolean __eft_hasNext(const CMPIEnumeration * enumeration, CMPIStatus * rc) { struct native_enum *e = (struct native_enum *) enumeration; return (e->current < CMGetArrayCount(e->data, rc)); } -static CMPIArray *__eft_toArray(CMPIEnumeration * enumeration, CMPIStatus * rc) +static CMPIArray *__eft_toArray(const CMPIEnumeration * enumeration, CMPIStatus * rc) { struct native_enum *e = (struct native_enum *) enumeration; rc->rc = CMPI_RC_OK; diff --git a/fileRepository.c b/fileRepository.c index d6db3b5..b4be3b9 100644 --- a/fileRepository.c +++ b/fileRepository.c @@ -20,7 +20,7 @@ */ -#define CMPI_VERSION 90 +//#define CMPI_VERSION 90 #include #include @@ -35,6 +35,8 @@ #include "fileRepository.h" #include "mlog.h" +#include "control.h" + #define BASE "repository" diff --git a/indCIMXMLHandler.c b/indCIMXMLHandler.c index 3b9fede..fb2d43f 100644 --- a/indCIMXMLHandler.c +++ b/indCIMXMLHandler.c @@ -31,19 +31,9 @@ #include "trace.h" #include "fileRepository.h" #include "providerMgr.h" +#include "internalProvider.h" #include "cimXmlRequest.h" -extern CMPIStatus InternalProviderEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * ref); -extern CMPIStatus InternalProviderEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * ref, char **properties); -extern CMPIInstance *internalProviderGetInstance(CMPIObjectPath * cop, CMPIStatus *rc); -extern CMPIStatus InternalProviderCreateInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * cop, CMPIInstance * ci); -extern CMPIStatus InternalProviderGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * cop, char **properties); -extern CMPIStatus InternalProviderDeleteInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * cop); extern void closeProviderContext(BinRequestContext* ctx); extern int exportIndication(char *url, char *payload, char **resp, char **msg); extern void dumpSegments(void*); @@ -53,9 +43,9 @@ extern UtilStringBuffer *newStringBuffer(int); extern void setStatus(CMPIStatus *st, CMPIrc rc, char *msg); -static CMPIBroker *_broker; +static const CMPIBroker *_broker; -static int interOpNameSpace(CMPIObjectPath *cop, CMPIStatus *st) +static int interOpNameSpace(const CMPIObjectPath *cop, CMPIStatus *st) { char *ns=(char*)CMGetNameSpace(cop,NULL)->hdl; if (strcasecmp(ns,"root/interop") && strcasecmp(ns,"root/pg_interop")) { @@ -69,7 +59,7 @@ static int interOpNameSpace(CMPIObjectPath *cop, CMPIStatus *st) * Instance MI Cleanup * ------------------------------------------------------------------ */ -CMPIStatus IndCIMXMLHandlerCleanup(CMPIInstanceMI * mi, CMPIContext * ctx) +CMPIStatus IndCIMXMLHandlerCleanup(CMPIInstanceMI * mi, const CMPIContext * ctx, CMPIBoolean terminating) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "IndCIMXMLHandlerCleanup"); @@ -82,9 +72,9 @@ CMPIStatus IndCIMXMLHandlerCleanup(CMPIInstanceMI * mi, CMPIContext * ctx) CMPIStatus IndCIMXMLHandlerEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref) { CMPIStatus st; _SFCB_ENTER(TRACE_INDPROVIDER, "IndCIMXMLHandlerEnumInstanceNames"); @@ -93,10 +83,10 @@ CMPIStatus IndCIMXMLHandlerEnumInstanceNames(CMPIInstanceMI * mi, } CMPIStatus IndCIMXMLHandlerEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, - char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIStatus st; _SFCB_ENTER(TRACE_INDPROVIDER, "IndCIMXMLHandlerEnumInstances"); @@ -106,10 +96,10 @@ CMPIStatus IndCIMXMLHandlerEnumInstances(CMPIInstanceMI * mi, CMPIStatus IndCIMXMLHandlerGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const char **properties) { CMPIStatus st; _SFCB_ENTER(TRACE_INDPROVIDER, "IndCIMXMLHandlerGetInstance"); @@ -118,10 +108,10 @@ CMPIStatus IndCIMXMLHandlerGetInstance(CMPIInstanceMI * mi, } CMPIStatus IndCIMXMLHandlerCreateInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const CMPIInstance * ci) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIArgs *in,*out=NULL; @@ -156,11 +146,12 @@ CMPIStatus IndCIMXMLHandlerCreateInstance(CMPIInstanceMI * mi, _SFCB_RETURN(st); } -CMPIStatus IndCIMXMLHandlerSetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci, char **properties) +CMPIStatus IndCIMXMLHandlerModifyInstance(CMPIInstanceMI * mi, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const CMPIInstance * ci, + const char **properties) { CMPIStatus st = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "IndCIMXMLHandlerSetInstance"); @@ -168,9 +159,9 @@ CMPIStatus IndCIMXMLHandlerSetInstance(CMPIInstanceMI * mi, } CMPIStatus IndCIMXMLHandlerDeleteInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIArgs *in,*out=NULL; @@ -198,10 +189,10 @@ CMPIStatus IndCIMXMLHandlerDeleteInstance(CMPIInstanceMI * mi, } CMPIStatus IndCIMXMLHandlerExecQuery(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char *lang, char *query) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const char *lang, const char *query) { CMPIStatus st = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "IndCIMXMLHandlerExecQuery"); @@ -213,7 +204,9 @@ CMPIStatus IndCIMXMLHandlerExecQuery(CMPIInstanceMI * mi, /* Method Provider Interface */ /* ---------------------------------------------------------------------------*/ -CMPIStatus IndCIMXMLHandlerMethodCleanup(CMPIMethodMI * mi, CMPIContext * ctx) +CMPIStatus IndCIMXMLHandlerMethodCleanup(CMPIMethodMI * mi, + const CMPIContext * ctx, + CMPIBoolean terminating) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "IndCIMXMLHandlerMethodCleanup"); @@ -221,11 +214,11 @@ CMPIStatus IndCIMXMLHandlerMethodCleanup(CMPIMethodMI * mi, CMPIContext * ctx) } CMPIStatus IndCIMXMLHandlerInvokeMethod(CMPIMethodMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, - const char *methodName, - CMPIArgs * in, CMPIArgs * out) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char *methodName, + const CMPIArgs * in, CMPIArgs * out) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIInstance *hci,*ind; diff --git a/instance.c b/instance.c index 0ccdc95..2d4a691 100644 --- a/instance.c +++ b/instance.c @@ -29,6 +29,7 @@ #include "native.h" #include "objectImpl.h" +#include "providerMgr.h" #include "config.h" #ifdef SFCB_IX86 @@ -81,13 +82,13 @@ static void __release_list(char **list) } -static char **__duplicate_list(char **list) +static char **__duplicate_list(const char **list) { char **result = NULL; if (list) { size_t size = 1; - char **tmp = list; + char **tmp = (char**)list; while (*tmp++) ++size; result = calloc(1,size*sizeof(char *)); @@ -136,15 +137,15 @@ static CMPIStatus __ift_release(CMPIInstance * instance) } -static CMPIInstance *__ift_clone(CMPIInstance * instance, CMPIStatus * rc) +static CMPIInstance *__ift_clone(const CMPIInstance * instance, CMPIStatus * rc) { struct native_instance *i = (struct native_instance*) instance; struct native_instance *new = (struct native_instance*) malloc(sizeof(struct native_instance)); new->mem_state=MEM_NOT_TRACKED; - new->property_list = __duplicate_list(i->property_list); - new->key_list = __duplicate_list(i->key_list); + new->property_list = __duplicate_list((const char**)i->property_list); + new->key_list = __duplicate_list((const char**)i->key_list); ((CMPIInstance*)new)->hdl = ClInstanceRebuild((ClInstance *) instance->hdl, NULL); @@ -154,7 +155,7 @@ static CMPIInstance *__ift_clone(CMPIInstance * instance, CMPIStatus * rc) } -CMPIData __ift_getPropertyAt(CMPIInstance * ci, CMPICount i, CMPIString ** name, +CMPIData __ift_getPropertyAt(const CMPIInstance * ci, CMPICount i, CMPIString ** name, CMPIStatus * rc) { ClInstance *inst = (ClInstance *) ci->hdl; @@ -188,7 +189,7 @@ CMPIData __ift_getPropertyAt(CMPIInstance * ci, CMPICount i, CMPIString ** name, return rv; } -CMPIData __ift_getProperty(CMPIInstance * ci, const char *id, CMPIStatus * rc) +CMPIData __ift_getProperty(const CMPIInstance * ci, const char *id, CMPIStatus * rc) { ClInstance *inst = (ClInstance *) ci->hdl; ClSection *prps = &inst->properties; @@ -204,7 +205,7 @@ CMPIData __ift_getProperty(CMPIInstance * ci, const char *id, CMPIStatus * rc) return rv; } -static CMPICount __ift_getPropertyCount(CMPIInstance * ci, CMPIStatus * rc) +static CMPICount __ift_getPropertyCount(const CMPIInstance * ci, CMPIStatus * rc) { ClInstance *inst = (ClInstance *) ci->hdl; if (rc) @@ -215,7 +216,7 @@ static CMPICount __ift_getPropertyCount(CMPIInstance * ci, CMPIStatus * rc) static CMPIStatus __ift_setProperty(CMPIInstance * instance, const char *name, - CMPIValue * value, CMPIType type) + const CMPIValue * value, CMPIType type) { struct native_instance *i = (struct native_instance *) instance; ClInstance *inst = (ClInstance *) instance->hdl; @@ -262,7 +263,7 @@ static CMPIStatus __ift_setProperty(CMPIInstance * instance, } -static CMPIObjectPath *__ift_getObjectPath(CMPIInstance * instance, +static CMPIObjectPath *__ift_getObjectPath(const CMPIInstance * instance, CMPIStatus * rc) { static UtilHashTable *klt = NULL; @@ -295,14 +296,14 @@ static CMPIObjectPath *__ift_getObjectPath(CMPIInstance * instance, if (f == 0) { CMPIArray *kl; CMPIData d; - CMPIContext *ctx; unsigned int e, m; if (klt == NULL) klt = UtilFactory->newHashTable(61, UtilHashTable_charKey | UtilHashTable_ignoreKeyCase); if ((kl = klt->ft->get(klt, cn)) == NULL) { - kl = Broker->eft->getKeyList(Broker, ctx, cop, NULL); + CMPIConstClass * cc = getConstClass(ns,cn); + kl = cc->ft->getKeyList(cc); klt->ft->put(klt, strdup(cn), kl); } m = kl->ft->getSize(kl, NULL); @@ -321,7 +322,8 @@ static CMPIObjectPath *__ift_getObjectPath(CMPIInstance * instance, static CMPIStatus __ift_setPropertyFilter(CMPIInstance * instance, - char **propertyList, char **keys) + const char **propertyList, + const char **keys) { struct native_instance *i = (struct native_instance *) instance; //printf("__ift_setPropertyFilter %p %p\n",propertyList,keys); @@ -414,13 +416,13 @@ static CMPIInstanceFT ift = { CMPIInstanceFT *CMPI_Instance_FT = &ift; -unsigned long getInstanceSerializedSize(CMPIInstance * ci) +unsigned long getInstanceSerializedSize(const CMPIInstance * ci) { ClInstance *cli = (ClInstance *) ci->hdl; return ClSizeInstance(cli) + sizeof(struct native_instance); } -void getSerializedInstance(CMPIInstance * ci, void *area) +void getSerializedInstance(const CMPIInstance * ci, void *area) { memcpy(area, ci, sizeof(struct native_instance)); ClInstanceRebuild((ClInstance *) ci->hdl, @@ -448,7 +450,7 @@ MsgSegment setInstanceMsgSegment(CMPIInstance * ci) return s; } -CMPIInstance *internal_new_CMPIInstance(int mode, CMPIObjectPath * cop, +CMPIInstance *internal_new_CMPIInstance(int mode, const CMPIObjectPath * cop, CMPIStatus * rc) { static CMPIInstance i = { @@ -503,7 +505,7 @@ CMPIInstance *internal_new_CMPIInstance(int mode, CMPIObjectPath * cop, return (CMPIInstance*)tInst; } -CMPIInstance *TrackedCMPIInstance(CMPIObjectPath * cop, CMPIStatus * rc) +CMPIInstance *TrackedCMPIInstance(const CMPIObjectPath * cop, CMPIStatus * rc) { return internal_new_CMPIInstance(MEM_TRACKED, cop, rc); } diff --git a/internalProvider.c b/internalProvider.c index daa3031..a0b7100 100644 --- a/internalProvider.c +++ b/internalProvider.c @@ -33,6 +33,7 @@ #include "utilft.h" #include "trace.h" #include "constClass.h" +#include "internalProvider.h" #define LOCALCLASSNAME "InternalProvider" @@ -43,8 +44,6 @@ extern ProviderInfo *interOpProvInfoPtr; extern ProviderInfo *forceNoProvInfoPtr; extern CMPIInstance *relocateSerializedInstance(void *area); -extern void getSerializedInstance(CMPIInstance * ci, void *area); -extern unsigned long getInstanceSerializedSize(CMPIInstance * ci); extern char *value2Chars(CMPIType type, CMPIValue * value); extern CMPIString *__oft_toString(CMPIObjectPath * cop, CMPIStatus * rc); extern CMPIObjectPath *getObjectPath(char *path, char **msg); @@ -52,7 +51,7 @@ extern CMPIBroker *Broker; extern UtilStringBuffer *newStringBuffer(int s); extern void setStatus(CMPIStatus *st, CMPIrc rc, const char *msg); -static CMPIBroker *_broker; +static const CMPIBroker *_broker; typedef struct keyIds { CMPIString *key; @@ -84,7 +83,7 @@ static int cpy2lower(char *in, char *out) */ static char copKey[8192]; -static UtilStringBuffer *normalize_ObjectPath(CMPIObjectPath * cop) +static UtilStringBuffer *normalize_ObjectPath(const CMPIObjectPath * cop) { int c = CMGetKeyCount(cop, NULL); int i; @@ -169,7 +168,7 @@ normalize_ObjectPath(cop); _SFCB_RETURN(copKey); } */ -char *normalizeObjectPath(CMPIObjectPath *cop) +char *normalizeObjectPath(const CMPIObjectPath *cop) { UtilStringBuffer *sb=normalize_ObjectPath(cop); strcpy(copKey,sb->ft->getCharPtr(sb)); @@ -177,7 +176,7 @@ char *normalizeObjectPath(CMPIObjectPath *cop) return copKey; } -char *internalProviderNormalizeObjectPath(CMPIObjectPath *cop) +char *internalProviderNormalizeObjectPath(const CMPIObjectPath *cop) { char *n; UtilStringBuffer *sb=normalize_ObjectPath(cop); @@ -228,7 +227,9 @@ static BlobIndex *_getIndex(char *ns, char *cn) * Instance MI Cleanup * ------------------------------------------------------------------ */ -CMPIStatus InternalProviderCleanup(CMPIInstanceMI * mi, CMPIContext * ctx) +CMPIStatus InternalProviderCleanup(CMPIInstanceMI * mi, + const CMPIContext * ctx, + CMPIBoolean terminate) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INTERNALPROVIDER, "InternalProviderCleanup"); @@ -242,9 +243,9 @@ CMPIStatus InternalProviderCleanup(CMPIInstanceMI * mi, CMPIContext * ctx) CMPIStatus InternalProviderEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIStatus sti = { CMPI_RC_OK, NULL }; @@ -305,9 +306,12 @@ CMPIStatus InternalProviderEnumInstanceNames(CMPIInstanceMI * mi, UtilStringBuffer *instanceToString(CMPIInstance * ci, char **props); -static CMPIStatus enumInstances(CMPIInstanceMI * mi, CMPIContext * ctx, void *rslt, - CMPIObjectPath * ref, char **properties, - void(*retFnc)(void*,CMPIInstance*), int ignprov) +static CMPIStatus enumInstances(CMPIInstanceMI * mi, + const CMPIContext * ctx, void *rslt, + const CMPIObjectPath * ref, + const char **properties, + void(*retFnc)(void*,const CMPIInstance*), + int ignprov) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIStatus sti = { CMPI_RC_OK, NULL }; @@ -359,45 +363,49 @@ static CMPIStatus enumInstances(CMPIInstanceMI * mi, CMPIContext * ctx, void *rs _SFCB_RETURN(st); } -static void return2result(void *ret, CMPIInstance *ci) +static void return2result(void *ret, const CMPIInstance *ci) { CMPIResult * rslt=(CMPIResult*)ret; CMReturnInstance(rslt, ci); } -static void return2lst(void *ret, CMPIInstance *ci) +static void return2lst(void *ret, const CMPIInstance *ci) { UtilList *ul=(UtilList*)ret; ul->ft->append(ul,ci); } -CMPIStatus InternalProviderEnumInstances(CMPIInstanceMI * mi, CMPIContext * ctx, CMPIResult * rslt, - CMPIObjectPath * ref, char **properties) +CMPIStatus InternalProviderEnumInstances(CMPIInstanceMI * mi, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIStatus st; _SFCB_ENTER(TRACE_INTERNALPROVIDER, "InternalProviderEnumInstances"); - st=enumInstances(mi,ctx,rslt,ref,properties,return2result,0); + st=enumInstances(mi,ctx,(void*)rslt,ref,properties,return2result,0); _SFCB_RETURN(st); } -UtilList *SafeInternalProviderAddEnumInstances(UtilList *ul, CMPIInstanceMI * mi, CMPIContext * ctx, CMPIObjectPath * ref, - char **properties, CMPIStatus *rc, int ignprov) +UtilList *SafeInternalProviderAddEnumInstances(UtilList *ul, CMPIInstanceMI * mi, + const CMPIContext * ctx, const CMPIObjectPath * ref, + const char **properties, CMPIStatus *rc, int ignprov) { CMPIStatus st; _SFCB_ENTER(TRACE_INTERNALPROVIDER, "SafeInternalProviderAddEnumInstances"); - st=enumInstances(mi,ctx,ul,ref,properties,return2lst,ignprov); + st=enumInstances(mi,ctx,(void*)ul,ref,properties,return2lst,ignprov); if (rc) *rc=st; _SFCB_RETURN(ul); } -UtilList *SafeInternalProviderEnumInstances(CMPIInstanceMI * mi, CMPIContext * ctx, CMPIObjectPath * ref, - char **properties, CMPIStatus *rc, int ignprov) +UtilList *SafeInternalProviderEnumInstances(CMPIInstanceMI * mi, const CMPIContext * ctx, const CMPIObjectPath * ref, + const char **properties, CMPIStatus *rc, int ignprov) { UtilList *ul= UtilFactory->newList(); return SafeInternalProviderAddEnumInstances(ul, mi, ctx, ref,properties,rc,ignprov); } -CMPIInstance *internalProviderGetInstance(CMPIObjectPath * cop, CMPIStatus *rc) +CMPIInstance *internalProviderGetInstance(const CMPIObjectPath * cop, CMPIStatus *rc) { int len; CMPIString *cn = CMGetClassName(cop, NULL); @@ -431,10 +439,10 @@ CMPIInstance *internalProviderGetInstance(CMPIObjectPath * cop, CMPIStatus *rc) } CMPIStatus InternalProviderGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIInstance *ci; @@ -451,10 +459,10 @@ CMPIStatus InternalProviderGetInstance(CMPIInstanceMI * mi, } CMPIStatus InternalProviderCreateInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const CMPIInstance * ci) { CMPIStatus st = { CMPI_RC_OK, NULL }; unsigned long len; @@ -492,11 +500,12 @@ CMPIStatus InternalProviderCreateInstance(CMPIInstanceMI * mi, _SFCB_RETURN(st); } -CMPIStatus InternalProviderSetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci, char **properties) +CMPIStatus InternalProviderModifyInstance(CMPIInstanceMI * mi, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const CMPIInstance * ci, + const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; unsigned long len; @@ -528,9 +537,9 @@ CMPIStatus InternalProviderSetInstance(CMPIInstanceMI * mi, } CMPIStatus InternalProviderDeleteInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIString *cn = CMGetClassName(cop, NULL); @@ -557,10 +566,10 @@ CMPIStatus InternalProviderDeleteInstance(CMPIInstanceMI * mi, } CMPIStatus InternalProviderExecQuery(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char *lang, char *query) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const char *lang, const char *query) { CMPIStatus st = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; return st; @@ -604,13 +613,13 @@ static int objectPathEquals(UtilStringBuffer *pn, CMPIObjectPath *op, UtilString return rc; } -CMPIStatus getRefs(CMPIContext * ctx, CMPIResult * rslt, - CMPIObjectPath * cop, +CMPIStatus getRefs(const CMPIContext * ctx, const CMPIResult * rslt, + const CMPIObjectPath * cop, const char *assocClass, const char *resultClass, const char *role, const char *resultRole, - char **propertyList, + const char **propertyList, int associatorFunction) { UtilList *refs= UtilFactory->newList(); @@ -632,7 +641,7 @@ CMPIStatus getRefs(CMPIContext * ctx, CMPIResult * rslt, else { CMPIObjectPath *op=CMNewObjectPath(Broker,ns,"$ClassProvider$",&st); - CMAddContextEntry(ctx, CMPIInvocationFlags,&newFlgs,CMPI_uint32); + CMAddContextEntry((CMPIContext*)ctx, CMPIInvocationFlags,&newFlgs,CMPI_uint32); CMPIEnumeration *enm=CBEnumInstanceNames(Broker,ctx,op,&st); if (enm) while (CMHasNext(enm,NULL)) { @@ -764,7 +773,7 @@ CMPIStatus getRefs(CMPIContext * ctx, CMPIResult * rslt, } } -CMPIStatus InternalProviderAssociationCleanup(CMPIAssociationMI * mi, CMPIContext * ctx) +CMPIStatus InternalProviderAssociationCleanup(CMPIAssociationMI * mi, const CMPIContext * ctx, CMPIBoolean terminate) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INTERNALPROVIDER, "InternalProviderAssociationCleanup"); @@ -775,14 +784,14 @@ CMPIStatus InternalProviderAssociationCleanup(CMPIAssociationMI * mi, CMPIContex CMPIStatus InternalProviderAssociators(CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, const char *assocClass, const char *resultClass, const char *role, const char *resultRole, - char **propertyList) + const char **propertyList) { CMPIStatus st; _SFCB_ENTER(TRACE_INTERNALPROVIDER, "InternalProviderAssociators"); @@ -792,9 +801,9 @@ CMPIStatus InternalProviderAssociators(CMPIAssociationMI * mi, } CMPIStatus InternalProviderAssociatorNames(CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, const char *assocClass, const char *resultClass, const char *role, @@ -808,11 +817,11 @@ CMPIStatus InternalProviderAssociatorNames(CMPIAssociationMI * mi, } CMPIStatus InternalProviderReferences(CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, const char *assocClass, - const char *role, char **propertyList) + const char *role, const char **propertyList) { CMPIStatus st; _SFCB_ENTER(TRACE_INTERNALPROVIDER, "InternalProviderReferences"); @@ -823,9 +832,9 @@ CMPIStatus InternalProviderReferences(CMPIAssociationMI * mi, CMPIStatus InternalProviderReferenceNames(CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, const char *assocClass, const char *role) { @@ -843,18 +852,19 @@ CMPIStatus InternalProviderReferenceNames(CMPIAssociationMI * mi, * ------------------------------------------------------------------ */ CMPIStatus InternalProviderMethodCleanup(CMPIMethodMI * mi, - CMPIContext * ctx) + const CMPIContext * ctx, + CMPIBoolean terminate) { CMPIStatus st = { CMPI_RC_OK, NULL }; return st; } CMPIStatus InternalProviderInvokeMethod(CMPIMethodMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, - const char *methodName, - CMPIArgs * in, CMPIArgs * out) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char *methodName, + const CMPIArgs * in, CMPIArgs * out) { _SFCB_ENTER(TRACE_INTERNALPROVIDER, "InternalProviderInvokeMethod"); CMReturnWithChars(_broker, CMPI_RC_ERR_FAILED, "DefaultProvider does not support invokeMethod operations"); diff --git a/interopProvider.c b/interopProvider.c index 46c7090..2223412 100644 --- a/interopProvider.c +++ b/interopProvider.c @@ -32,6 +32,7 @@ #include "trace.h" #include "queryOperation.h" #include "providerMgr.h" +#include "internalProvider.h" #include #define LOCALCLASSNAME "InteropProvider" @@ -39,28 +40,12 @@ /* ------------------------------------------------------------------------- */ extern CMPIInstance *relocateSerializedInstance(void *area); -extern void getSerializedInstance(CMPIInstance * ci, void *area); -extern unsigned long getInstanceSerializedSize(CMPIInstance * ci); extern char *value2Chars(CMPIType type, CMPIValue * value); extern CMPIString *__oft_toString(CMPIObjectPath * cop, CMPIStatus * rc); extern CMPIObjectPath *getObjectPath(char *path, char **msg); extern CMPIString *native_new_CMPIString(const char *ptr, CMPIStatus * rc); -extern UtilList *SafeInternalProviderEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIObjectPath * ref, char **properties, CMPIStatus *st,int ignprov); -extern char *internalProviderNormalizeObjectPath(CMPIObjectPath *cop); - -extern CMPIStatus InternalProviderEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * ref); -extern CMPIStatus InternalProviderEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * ref, char **properties); -extern CMPIInstance *internalProviderGetInstance(CMPIObjectPath * cop, CMPIStatus *rc); -extern CMPIStatus InternalProviderCreateInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * cop, CMPIInstance * ci); -extern CMPIStatus InternalProviderGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * cop, char **properties); -extern CMPIStatus InternalProviderDeleteInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, CMPIResult * rslt, CMPIObjectPath * cop); + extern void closeProviderContext(BinRequestContext* ctx); extern void setStatus(CMPIStatus *st, CMPIrc rc, char *msg); extern int testNameSpace(char *ns, CMPIStatus *st); @@ -69,7 +54,7 @@ extern QLStatement *parseQuery(int mode, char *query, char *lang, char *sns, int /* ------------------------------------------------------------------------- */ -static CMPIBroker *_broker; +static const CMPIBroker *_broker; static int firstTime=1; @@ -102,7 +87,7 @@ static UtilHashTable *subscriptionHt = NULL; /* ------------------------------------------------------------------------- */ static int interOpNameSpace( - CMPIObjectPath * cop, + const CMPIObjectPath * cop, CMPIStatus * st) { char *ns = (char*)CMGetNameSpace(cop,NULL)->hdl; @@ -116,8 +101,8 @@ static int interOpNameSpace( /* ------------------------------------------------------------------------- */ static Subscription *addSubscription( - CMPIInstance * ci, - char * key, + const CMPIInstance * ci, + const char * key, Filter * fi, Handler * ha) { @@ -185,12 +170,12 @@ static void removeSubscription( /* ------------------------------------------------------------------------- */ static Filter *addFilter( - CMPIInstance * ci, - char * key, + const CMPIInstance * ci, + const char * key, QLStatement * qs, - char * query, - char * lang, - char * sns) + const char * query, + const char * lang, + const char * sns) { Filter * fi; @@ -294,7 +279,7 @@ static Handler *getHandler( { Handler *ha; - _SFCB_ENTER(TRACE_INDPROVIDER, "getFilter"); + _SFCB_ENTER(TRACE_INDPROVIDER, "getHandler"); if (handlerHt==NULL) return NULL; ha=handlerHt->ft->get(handlerHt,key); @@ -337,19 +322,19 @@ static int isa(const char *sns, const char *child, const char *parent) /* ------------------------------------------------------------------------- */ CMPIStatus deactivateFilter( - CMPIContext * ctx, - char * ns, - char * cn, + const CMPIContext * ctx, + const char * ns, + const char * cn, Filter * fi) { CMPIObjectPath *path; CMPIStatus st={CMPI_RC_OK,NULL}; IndicationReq sreq = BINREQ(OPS_DeactivateFilter, 6); - BinResponseHdr *resp=NULL; + BinResponseHdr **resp=NULL; BinRequestContext binCtx; OperationHdr req = {OPS_IndicationLookup, 2}; char *principal=ctx->ft->getEntry(ctx,CMPIPrincipal,NULL).value.string->hdl;; - int irc; + int irc,err,cnt; _SFCB_ENTER(TRACE_INDPROVIDER, "deactivateFilter"); printf( "deactivateFilter\n"); @@ -378,10 +363,9 @@ CMPIStatus deactivateFilter( irc = getProviderContext(&binCtx, &req); if (irc == MSG_X_PROVIDER) { - _SFCB_TRACE(1, ("--- Invoking Provider")); - resp = invokeProvider(&binCtx); - resp->rc--; - setStatus(&st,resp->rc,(char*)resp->object[0].data); + _SFCB_TRACE(1, ("--- Invoking Providers")); + resp = invokeProviders(&binCtx,&err,&cnt); + setStatus(&st,resp[err]->rc,NULL); _SFCB_TRACE(1, ("--- Invoking Provider rc: %d",st.rc)); } @@ -412,7 +396,7 @@ CMPIStatus deactivateFilter( extern CMPISelectExp *TempCMPISelectExp(QLStatement *qs); CMPIStatus activateSubscription( - char * principal, + const char * principal, const char * cn, const char * type, Filter * fi, @@ -421,10 +405,10 @@ CMPIStatus activateSubscription( CMPIObjectPath *path; CMPIStatus st={CMPI_RC_OK,NULL},rc; IndicationReq sreq = BINREQ(OPS_ActivateFilter, 6); - BinResponseHdr *resp=NULL; + BinResponseHdr **resp=NULL; BinRequestContext binCtx; OperationHdr req = {OPS_IndicationLookup, 2}; - int irc=0; + int irc=0,err,cnt; _SFCB_ENTER(TRACE_INDPROVIDER, "activateSubscription"); @@ -454,10 +438,9 @@ CMPIStatus activateSubscription( irc = getProviderContext(&binCtx, &req); if (irc == MSG_X_PROVIDER) { - _SFCB_TRACE(1, ("--- Invoking Provider")); - resp = invokeProvider(&binCtx); - resp->rc--; - setStatus(&st,resp->rc,(char*)resp->object[0].data); + _SFCB_TRACE(1, ("--- Invoking Providers")); + resp = invokeProviders(&binCtx,&err,&cnt); + setStatus(&st,resp[err]->rc,NULL); } else { @@ -496,39 +479,42 @@ CMPIStatus activateLifeCycleSubscription( CMPIString *lhs,*rhs; CMPIPredOp predOp; int irc; - + int has_isa=0; + _SFCB_ENTER(TRACE_INDPROVIDER, "activateLifeCycleSubscription"); if (cond) { + _SFCB_TRACE(1,("condition %p",cond)); cm=CMGetSubCondCountAndType(cond,NULL,NULL); + _SFCB_TRACE(1,("subcondition count %d",cm)); if (cm) for (c=0; chdl)); _SFCB_TRACE(1,("rhs: %s\n",(char*)rhs->hdl)); st=activateSubscription(principal,(char*)rhs->hdl,cn,fi,&irc); if (irc==MSG_X_INVALID_CLASS) st.rc=CMPI_RC_ERR_INVALID_CLASS; - if (st.rc!=CMPI_RC_OK) break; - } + break; + } } } if (st.rc!=CMPI_RC_OK) break; } - if (ok==0) { - setStatus(&st,CMPI_RC_ERR_INVALID_QUERY,"'ISA' predicate missing in sub-condition"); - break; - } } - else setStatus(&st,CMPI_RC_ERR_INVALID_QUERY,"No sub-condition found"); + if (has_isa==0) { + /* no ISA predicate -- need to process indication class provider */ + st=activateSubscription(principal,cn,cn,fi,&irc); + if (irc==MSG_X_INVALID_CLASS) + st.rc=CMPI_RC_ERR_INVALID_CLASS; + } } else setStatus(&st,CMPI_RC_ERR_INVALID_QUERY,"CMGetDoc failed"); @@ -539,7 +525,7 @@ CMPIStatus activateLifeCycleSubscription( /* ------------------------------------------------------------------------- */ int fowardSubscription( - CMPIContext * ctx, + const CMPIContext * ctx, Filter * fi, CMPIStatus * st) { @@ -606,10 +592,10 @@ int fowardSubscription( extern UtilStringBuffer *instanceToString(CMPIInstance * ci, char **props); static CMPIStatus processSubscription( - CMPIBroker *broker, - CMPIContext *ctx, - CMPIInstance *ci, - CMPIObjectPath *cop) + const CMPIBroker *broker, + const CMPIContext *ctx, + const CMPIInstance *ci, + const CMPIObjectPath *cop) { CMPIStatus st = { CMPI_RC_OK, NULL }; Handler *ha; @@ -656,7 +642,7 @@ static CMPIStatus processSubscription( _SFCB_TRACE(1,("--- setting subscription duration")); dt = CMNewDateTime(_broker,NULL); - CMSetProperty(ci, "SubscriptionDuration", &dt, CMPI_dateTime); + CMSetProperty((CMPIInstance *)ci, "SubscriptionDuration", &dt, CMPI_dateTime); su=addSubscription(ci, skey, fi, ha); fowardSubscription(ctx, fi, &st); @@ -671,8 +657,8 @@ static CMPIStatus processSubscription( * ------------------------------------------------------------------ */ void initInterOp( - CMPIBroker *broker, - CMPIContext *ctx) + const CMPIBroker *broker, + const CMPIContext *ctx) { CMPIObjectPath *op; UtilList *ul; @@ -711,7 +697,6 @@ void initInterOp( cop=CMGetObjectPath(ci,&st); addHandler(ci,cop); } - _SFCB_TRACE(1,("--- checking for cim_indicationsubscription")); op=CMNewObjectPath(broker,"root/interop","cim_indicationsubscription",&st); ul=SafeInternalProviderEnumInstances(NULL,ctx,op,NULL,&st,0); @@ -733,7 +718,7 @@ void initInterOp( CMPIStatus InteropProviderCleanup( CMPIInstanceMI * mi, - CMPIContext * ctx) + const CMPIContext * ctx, CMPIBoolean terminate) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderCleanup"); @@ -744,9 +729,9 @@ CMPIStatus InteropProviderCleanup( CMPIStatus InteropProviderEnumInstanceNames( CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderEnumInstanceNames"); @@ -761,10 +746,10 @@ CMPIStatus InteropProviderEnumInstanceNames( CMPIStatus InteropProviderEnumInstances( CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, - char ** properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char ** properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderEnumInstances"); @@ -779,10 +764,10 @@ CMPIStatus InteropProviderEnumInstances( CMPIStatus InteropProviderGetInstance( CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char ** properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const char ** properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderGetInstance"); @@ -796,10 +781,10 @@ CMPIStatus InteropProviderGetInstance( CMPIStatus InteropProviderCreateInstance( CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const CMPIInstance * ci) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIString *cn = CMGetClassName(cop, NULL); @@ -872,13 +857,13 @@ CMPIStatus InteropProviderCreateInstance( /* ------------------------------------------------------------------------- */ -CMPIStatus InteropProviderSetInstance( +CMPIStatus InteropProviderModifyInstance( CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci, - char ** properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const CMPIInstance * ci, + const char ** properties) { CMPIStatus st = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderSetInstance"); @@ -889,9 +874,9 @@ CMPIStatus InteropProviderSetInstance( CMPIStatus InteropProviderDeleteInstance( CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIString *cn = CMGetClassName(cop, NULL); @@ -944,11 +929,11 @@ CMPIStatus InteropProviderDeleteInstance( CMPIStatus InteropProviderExecQuery( CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char * lang, - char * query) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const char * lang, + const char * query) { CMPIStatus st = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderExecQuery"); @@ -961,7 +946,7 @@ CMPIStatus InteropProviderExecQuery( CMPIStatus InteropProviderMethodCleanup( CMPIMethodMI * mi, - CMPIContext * ctx) + const CMPIContext * ctx, CMPIBoolean terminate) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderMethodCleanup"); @@ -972,11 +957,11 @@ CMPIStatus InteropProviderMethodCleanup( CMPIStatus InteropProviderInvokeMethod( CMPIMethodMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, const char * methodName, - CMPIArgs * in, + const CMPIArgs * in, CMPIArgs * out) { CMPIStatus st = { CMPI_RC_OK, NULL }; @@ -1060,7 +1045,8 @@ CMPIStatus InteropProviderInvokeMethod( CMPIStatus InteropProviderAssociationCleanup( CMPIAssociationMI * mi, - CMPIContext * ctx) + const CMPIContext * ctx, + CMPIBoolean terminate) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderAssociationCleanup"); @@ -1071,14 +1057,14 @@ CMPIStatus InteropProviderAssociationCleanup( CMPIStatus InteropProviderAssociators( CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, const char * assocClass, const char * resultClass, const char * role, const char * resultRole, - char ** propertyList) + const char ** propertyList) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderAssociators"); @@ -1089,9 +1075,9 @@ CMPIStatus InteropProviderAssociators( CMPIStatus InteropProviderAssociatorNames( CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, const char * assocClass, const char * resultClass, const char * role, @@ -1106,12 +1092,12 @@ CMPIStatus InteropProviderAssociatorNames( CMPIStatus InteropProviderReferences( CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, const char * assocClass, const char * role, - char ** propertyList) + const char ** propertyList) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderReferences"); @@ -1122,9 +1108,9 @@ CMPIStatus InteropProviderReferences( CMPIStatus InteropProviderReferenceNames( CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, const char * assocClass, const char * role) { diff --git a/interopServerProvider.c b/interopServerProvider.c index 2fb46ce..c5f6d22 100644 --- a/interopServerProvider.c +++ b/interopServerProvider.c @@ -45,7 +45,7 @@ #include "cmpimacsx.h" -static CMPIBroker *_broker; +static const CMPIBroker *_broker; static CMPIStatus invClassSt = { CMPI_RC_ERR_INVALID_CLASS, NULL }; static CMPIStatus notSuppSt = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; @@ -90,8 +90,9 @@ static char *getSfcbUuid() //------------------------------------------------------------------ -static int genNameSpaceData(char *ns, char *dn, int dbl, CMPIResult * rslt, CMPIObjectPath *op, - CMPIInstance *ci,int nsOpt) +static int genNameSpaceData(const char *ns, const char *dn, int dbl, + const CMPIResult * rslt, CMPIObjectPath *op, + CMPIInstance *ci,int nsOpt) { if (op) { if (nsOpt) CMAddKey(op,"Name",dn,CMPI_chars); @@ -107,8 +108,9 @@ static int genNameSpaceData(char *ns, char *dn, int dbl, CMPIResult * rslt, CMPI } -static void gatherNameSpacesData(char *dn, int dbl, CMPIResult * rslt, CMPIObjectPath *op, - CMPIInstance *ci, int nsOpt) +static void gatherNameSpacesData(const char *dn, int dbl, + const CMPIResult * rslt, + CMPIObjectPath *op, CMPIInstance *ci, int nsOpt) { DIR *dir, *de_test; struct dirent *de; @@ -141,8 +143,10 @@ static void gatherNameSpacesData(char *dn, int dbl, CMPIResult * rslt, CMPIObjec } -static void gatherOldNameSpacesData(char *dn, int dbl, CMPIResult * rslt, CMPIObjectPath *op, - CMPIInstance *ci) +static void gatherOldNameSpacesData(const char *dn, int dbl, + const CMPIResult * rslt, + CMPIObjectPath *op, + CMPIInstance *ci) { char *ns = (char*)CMGetNameSpace(op,NULL)->hdl; @@ -155,10 +159,10 @@ static void gatherOldNameSpacesData(char *dn, int dbl, CMPIResult * rslt, CMPIOb } static CMPIStatus NameSpaceProviderGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; char *dirn,*dn,hostName[512]; @@ -208,9 +212,10 @@ static CMPIStatus NameSpaceProviderGetInstance(CMPIInstanceMI * mi, } static CMPIStatus NameSpaceProviderEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; char *dir,*dn,hostName[512]; @@ -247,9 +252,10 @@ static CMPIStatus NameSpaceProviderEnumInstances(CMPIInstanceMI * mi, } static CMPIStatus NameSpaceProviderEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, int nsOpt) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + int nsOpt) { CMPIStatus st = { CMPI_RC_OK, NULL }; char *dir,*dn,hostName[512]; @@ -291,9 +297,9 @@ static CMPIStatus NameSpaceProviderEnumInstanceNames(CMPIInstanceMI * mi, //------------------------------------------------------------------ static CMPIStatus ObjectManagerProviderEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref) { CMPIStatus st = { CMPI_RC_OK, NULL }; char hostName[512]; @@ -316,9 +322,10 @@ static CMPIStatus ObjectManagerProviderEnumInstanceNames(CMPIInstanceMI * mi, } static CMPIStatus ObjectManagerProviderEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; char str[512]; @@ -355,9 +362,10 @@ static CMPIStatus ObjectManagerProviderEnumInstances(CMPIInstanceMI * mi, static CMPIStatus ObjectManagerProviderGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIString *name=CMGetKey(ref,"name",NULL).value.string; @@ -377,9 +385,9 @@ static CMPIStatus ObjectManagerProviderGetInstance(CMPIInstanceMI * mi, // --------------------------------------------------------------- static CMPIStatus ComMechProviderEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref) { CMPIStatus st = { CMPI_RC_OK, NULL }; char hostName[512]; @@ -402,9 +410,10 @@ static CMPIStatus ComMechProviderEnumInstanceNames(CMPIInstanceMI * mi, } static CMPIStatus ComMechProviderEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; char hostName[512]; @@ -452,9 +461,10 @@ static CMPIStatus ComMechProviderEnumInstances(CMPIInstanceMI * mi, } static CMPIStatus ComMechProviderGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIString *name=CMGetKey(ref,"name",NULL).value.string; @@ -473,7 +483,7 @@ static CMPIStatus ComMechProviderGetInstance(CMPIInstanceMI * mi, // --------------------------------------------------------------- -static CMPIStatus ServerProviderCleanup(CMPIInstanceMI * mi, CMPIContext * ctx) +static CMPIStatus ServerProviderCleanup(CMPIInstanceMI * mi, const CMPIContext * ctx, CMPIBoolean terminate) { CMPIStatus st = { CMPI_RC_OK, NULL }; @@ -481,10 +491,10 @@ static CMPIStatus ServerProviderCleanup(CMPIInstanceMI * mi, CMPIContext * ctx) } static CMPIStatus ServerProviderGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, - char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIString *cls=CMGetClassName(ref,NULL); @@ -499,9 +509,9 @@ static CMPIStatus ServerProviderGetInstance(CMPIInstanceMI * mi, } static CMPIStatus ServerProviderEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref) { CMPIString *cls=CMGetClassName(ref,NULL); @@ -518,9 +528,10 @@ static CMPIStatus ServerProviderEnumInstanceNames(CMPIInstanceMI * mi, } static CMPIStatus ServerProviderEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, char **properties) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref, + const char **properties) { CMPIString *cls=CMGetClassName(ref,NULL); @@ -535,36 +546,38 @@ static CMPIStatus ServerProviderEnumInstances(CMPIInstanceMI * mi, } static CMPIStatus ServerProviderCreateInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const CMPIInstance * ci) { return notSuppSt; } -static CMPIStatus ServerProviderSetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci, char **properties) +static CMPIStatus ServerProviderModifyInstance(CMPIInstanceMI * mi, + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const CMPIInstance * ci, + const char **properties) { return notSuppSt; } static CMPIStatus ServerProviderDeleteInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * ref) { return notSuppSt; } static CMPIStatus ServerProviderExecQuery(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char *lang, char *query) + const CMPIContext * ctx, + const CMPIResult * rslt, + const CMPIObjectPath * cop, + const char *lang, + const char *query) { return notSuppSt; } diff --git a/msgqueue.c b/msgqueue.c index 038386c..af22eb6 100644 --- a/msgqueue.c +++ b/msgqueue.c @@ -150,10 +150,10 @@ int remSem() return semctl(sfcbSem,0,IPC_RMID,0); } -MsgSegment setCharsMsgSegment(char *str) +MsgSegment setCharsMsgSegment(const char *str) { MsgSegment s; - s.data = str; + s.data = (char*)str; if (str) s.length = strlen(str) + 1; else diff --git a/msgqueue.h b/msgqueue.h index ea5cf3f..4c120b7 100644 --- a/msgqueue.h +++ b/msgqueue.h @@ -114,7 +114,7 @@ typedef struct mqgStat { char teintr,eintr,rdone; } MqgStat; -extern MsgSegment setCharsMsgSegment(char *); +extern MsgSegment setCharsMsgSegment(const char *); extern ComSockets sfcbSockets; extern ComSockets providerSockets; diff --git a/native.h b/native.h index 456c133..9a5a0d5 100644 --- a/native.h +++ b/native.h @@ -25,7 +25,7 @@ #define NATIVE_FT_VERSION 1 -#define CMPI_VERSION 90 +//#define CMPI_VERSION 90 #include #include @@ -55,7 +55,7 @@ struct native_propertyFT { //! Adds a new native_property to a list. int (*addProperty) (struct native_property **, int, - const char *, CMPIType, CMPIValueState, CMPIValue *); + const char *, CMPIType, CMPIValueState, const CMPIValue *); //! Resets the values of an existing native_property, if existant. int (*setProperty) (struct native_property *, @@ -82,13 +82,13 @@ struct native_propertyFT { struct _NativeCMPIBrokerFT { CMPIBrokerFT brokerFt; - CMPIArray *(*getKeyNames) (CMPIBroker * broker, + CMPIArray *(*getKeyNames) (const CMPIBroker * broker, CMPIContext * context, CMPIObjectPath * cop, CMPIStatus * rc); - CMPIString *(*getMessage) (CMPIBroker * mb, const char *msgId, + CMPIString *(*getMessage) (const CMPIBroker * mb, const char *msgId, const char *defMsg, CMPIStatus * rc, unsigned int count, va_list); - CMPIBoolean(*classPathIsA) (CMPIBroker * broker, CMPIObjectPath * cop, + CMPIBoolean(*classPathIsA) (const CMPIBroker * broker, CMPIObjectPath * cop, const char *type, CMPIStatus * rc); }; @@ -98,7 +98,7 @@ typedef struct _NativeCMPIBrokerFT NativeCMPIBrokerFT; /****************************************************************************/ void native_release_CMPIValue(CMPIType, CMPIValue * val); -CMPIValue native_clone_CMPIValue(CMPIType, CMPIValue * val, CMPIStatus *); +CMPIValue native_clone_CMPIValue(CMPIType, const CMPIValue * val, CMPIStatus *); CMPIString *native_new_CMPIString(const char *, CMPIStatus *); @@ -107,15 +107,15 @@ CMPIArray *internal_new_CMPIArray(int mode, CMPICount size, CMPIType type, CMPIArray *NewCMPIArray(CMPICount size, CMPIType type, CMPIStatus *); CMPIArray *TrackedCMPIArray(CMPICount size, CMPIType type, CMPIStatus *); -void native_array_increase_size(CMPIArray *, CMPICount); +void native_array_increase_size(const CMPIArray *, CMPICount); CMPIResult *native_new_CMPIResult(int, int, CMPIStatus *); CMPIArray *native_result2array(CMPIResult *); CMPIEnumeration *native_new_CMPIEnumeration(CMPIArray *, CMPIStatus *); CMPIInstance *NewCMPIInstance(CMPIObjectPath *, CMPIStatus *); -CMPIInstance *TrackedCMPIInstance(CMPIObjectPath *, CMPIStatus *); -CMPIInstance *internal_new_CMPIInstance(int mode, CMPIObjectPath *, +CMPIInstance *TrackedCMPIInstance(const CMPIObjectPath *, CMPIStatus *); +CMPIInstance *internal_new_CMPIInstance(int mode, const CMPIObjectPath *, CMPIStatus *); CMPIObjectPath *NewCMPIObjectPath(const char *, const char *, CMPIStatus *); @@ -136,13 +136,19 @@ CMPISelectExp *native_new_CMPISelectExp(const char *, CMPIContext *native_new_CMPIContext(int mem_state, void*); void native_release_CMPIContext(CMPIContext *); -CMPIContext *native_clone_CMPIContext(CMPIContext *ctx); +CMPIContext *native_clone_CMPIContext(const CMPIContext *ctx); extern CMPIBrokerExtFT *CMPI_BrokerExt_Ftab; -MsgSegment setObjectPathMsgSegment(CMPIObjectPath * op); +MsgSegment setObjectPathMsgSegment(const CMPIObjectPath * op); CMPIInstance *relocateSerializedInstance(void *area); +void getSerializedInstance(const CMPIInstance * ci, void *area); +unsigned long getInstanceSerializedSize(const CMPIInstance * ci); +void getSerializedObjectPath(const CMPIObjectPath * op, void *area); +unsigned long getObjectPathSerializedSize(const CMPIObjectPath * op); + CMPIObjectPath *relocateSerializedObjectPath(void *area); +void dateTime2chars(CMPIDateTime * dt, CMPIStatus * rc, char *str_time); /****************************************************************************/ diff --git a/objectImpl.c b/objectImpl.c index dfee3a7..18560f7 100644 --- a/objectImpl.c +++ b/objectImpl.c @@ -1635,7 +1635,7 @@ int ClClassGetMethParameterAt(ClClass * cls, ClMethod *m, int pid, CMPIParameter //----- //------------------------------------------------------- -int isInstance(CMPIInstance *ci) +int isInstance(const CMPIInstance *ci) { ClInstance *inst = (ClInstance *) ci->hdl; if (inst->hdr.type == HDR_Instance) return 1; diff --git a/objectImpl.h b/objectImpl.h index 310f1f0..08edbc2 100644 --- a/objectImpl.h +++ b/objectImpl.h @@ -223,7 +223,7 @@ extern int ClClassGetMethodAt(ClClass *cls, int id, CMPIType *data, char **name, extern int ClClassGetMethQualifierAt(ClClass *cls, ClMethod *m, int qid, CMPIData *data, char **name); extern int ClClassGetMethParameterAt(ClClass *cls, ClMethod *m, int pid, CMPIParameter *parm, char **name); extern int ClClassGetMethParamQualifierAt(ClClass * cls, ClParameter *parm, int id, CMPIData *d, char **name); -extern int isInstance(CMPIInstance *ci); +extern int isInstance(const CMPIInstance *ci); extern ClInstance *ClInstanceNew(const char *ns, const char *cn); extern unsigned long ClSizeInstance(ClInstance *inst); extern ClInstance *ClInstanceRebuild(ClInstance *inst, void *area); diff --git a/objectpath.c b/objectpath.c index e57c242..7a42ea7 100644 --- a/objectpath.c +++ b/objectpath.c @@ -72,7 +72,7 @@ static CMPIStatus __oft_release(CMPIObjectPath * cop) } -static CMPIObjectPath *__oft_clone(CMPIObjectPath * op, CMPIStatus * rc) +static CMPIObjectPath *__oft_clone(const CMPIObjectPath * op, CMPIStatus * rc) { CMPIStatus tmp; struct native_cop *ncop = __new_empty_cop(MEM_NOT_TRACKED, &tmp); @@ -90,7 +90,7 @@ static CMPIStatus __oft_setNameSpace(CMPIObjectPath * op, const char *nameSpace) CMReturn(CMPI_RC_OK); } -CMPIString *__oft_getNameSpace(CMPIObjectPath * op, CMPIStatus * rc) +CMPIString *__oft_getNameSpace(const CMPIObjectPath * op, CMPIStatus * rc) { ClObjectPath *cop = (ClObjectPath *) op->hdl; return native_new_CMPIString(ClObjectPathGetNameSpace(cop), rc); @@ -104,7 +104,7 @@ static CMPIStatus __oft_setHostName(CMPIObjectPath * op, const char *hostName) CMReturn(CMPI_RC_OK); } -CMPIString *__oft_getHostName(CMPIObjectPath * op, CMPIStatus * rc) +CMPIString *__oft_getHostName(const CMPIObjectPath * op, CMPIStatus * rc) { ClObjectPath *cop = (ClObjectPath *) op->hdl; return native_new_CMPIString(ClObjectPathGetHostName(cop), rc); @@ -119,26 +119,26 @@ static CMPIStatus __oft_setClassName(CMPIObjectPath * op, const char *className) CMReturn(CMPI_RC_OK); } -CMPIString *__oft_getClassName(CMPIObjectPath * op, CMPIStatus * rc) +CMPIString *__oft_getClassName(const CMPIObjectPath * op, CMPIStatus * rc) { ClObjectPath *cop = (ClObjectPath *) op->hdl; return native_new_CMPIString(ClObjectPathGetClassName(cop), rc); } -const char *opGetClassNameChars(CMPIObjectPath * op) +const char *opGetClassNameChars(const CMPIObjectPath * op) { ClObjectPath *cop = (ClObjectPath *) op->hdl; return ClObjectPathGetClassName(cop); } -const char *opGetNameSpaceChars(CMPIObjectPath * op) +const char *opGetNameSpaceChars(const CMPIObjectPath * op) { ClObjectPath *cop = (ClObjectPath *) op->hdl; return ClObjectPathGetNameSpace(cop); } -CMPIData opGetKeyCharsAt(CMPIObjectPath * op, +CMPIData opGetKeyCharsAt(const CMPIObjectPath * op, unsigned int i, char **name, CMPIStatus * rc) { ClObjectPath *cop = (ClObjectPath *) op->hdl; @@ -170,7 +170,7 @@ CMPIData opGetKeyCharsAt(CMPIObjectPath * op, } -CMPIData __oft_getKeyAt(CMPIObjectPath * op, CMPICount i, CMPIString ** name, +CMPIData __oft_getKeyAt(const CMPIObjectPath * op, CMPICount i, CMPIString ** name, CMPIStatus * rc) { char *n; @@ -182,7 +182,7 @@ CMPIData __oft_getKeyAt(CMPIObjectPath * op, CMPICount i, CMPIString ** name, return rv; } -CMPIData __oft_getKey(CMPIObjectPath * op, const char *id, CMPIStatus * rc) +CMPIData __oft_getKey(const CMPIObjectPath * op, const char *id, CMPIStatus * rc) { ClObjectPath *cop = (ClObjectPath *) op->hdl; ClSection *prps = &cop->properties; @@ -198,7 +198,7 @@ CMPIData __oft_getKey(CMPIObjectPath * op, const char *id, CMPIStatus * rc) return rv; } -static CMPICount __oft_getKeyCount(CMPIObjectPath * op, CMPIStatus * rc) +static CMPICount __oft_getKeyCount(const CMPIObjectPath * op, CMPIStatus * rc) { ClObjectPath *cop = (ClObjectPath *) op->hdl; if (rc) @@ -208,7 +208,7 @@ static CMPICount __oft_getKeyCount(CMPIObjectPath * op, CMPIStatus * rc) static CMPIStatus __oft_addKey(CMPIObjectPath * op, const char *name, - CMPIValue * value, CMPIType type) + const CMPIValue * value, CMPIType type) { ClObjectPath *cop = (ClObjectPath *) op->hdl; CMPIData data = { type, CMPI_goodValue, {0} }; @@ -234,7 +234,7 @@ static CMPIStatus __oft_addKey(CMPIObjectPath * op, static CMPIStatus __oft_setNameSpaceFromObjectPath(CMPIObjectPath * op, - CMPIObjectPath * src) + const CMPIObjectPath * src) { ClObjectPath *s = (ClObjectPath *) src->hdl; return __oft_setNameSpace(op, ClObjectPathGetNameSpace(s)); @@ -242,7 +242,7 @@ static CMPIStatus __oft_setNameSpaceFromObjectPath(CMPIObjectPath * op, extern char *value2Chars(CMPIType type, CMPIValue * value); -char *pathToChars(CMPIObjectPath * cop, CMPIStatus * rc, char *str) +char *pathToChars(const CMPIObjectPath * cop, CMPIStatus * rc, char *str) { // "//atp:9999/root/cimv25:TennisPlayer.first="Patrick",last="Rafter"; @@ -279,14 +279,14 @@ char *pathToChars(CMPIObjectPath * cop, CMPIStatus * rc, char *str) return str; } -CMPIString *__oft_toString(CMPIObjectPath * cop, CMPIStatus * rc) +CMPIString *__oft_toString(const CMPIObjectPath * cop, CMPIStatus * rc) { char str[4096] = { 0 }; pathToChars(cop, rc, str); return native_new_CMPIString(str, rc); } -char *oft_toCharsNormalized(CMPIObjectPath * cop, CMPIConstClass * cls, +char *oft_toCharsNormalized(const CMPIObjectPath * cop, CMPIConstClass * cls, int full, CMPIStatus * rc) { char str[2048] = { 0 }; @@ -352,13 +352,13 @@ static CMPIObjectPathFT oft = { CMPIObjectPathFT *CMPI_ObjectPath_FT = &oft; -unsigned long getObjectPathSerializedSize(CMPIObjectPath * op) +unsigned long getObjectPathSerializedSize(const CMPIObjectPath * op) { ClObjectPath *cop = (ClObjectPath *) op->hdl; return ClSizeObjectPath(cop) + sizeof(struct native_cop); } -void getSerializedObjectPath(CMPIObjectPath * op, void *area) +void getSerializedObjectPath(const CMPIObjectPath * op, void *area) { memcpy(area, op, sizeof(struct native_cop)); ClObjectPathRebuild((ClObjectPath *) op->hdl, @@ -375,10 +375,10 @@ CMPIObjectPath *relocateSerializedObjectPath(void *area) return (CMPIObjectPath *) cop; } -MsgSegment setObjectPathMsgSegment(CMPIObjectPath * op) +MsgSegment setObjectPathMsgSegment(const CMPIObjectPath * op) { MsgSegment s; - s.data = op; + s.data = (CMPIObjectPath*)op; s.type = MSG_SEG_OBJECTPATH; s.length = getObjectPathSerializedSize(op); return s; diff --git a/predicate.c b/predicate.c index c05e7f3..4d689b2 100644 --- a/predicate.c +++ b/predicate.c @@ -52,14 +52,14 @@ static CMPIStatus __eft_release(CMPIPredicate * pred) } -static CMPIPredicate *__eft_clone(CMPIPredicate * pred, CMPIStatus * rc) +static CMPIPredicate *__eft_clone(const CMPIPredicate * pred, CMPIStatus * rc) { NativePredicate *p = (NativePredicate *) pred; return (CMPIPredicate *) __new_predicate(MEM_NOT_TRACKED,p->op,rc); } -static CMPIStatus __eft_getData(CMPIPredicate* pred, CMPIType* type, +static CMPIStatus __eft_getData(const CMPIPredicate* pred, CMPIType* type, CMPIPredOp* opc, CMPIString** lhs, CMPIString** rhs) { NativePredicate *p = (NativePredicate *) pred; @@ -87,7 +87,7 @@ static CMPIStatus __eft_getData(CMPIPredicate* pred, CMPIType* type, return irc; } -static int __eft_evaluate (CMPIPredicate* pr, CMPIValue* value, +static int __eft_evaluate (const CMPIPredicate* pr, const CMPIValue* value, CMPIType type, CMPIStatus* rc) { if (rc) CMSetStatus(rc, CMPI_RC_ERR_NOT_SUPPORTED); diff --git a/providerDrv.c b/providerDrv.c index f247f75..b5568b0 100644 --- a/providerDrv.c +++ b/providerDrv.c @@ -38,6 +38,7 @@ #include "selectexp.h" #include "control.h" #include "config.h" +#include "constClass.h" #ifdef HAVE_INDICATIONS #define SFCB_INCL_INDICATION_SUPPORT 1 @@ -53,18 +54,14 @@ extern ProviderInfo *classProvInfoPtr; extern void processProviderInvocationRequests(char *); extern CMPIObjectPath *relocateSerializedObjectPath(void *area); -extern MsgSegment setObjectPathMsgSegment(CMPIObjectPath * op); extern MsgSegment setInstanceMsgSegment(CMPIInstance * op); extern MsgSegment setArgsMsgSegment(CMPIArgs * args); -extern void getSerializedObjectPath(CMPIObjectPath * op, void *area); -extern void getSerializedInstance(CMPIInstance * ci, void *area); extern MsgSegment setConstClassMsgSegment(CMPIConstClass * cl); extern void getSerializedConstClass(CMPIConstClass * cl, void *area); extern void getSerializedArgs(CMPIArgs * cl, void *area); extern CMPIConstClass *relocateSerializedConstClass(void *area); extern CMPIInstance *relocateSerializedInstance(void *area); extern CMPIConstClass *relocateSerializedConstClass(void *area); -extern void getSerializedInstance(CMPIInstance * ci, void *area); extern CMPIArgs *relocateSerializedArgs(void *area); extern MsgSegment setArgsMsgSegment(CMPIArgs * args); extern void dump(char *msg, void *a, int l); @@ -199,10 +196,10 @@ static void stopProc(void *p) ctx = native_new_CMPIContext(MEM_TRACKED,NULL); for (pInfo=curProvProc->firstProv; pInfo; pInfo=pInfo->next) { if (pInfo->classMI) pInfo->classMI->ft->cleanup(pInfo->classMI, ctx); - if (pInfo->instanceMI) pInfo->instanceMI->ft->cleanup(pInfo->instanceMI, ctx); - if (pInfo->associationMI) pInfo->associationMI->ft->cleanup(pInfo->associationMI, ctx); - if (pInfo->methodMI) pInfo->methodMI->ft->cleanup(pInfo->methodMI, ctx); - if (pInfo->indicationMI) pInfo->indicationMI->ft->cleanup(pInfo->indicationMI, ctx); + if (pInfo->instanceMI) pInfo->instanceMI->ft->cleanup(pInfo->instanceMI, ctx, 1); + if (pInfo->associationMI) pInfo->associationMI->ft->cleanup(pInfo->associationMI, ctx, 1); + if (pInfo->methodMI) pInfo->methodMI->ft->cleanup(pInfo->methodMI, ctx, 1); + if (pInfo->indicationMI) pInfo->indicationMI->ft->cleanup(pInfo->indicationMI, ctx, 1); } mlogf(M_INFO,M_SHOW,"--- stopped %s %d\n",processName,getpid()); exit(0); @@ -302,11 +299,11 @@ void* providerIdleThread() if (pInfo->library==NULL) continue; if (pInfo->indicationMI!=NULL) continue; if (crc.rc==0 && pInfo->instanceMI) - crc = pInfo->instanceMI->ft->cleanup(pInfo->instanceMI, ctx); + crc = pInfo->instanceMI->ft->cleanup(pInfo->instanceMI, ctx,0); if (crc.rc==0 && pInfo->associationMI) - crc = pInfo->associationMI->ft->cleanup(pInfo->associationMI, ctx); + crc = pInfo->associationMI->ft->cleanup(pInfo->associationMI, ctx,0); if (crc.rc==0 && pInfo->methodMI) - crc = pInfo->methodMI->ft->cleanup(pInfo->methodMI, ctx); + crc = pInfo->methodMI->ft->cleanup(pInfo->methodMI, ctx,0); _SFCB_TRACE(1, ("--- Cleanup rc: %d %s-%d",crc.rc,processName,currentProc)); if (crc.rc==CMPI_RC_NEVER_UNLOAD) doNotExit=1; if (crc.rc==CMPI_RC_DO_NOT_UNLOAD) doNotExit=noBreak=1; @@ -1013,7 +1010,7 @@ static BinResponseHdr *getInstance(BinRequestHdr * hdr, ProviderInfo * info, if (req->count>2) props=makePropertyList(req->count-2,req->properties); _SFCB_TRACE(1, ("--- Calling provider %s",info->providerName)); - rci = info->instanceMI->ft->getInstance(info->instanceMI, ctx, result, path,props); + rci = info->instanceMI->ft->getInstance(info->instanceMI, ctx, result, path, (const char**)props); _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); r = native_result2array(result); @@ -1128,8 +1125,8 @@ static BinResponseHdr *modifyInstance(BinRequestHdr * hdr, ProviderInfo * info, if (req->count>3) props=makePropertyList(req->count-3,req->properties); _SFCB_TRACE(1, ("--- Calling provider %s",info->providerName)); - rci = info->instanceMI->ft->setInstance(info->instanceMI, ctx, result, - path, inst, props); + rci = info->instanceMI->ft->modifyInstance(info->instanceMI, ctx, result, + path, inst, (const char **)props); _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); if (rci.rc == CMPI_RC_OK) { @@ -1168,7 +1165,7 @@ static BinResponseHdr *enumInstances(BinRequestHdr * hdr, ProviderInfo * info, if (req->count>2) props=makePropertyList(req->count-2,req->properties); _SFCB_TRACE(1, ("--- Calling provider %s",info->providerName)); - rci = info->instanceMI->ft->enumInstances(info->instanceMI, ctx, result, path, props); + rci = info->instanceMI->ft->enumInstances(info->instanceMI, ctx, result, path, (const char**)props); _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); if (rci.rc == CMPI_RC_OK) { @@ -1303,8 +1300,13 @@ static BinResponseHdr *execQuery(BinRequestHdr * hdr, ProviderInfo * info, int r qs->propSrc.sns=qs->sns; qs->cop=CMNewObjectPath(Broker,"*",qs->fClasses[0],NULL); - if (qs->allProps) kar=Broker->eft->getKeyList(Broker, NULL, qs->cop, NULL); - else kar=getKeyListAndVerifyPropertyList(qs->cop, qs->spNames, &ok, NULL); + if (qs->allProps) { + CMPIConstClass *cc = getConstClass(CMGetNameSpace(qs->cop,NULL)->hdl, + CMGetClassName(qs->cop,NULL)->hdl); + kar=cc->ft->getKeyList(cc); + } else { + kar=getKeyListAndVerifyPropertyList(qs->cop, qs->spNames, &ok, NULL); + } if (ok) { c=kar->ft->getSize(kar,NULL); @@ -1363,7 +1365,7 @@ static BinResponseHdr *associators(BinRequestHdr * hdr, ProviderInfo * info, int PROVCHARS(req->resultClass.data), PROVCHARS(req->role.data), PROVCHARS(req->resultRole.data), - props); + (const char**)props); _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); if (rci.rc == CMPI_RC_OK) { @@ -1400,7 +1402,7 @@ static BinResponseHdr *references(BinRequestHdr * hdr, ProviderInfo * info, int path, PROVCHARS(req->resultClass.data), PROVCHARS(req->role.data), - props); + (const char**)props); _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); if (rci.rc == CMPI_RC_OK) { @@ -1491,7 +1493,6 @@ static BinResponseHdr *activateFilter(BinRequestHdr *hdr, ProviderInfo* info, CMPIStatus rci = { CMPI_RC_OK, NULL }; NativeSelectExp *se=NULL,*prev=NULL; CMPIObjectPath *path = relocateSerializedObjectPath(req->objectPath.data); - CMPIResult *result = native_new_CMPIResult(requestor<0 ? 0 : requestor,0,NULL); CMPIContext *ctx = native_new_CMPIContext(MEM_TRACKED,info); CMPIFlags flgs=0; int makeActive=0; @@ -1527,32 +1528,30 @@ static BinResponseHdr *activateFilter(BinRequestHdr *hdr, ProviderInfo* info, } _SFCB_TRACE(1, ("--- Calling authorizeFilter %s",info->providerName)); - rci = info->indicationMI->ft->authorizeFilter(info->indicationMI, ctx, result, + rci = info->indicationMI->ft->authorizeFilter(info->indicationMI, ctx, (CMPISelectExp*)se, type, path, PROVCHARS(req->principal.data)); _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); if (rci.rc==CMPI_RC_OK) { _SFCB_TRACE(1, ("--- Calling mustPoll %s",info->providerName)); - rci = info->indicationMI->ft->mustPoll(info->indicationMI, ctx, result, + rci = info->indicationMI->ft->mustPoll(info->indicationMI, ctx, (CMPISelectExp*)se, type, path); _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); + _SFCB_TRACE(1, ("--- Calling activateFilter %s",info->providerName)); + rci = info->indicationMI->ft->activateFilter(info->indicationMI, ctx, + (CMPISelectExp*)se, type, path, 1); + _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); + + if (indicationEnabled==0 && rci.rc==CMPI_RC_OK) { + indicationEnabled=1; + info->indicationMI->ft->enableIndications(info->indicationMI,ctx); + } + if (rci.rc==CMPI_RC_OK) { - _SFCB_TRACE(1, ("--- Calling activateFilter %s",info->providerName)); - rci = info->indicationMI->ft->activateFilter(info->indicationMI, ctx, result, - (CMPISelectExp*)se, type, path, 1); - _SFCB_TRACE(1, ("--- Back from provider rc: %d", rci.rc)); - - if (indicationEnabled==0 && rci.rc==CMPI_RC_OK) { - indicationEnabled=1; - info->indicationMI->ft->enableIndications(info->indicationMI); - } - - if (rci.rc==CMPI_RC_OK) { - resp = (BinResponseHdr *) calloc(1,sizeof(BinResponseHdr)); - resp->rc=1; - } + resp = (BinResponseHdr *) calloc(1,sizeof(BinResponseHdr)); + resp->rc=1; } } @@ -1579,7 +1578,6 @@ static BinResponseHdr *deactivateFilter(BinRequestHdr *hdr, ProviderInfo* info, CMPIStatus rci = { CMPI_RC_OK, NULL }; NativeSelectExp *se=NULL,**sef=&activFilters; CMPIObjectPath *path = relocateSerializedObjectPath(req->objectPath.data); - CMPIResult *result = native_new_CMPIResult(requestor<0 ? 0 : requestor,0,NULL); CMPIContext *ctx = native_new_CMPIContext(MEM_TRACKED,info); CMPIFlags flgs=0; @@ -1598,7 +1596,7 @@ static BinResponseHdr *deactivateFilter(BinRequestHdr *hdr, ProviderInfo* info, if (activFilters==NULL) indicationEnabled=0; _SFCB_TRACE(1, ("--- Calling deactivateFilter %s",info->providerName)); - rci = info->indicationMI->ft->deActivateFilter(info->indicationMI, ctx, result, + rci = info->indicationMI->ft->deActivateFilter(info->indicationMI, ctx, (CMPISelectExp*)se, "", path, 1); if (rci.rc==CMPI_RC_OK) { resp->rc=1; diff --git a/providerMgr.c b/providerMgr.c index 841721f..e185d95 100644 --- a/providerMgr.c +++ b/providerMgr.c @@ -70,17 +70,13 @@ extern ProviderRegister *pReg; extern void processProviderInvocationRequests(ProviderInfo *); extern CMPIObjectPath *relocateSerializedObjectPath(void *area); -extern MsgSegment setObjectPathMsgSegment(CMPIObjectPath * op); extern MsgSegment setInstanceMsgSegment(CMPIInstance * op); extern MsgSegment setArgsMsgSegment(CMPIArgs * args); -extern void getSerializedObjectPath(CMPIObjectPath * op, void *area); -extern void getSerializedInstance(CMPIInstance * ci, void *area); extern MsgSegment setConstClassMsgSegment(CMPIConstClass * cl); extern void getSerializedConstClass(CMPIConstClass * cl, void *area); extern void getSerializedArgs(CMPIArgs * cl, void *area); extern CMPIConstClass *relocateSerializedConstClass(void *area); extern CMPIInstance *relocateSerializedInstance(void *area); -extern void getSerializedInstance(CMPIInstance * ci, void *area); extern CMPIArgs *relocateSerializedArgs(void *area); extern MsgSegment setArgsMsgSegment(CMPIArgs * args); extern void dump(char *msg, void *a, int l); diff --git a/providerMgr.h b/providerMgr.h index a4fb4ea..8a4a6a3 100644 --- a/providerMgr.h +++ b/providerMgr.h @@ -430,6 +430,7 @@ int getProviderContext(BinRequestContext * ctx, OperationHdr * ohdr); BinResponseHdr **invokeProviders(BinRequestContext * binCtx, int *err, int *count); BinResponseHdr *invokeProvider(BinRequestContext * ctx); +CMPIConstClass *getConstClass(const char *ns, const char *cn); typedef struct providerProcess { char *group; diff --git a/result.c b/result.c index 51cf202..336df3d 100644 --- a/result.c +++ b/result.c @@ -26,6 +26,7 @@ #include "constClass.h" #include "queryOperation.h" #include "utilft.h" +#include "objectImpl.h" #include "mlog.h" extern void native_array_reset_size(CMPIArray * array, CMPICount increment); @@ -34,11 +35,6 @@ extern MsgSegment setConstClassMsgSegment(CMPIConstClass * cl); extern int sendResponse(int requestor, BinResponseHdr * hdr); extern int spSendAck(int to); extern int spRcvAck(int from); -extern int isInstance(CMPIInstance *ci); -extern int getObjectPathSerializedSize(CMPIObjectPath*); -extern void getSerializedObjectPath(CMPIObjectPath* ci, void *area); -extern int getInstanceSerializedSize(CMPIInstance*); -extern void getSerializedInstance(CMPIInstance * ci, void *area); extern int getConstClassSerializedSize(CMPIConstClass*); extern void getSerializedConstClass(CMPIConstClass * cl, void *area); extern int getControlNum(char *id, long *val); @@ -166,7 +162,7 @@ static CMPIStatus __rft_release(CMPIResult * result) } -static CMPIResult *__rft_clone(CMPIResult * result, CMPIStatus * rc) +static CMPIResult *__rft_clone(const CMPIResult * result, CMPIStatus * rc) { NativeResult *or = (NativeResult*)result; NativeResult *nr = __new_empty_result(MEM_NOT_TRACKED, rc); @@ -193,7 +189,7 @@ static CMPIResult *__rft_clone(CMPIResult * result, CMPIStatus * rc) } -static CMPIStatus returnData(CMPIResult * result, +static CMPIStatus returnData(const CMPIResult * result, const CMPIValue * val, CMPIType type) { NativeResult *r = (NativeResult*) result; @@ -209,7 +205,7 @@ static CMPIStatus returnData(CMPIResult * result, return CMSetArrayElementAt(r->array, r->current++, val, type); } -static CMPIStatus __rft_returnData(CMPIResult * result, +static CMPIStatus __rft_returnData(const CMPIResult * result, const CMPIValue * val, CMPIType type) { // NativeResult *r = (NativeResult*) result; @@ -222,10 +218,10 @@ static CMPIStatus __rft_returnData(CMPIResult * result, return returnData(result,val,type); } -extern UtilStringBuffer *instanceToString(CMPIInstance * ci, char **props); +extern UtilStringBuffer *instanceToString(const CMPIInstance * ci, char **props); -static CMPIStatus __rft_returnInstance(CMPIResult * result, - CMPIInstance * instance) +static CMPIStatus __rft_returnInstance(const CMPIResult * result, + const CMPIInstance * instance) { int size,isInst=isInstance(instance); void *ptr; @@ -239,12 +235,12 @@ static CMPIStatus __rft_returnInstance(CMPIResult * result, int irc; if (r->qs->where) { - r->qs->propSrc.data=instance; + r->qs->propSrc.data=(CMPIInstance *)instance; irc=r->qs->where->ft->evaluate(r->qs->where,&r->qs->propSrc); if (irc==1) { if (r->qs->allProps==0) { instance= - r->qs->ft->cloneAndFilter(r->qs,instance,r->qs->cop,r->qs->keys); + r->qs->ft->cloneAndFilter(r->qs,(CMPIInstance *)instance,r->qs->cop,r->qs->keys); releaseInstance=1; } } @@ -252,7 +248,7 @@ static CMPIStatus __rft_returnInstance(CMPIResult * result, } else { if (r->qs->allProps==0) { - instance=r->qs->ft->cloneAndFilter(r->qs,instance,r->qs->cop,r->qs->keys); + instance=r->qs->ft->cloneAndFilter(r->qs,(CMPIInstance *)instance,r->qs->cop,r->qs->keys); releaseInstance=1; } } @@ -262,9 +258,9 @@ static CMPIStatus __rft_returnInstance(CMPIResult * result, CMPIValue v; CMPIStatus rc; _SFCB_TRACE(1,("--- Legacy Mode")); - v.inst = instance; + v.inst = (CMPIInstance *) instance; rc=returnData(result, &v, CMPI_instance); - if (releaseInstance) instance->ft->release(instance); + if (releaseInstance) instance->ft->release((CMPIInstance*)instance); _SFCB_RETURN(rc); } @@ -281,13 +277,13 @@ static CMPIStatus __rft_returnInstance(CMPIResult * result, getSerializedConstClass((CMPIConstClass*)instance,ptr); } - if (releaseInstance) instance->ft->release(instance); + if (releaseInstance) instance->ft->release((CMPIInstance*)instance); _SFCB_RETURN(st); } -static CMPIStatus __rft_returnObjectPath(CMPIResult * result, - CMPIObjectPath * cop) +static CMPIStatus __rft_returnObjectPath(const CMPIResult * result, + const CMPIObjectPath * cop) { int size; void *ptr; @@ -295,7 +291,7 @@ static CMPIStatus __rft_returnObjectPath(CMPIResult * result, if (r->legacy) { CMPIValue v; - v.ref = cop; + v.ref = (CMPIObjectPath*)cop; return returnData(result, &v, CMPI_ref); } @@ -307,7 +303,7 @@ static CMPIStatus __rft_returnObjectPath(CMPIResult * result, } -static CMPIStatus __rft_returnDone(CMPIResult * result) +static CMPIStatus __rft_returnDone(const CMPIResult * result) { CMReturn(CMPI_RC_OK); } diff --git a/selectcond.c b/selectcond.c index 072020f..b31958d 100644 --- a/selectcond.c +++ b/selectcond.c @@ -55,7 +55,7 @@ static CMPIStatus __eft_release(CMPISelectCond * cond) } -static CMPISelectCond *__eft_clone(CMPISelectCond * cond, CMPIStatus * rc) +static CMPISelectCond *__eft_clone(const CMPISelectCond * cond, CMPIStatus * rc) { NativeSelectCond *c = (NativeSelectCond *) cond; @@ -64,7 +64,7 @@ static CMPISelectCond *__eft_clone(CMPISelectCond * cond, CMPIStatus * rc) static CMPICount __eft_getCountAndType - (CMPISelectCond* cond, int* type, CMPIStatus* rc) + (const CMPISelectCond* cond, int* type, CMPIStatus* rc) { NativeSelectCond *c = (NativeSelectCond *) cond; CMPICount count=0; @@ -76,7 +76,7 @@ static CMPICount __eft_getCountAndType } static CMPISubCond* __eft_getSubCondAt - (CMPISelectCond* cond, unsigned int index, CMPIStatus* rc) + (const CMPISelectCond* cond, unsigned int index, CMPIStatus* rc) { NativeSelectCond *c = (NativeSelectCond *) cond; CMPIValuePtr vp={NULL,0}; diff --git a/selectexp.c b/selectexp.c index fdb5f23..4dae28e 100644 --- a/selectexp.c +++ b/selectexp.c @@ -60,7 +60,7 @@ static CMPIStatus __eft_release(CMPISelectExp * exp) } -static CMPISelectExp *__eft_clone(CMPISelectExp * exp, CMPIStatus * rc) +static CMPISelectExp *__eft_clone(const CMPISelectExp * exp, CMPIStatus * rc) { NativeSelectExp *e = (NativeSelectExp *) exp; @@ -70,12 +70,12 @@ static CMPISelectExp *__eft_clone(CMPISelectExp * exp, CMPIStatus * rc) -CMPIBoolean __eft_evaluate(CMPISelectExp * exp, - CMPIInstance * inst, CMPIStatus * rc) +CMPIBoolean __eft_evaluate(const CMPISelectExp * exp, + const CMPIInstance * inst, CMPIStatus * rc) { int irc; NativeSelectExp *e = (NativeSelectExp *) exp; - struct qlPropertySource src={inst,NULL,queryGetValue}; + struct qlPropertySource src={(CMPIInstance*)inst,NULL,queryGetValue}; if (rc) CMSetStatus(rc, CMPI_RC_OK); if (e->qs->where==NULL) return 1; @@ -86,14 +86,14 @@ CMPIBoolean __eft_evaluate(CMPISelectExp * exp, } -CMPIString *__eft_getString(CMPISelectExp * exp, CMPIStatus * rc) +CMPIString *__eft_getString(const CMPISelectExp * exp, CMPIStatus * rc) { NativeSelectExp *e = (NativeSelectExp *) exp; return native_new_CMPIString(e->queryString,rc); } -CMPISelectCond *__eft_getDOC(CMPISelectExp * exp, CMPIStatus * rc) +CMPISelectCond *__eft_getDOC(const CMPISelectExp * exp, CMPIStatus * rc) { NativeSelectExp *e = (NativeSelectExp *) exp; PredicateDisjunction *pc=NULL; @@ -105,7 +105,7 @@ CMPISelectCond *__eft_getDOC(CMPISelectExp * exp, CMPIStatus * rc) } -CMPISelectCond *__eft_getCOD(CMPISelectExp * exp, CMPIStatus * rc) +CMPISelectCond *__eft_getCOD(const CMPISelectExp * exp, CMPIStatus * rc) { NativeSelectExp *e = (NativeSelectExp *) exp; PredicateConjunction *pc=NULL; @@ -116,8 +116,8 @@ CMPISelectCond *__eft_getCOD(CMPISelectExp * exp, CMPIStatus * rc) return TrackedCMPISelectCond(pc,1,rc); } -CMPIBoolean __eft_evaluateUsingAccessor(CMPISelectExp * se, - CMPIAccessor * accessor, +CMPIBoolean __eft_evaluateUsingAccessor(const CMPISelectExp * se, + const CMPIAccessor * accessor, void *parm, CMPIStatus * rc) { if (rc) diff --git a/string.c b/string.c index 41fe0ae..12f56ef 100644 --- a/string.c +++ b/string.c @@ -52,14 +52,14 @@ static CMPIStatus __sft_release(CMPIString * string) } -static CMPIString *__sft_clone(CMPIString * string, CMPIStatus * rc) +static CMPIString *__sft_clone(const CMPIString * string, CMPIStatus * rc) { return (CMPIString *) __new_string(MEM_NOT_TRACKED, string->ft->getCharPtr(string, rc), rc); } -static char *__sft_getCharPtr(CMPIString * string, CMPIStatus * rc) +static char *__sft_getCharPtr(const CMPIString * string, CMPIStatus * rc) { return (char *) string->hdl; } diff --git a/subcond.c b/subcond.c index eeb3e96..f8beae7 100644 --- a/subcond.c +++ b/subcond.c @@ -54,7 +54,7 @@ static CMPIStatus __eft_release(CMPISubCond * cond) } -static CMPISubCond *__eft_clone(CMPISubCond * cond, CMPIStatus * rc) +static CMPISubCond *__eft_clone(const CMPISubCond * cond, CMPIStatus * rc) { NativeSubCond *c = (NativeSubCond *) cond; @@ -62,7 +62,7 @@ static CMPISubCond *__eft_clone(CMPISubCond * cond, CMPIStatus * rc) } -static CMPICount __eft_getCount(CMPISubCond* cond, CMPIStatus* rc) +static CMPICount __eft_getCount(const CMPISubCond* cond, CMPIStatus* rc) { NativeSubCond *c = (NativeSubCond *) cond; CMPIArray *conds=(CMPIArray*)c->cond.ptr; @@ -74,7 +74,7 @@ static CMPICount __eft_getCount(CMPISubCond* cond, CMPIStatus* rc) } static CMPIPredicate* __eft_getPredicateAt - (CMPISubCond* cond, unsigned int index, CMPIStatus* rc) + (const CMPISubCond* cond, unsigned int index, CMPIStatus* rc) { NativeSubCond *c = (NativeSubCond *)cond; CMPIValuePtr pvp={NULL,0}; @@ -99,7 +99,7 @@ static CMPIPredicate* __eft_getPredicateAt } static CMPIPredicate* __eft_getPredicate - (CMPISubCond* cond, const char *id, CMPIStatus* rc) + (const CMPISubCond* cond, const char *id, CMPIStatus* rc) { if (rc) CMSetStatus(rc, CMPI_RC_ERR_NOT_SUPPORTED); return NULL; diff --git a/support.h b/support.h index 9b7361d..7986a97 100644 --- a/support.h +++ b/support.h @@ -24,7 +24,7 @@ #ifndef CMPI_TOOL_H #define CMPI_TOOL_H -#define CMPI_VERSION 90 +//#define CMPI_VERSION 90 #include "cmpidt.h" #include "cmpift.h" diff --git a/value.c b/value.c index 381efbf..b1598e2 100644 --- a/value.c +++ b/value.c @@ -72,8 +72,8 @@ void native_release_CMPIValue(CMPIType type, CMPIValue * val) } -CMPIValue native_clone_CMPIValue(CMPIType type, - CMPIValue * val, CMPIStatus * rc) +CMPIValue native_clone_CMPIValue(const CMPIType type, + const CMPIValue * val, CMPIStatus * rc) { CMPIValue v; CMPIConstClass *cl;