static CMPIEnumeration* mbReferenceNames(const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop, const char *resultClass, const char *role, CMPIStatus *rc) { DDD(cout<<"--- mbReferencesNames()"<<endl); mb=CM_BROKER; CIMObjectPath qop(String::EMPTY,CIMNamespaceName(), CM_ObjectPath(cop)->getClassName(), CM_ObjectPath(cop)->getKeyBindings()); AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { Array<CIMObjectPath> const &en=CM_CIMOM(mb)->referenceNames( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), qop, resultClass ? CIMName(resultClass) : CIMName(), role ? String(role) : String::EMPTY); if (rc) CMSetStatus(rc,CMPI_RC_OK); CMPI_Object *obj = new CMPI_Object(new CMPI_OpEnumeration(new Array<CIMObjectPath>(en))); return (CMPI_OpEnumeration *)obj->getHdl(); } catch (const CIMException &e) { DDD(cout<<"### exception: mbReferencesNames - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); if (rc) CMSetStatusWithString(rc,(CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); } if (rc) CMSetStatusWithChars(mb,rc,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-11"); return NULL; }
static CMPIStatus mbSetProperty(const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop, const char *name, const CMPIValue *val, CMPIType type) { DDD(cout<<"--- mbSetProperty()"<<endl); mb=CM_BROKER; CMPIrc rc; CIMValue v=value2CIMValue(val,type,&rc); AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { CM_CIMOM(mb)->setProperty( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), *CM_ObjectPath(cop), String(name), v); CMReturn(CMPI_RC_OK); } catch (const CIMException &e) { DDD(cout<<"### exception: mbSetProperty - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); CMReturnWithString((CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); } CMReturnWithChars(mb,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-12"); }
static CMPIEnumeration* mbEnumInstanceNames(const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop, CMPIStatus *rc) { DDD(cout<<"--- mbEnumInstanceNames()"<<endl); mb=CM_BROKER; AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { Array<CIMObjectPath> const &en=CM_CIMOM(mb)->enumerateInstanceNames( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), CM_ObjectPath(cop)->getClassName()); if (rc) CMSetStatus(rc,CMPI_RC_OK); CMPI_Object *obj = new CMPI_Object(new CMPI_OpEnumeration(new Array<CIMObjectPath>(en))); return (CMPI_OpEnumeration *)obj->getHdl(); } catch (const CIMException &e) { DDD(cout<<"### exception: mbEnumInstances - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); if (rc) CMSetStatusWithString(rc,(CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); } if (rc) CMSetStatusWithChars(mb,rc,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-6"); return NULL; }
static CMPIEnumeration* mbEnumInstances(const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop, const char **properties, CMPIStatus *rc) { DDD(cout<<"--- mbEnumInstances()"<<endl); mb=CM_BROKER; CMPIFlags flgs=ctx->ft->getEntry(ctx,CMPIInvocationFlags,NULL).value.uint32; const CIMPropertyList props=getList(properties); AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { Array<CIMInstance> const &en=CM_CIMOM(mb)->enumerateInstances( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), CM_ObjectPath(cop)->getClassName(), CM_DeepInheritance(flgs), CM_LocalOnly(flgs), CM_IncludeQualifiers(flgs), CM_ClassOrigin(flgs), props); if (rc) CMSetStatus(rc,CMPI_RC_OK); CMPI_Object *obj = new CMPI_Object(new CMPI_InstEnumeration(new Array<CIMInstance>(en))); return (CMPI_InstEnumeration*)obj->getHdl(); } catch (const CIMException &e) { DDD(cout<<"### exception: mbEnumInstances - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); if (rc) CMSetStatusWithString(rc,(CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); return NULL; } if (rc) CMSetStatusWithChars(mb,rc,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-5"); return NULL; }
static CMPIStatus mbModifyInstance(const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop, const CMPIInstance *ci,const char ** properties) { DDD(cout<<"--- mbSetInstance()"<<endl); mb=CM_BROKER; CMPIFlags flgs=ctx->ft->getEntry(ctx,CMPIInvocationFlags,NULL).value.uint32; const CIMPropertyList props=getList(properties); AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { CIMInstance cmi(*CM_Instance(ci)); cmi.setPath(*CM_ObjectPath(cop)); CM_CIMOM(mb)->modifyInstance( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), cmi, CM_IncludeQualifiers(flgs), props); CMReturn(CMPI_RC_OK); } catch (const CIMException &e) { DDD(cout<<"### exception: mbSetInstance - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); CMReturnWithString((CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); } CMReturnWithChars(mb,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-2"); }
static CMPIInstance* mbGetInstance(const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop, const char **properties, CMPIStatus *rc) { DDD(cout<<"--- mbGetInstance()"<<endl); mb=CM_BROKER; CMPIFlags flgs=ctx->ft->getEntry(ctx,CMPIInvocationFlags,NULL).value.uint32; const CIMPropertyList props=getList(properties); CIMObjectPath qop(String::EMPTY,CIMNamespaceName(), CM_ObjectPath(cop)->getClassName(), CM_ObjectPath(cop)->getKeyBindings()); AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { CIMInstance ci=CM_CIMOM(mb)->getInstance( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), qop, //*CM_ObjectPath(cop), CM_LocalOnly(flgs), CM_IncludeQualifiers(flgs), CM_ClassOrigin(flgs), props); ci.setPath(*CM_ObjectPath(cop)); if (rc) CMSetStatus(rc,CMPI_RC_OK); return (CMPIInstance*)new CMPI_Object(new CIMInstance(ci)); } catch (const CIMException &e) { DDD(cout<<"### exception: mbGetInstance - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); if (rc) CMSetStatusWithString(rc,(CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); return NULL; } if (rc) CMSetStatusWithChars(mb,rc,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-0"); return NULL; }
static CMPIArray* errGetMessageArguments( const CMPIError* eErr, CMPIStatus* rc) { PEG_METHOD_ENTER( TRC_CMPIPROVIDERINTERFACE, "CMPI_Error:errGetMessageArguments()"); CIMError* cer=(CIMError*)eErr->hdl; if (!cer) { CMSetStatus(rc, CMPI_RC_ERR_INVALID_PARAMETER); PEG_METHOD_EXIT(); return NULL; } CMPIBoolean notNull; Array<String> pgMessageArguments; try { notNull = cer->getMessageArguments(pgMessageArguments); if (!notNull) { CMSetStatus(rc, CMPI_RC_ERR_INVALID_PARAMETER); PEG_METHOD_EXIT(); return NULL; } } catch (...) { CMSetStatus(rc, CMPI_RC_ERR_FAILED); PEG_METHOD_EXIT(); return NULL; } CMPIUint32 arrSize = pgMessageArguments.size(); CMPIData *dta=new CMPIData[arrSize+1]; // first element reserved for type and size dta->type=CMPI_string; dta->value.uint32=arrSize; for (unsigned int i=1; i<=arrSize; i++) { dta[i].type=CMPI_string; dta[i].state=CMPI_goodValue; String s = pgMessageArguments[i-1]; dta[i].value.string=string2CMPIString(s); } CMSetStatus(rc,CMPI_RC_OK); CMPIArray* cmpiArray = reinterpret_cast<CMPIArray*>(new CMPI_Object(dta)); PEG_METHOD_EXIT(); return cmpiArray; }
static CMPIString* errGetOwningEntity( const CMPIError* eErr, CMPIStatus* rc) { PEG_METHOD_ENTER( TRC_CMPIPROVIDERINTERFACE, "CMPI_Error:errGetOwningEntity()"); CIMError* cer=(CIMError*)eErr->hdl; if (!cer) { PEG_TRACE_CSTRING( TRC_CMPIPROVIDERINTERFACE, Tracer::LEVEL1, "Received invalid Handle - cer..."); CMSetStatus(rc, CMPI_RC_ERR_INVALID_PARAMETER); PEG_METHOD_EXIT(); return NULL; } CMPIBoolean notNull; String pgOwningEntity; try { notNull = cer->getOwningEntity(pgOwningEntity); if (!notNull) { PEG_TRACE_CSTRING( TRC_CMPIPROVIDERINTERFACE, Tracer::LEVEL1, "Received invalid Parameter..."); CMSetStatus(rc, CMPI_RC_ERR_INVALID_PARAMETER); PEG_METHOD_EXIT(); return NULL; } } catch (...) { PEG_TRACE_CSTRING( TRC_CMPIPROVIDERINTERFACE, Tracer::LEVEL1, "Exception: Unknown Exception caught..."); CMSetStatus(rc, CMPI_RC_ERR_FAILED); PEG_METHOD_EXIT(); return NULL; } CMSetStatus(rc,CMPI_RC_OK); PEG_METHOD_EXIT(); return string2CMPIString(pgOwningEntity); }
static CMPIString* errGetOtherErrorSourceFormat( const CMPIError* eErr, CMPIStatus* rc) { PEG_METHOD_ENTER( TRC_CMPIPROVIDERINTERFACE, "CMPI_Error:errGetOtherErrorSourceFormat()"); CIMError* cer=(CIMError*)eErr->hdl; if (!cer) { CMSetStatus(rc, CMPI_RC_ERR_INVALID_PARAMETER); PEG_METHOD_EXIT(); return NULL; } CMPIBoolean notNull; String pgOtherErrorSourceFormat; try { notNull = cer->getOtherErrorSourceFormat(pgOtherErrorSourceFormat); if (!notNull) { CMSetStatus(rc, CMPI_RC_ERR_INVALID_PARAMETER); PEG_METHOD_EXIT(); return NULL; } } catch (...) { CMSetStatus(rc, CMPI_RC_ERR_FAILED); PEG_METHOD_EXIT(); return NULL; } CMSetStatus(rc,CMPI_RC_OK); CMPIString* cmpiString = string2CMPIString(pgOtherErrorSourceFormat); PEG_METHOD_EXIT(); return cmpiString; }
static CMPIString* errGetCIMStatusCodeDescription( const CMPIError* eErr, CMPIStatus* rc) { PEG_METHOD_ENTER( TRC_CMPIPROVIDERINTERFACE, "CMPI_Error:errGetCIMStatusCodeDescription()"); CIMError* cer=(CIMError*)eErr->hdl; if (!cer) { CMSetStatus(rc, CMPI_RC_ERR_INVALID_PARAMETER); PEG_METHOD_EXIT(); return NULL; } CMPIBoolean notNull; String pgCIMStatusCodeDescription; try { notNull = cer->getCIMStatusCodeDescription( pgCIMStatusCodeDescription); if (!notNull) { CMSetStatus(rc, CMPI_RC_ERR_INVALID_PARAMETER); PEG_METHOD_EXIT(); return NULL; } } catch (...) { CMSetStatus(rc, CMPI_RC_ERR_FAILED); PEG_METHOD_EXIT(); return NULL; } CMSetStatus(rc,CMPI_RC_OK); PEG_METHOD_EXIT(); return string2CMPIString(pgCIMStatusCodeDescription); }
static CMPIEnumeration* mbAssociators(const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop, const char *assocClass, const char *resultClass, const char *role, const char *resultRole, const char **properties, CMPIStatus *rc) { DDD(cout<<"--- mbAssociators()"<<endl); mb=CM_BROKER; CMPIFlags flgs=ctx->ft->getEntry(ctx,CMPIInvocationFlags,NULL).value.uint32; const CIMPropertyList props=getList(properties); CIMObjectPath qop(String::EMPTY,CIMNamespaceName(), CM_ObjectPath(cop)->getClassName(), CM_ObjectPath(cop)->getKeyBindings()); AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { Array<CIMObject> const &en=CM_CIMOM(mb)->associators( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), qop, assocClass ? CIMName(assocClass) : CIMName(), resultClass ? CIMName(resultClass) : CIMName(), role ? String(role) : String::EMPTY, resultRole ? String(resultRole) : String::EMPTY, CM_IncludeQualifiers(flgs), CM_ClassOrigin(flgs), props); if (rc) CMSetStatus(rc,CMPI_RC_OK); CMPI_Object *obj = new CMPI_Object(new CMPI_ObjEnumeration(new Array<CIMObject>(en))); return (CMPI_ObjEnumeration *)obj->getHdl(); } catch (const CIMException &e) { DDD(cout<<"### exception: mbAssociators - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); if (rc) CMSetStatusWithString(rc,(CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); return NULL; } if (rc) CMSetStatusWithChars(mb,rc,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-7"); return NULL; }
static CMPIStatus mbDeleteInstance (const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop) { DDD(cout<<"--- mbDeleteInstance()"<<endl); mb=CM_BROKER; CIMObjectPath qop(String::EMPTY,CIMNamespaceName(), CM_ObjectPath(cop)->getClassName(), CM_ObjectPath(cop)->getKeyBindings()); AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { CM_CIMOM(mb)->deleteInstance( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), qop); //*CM_ObjectPath(cop)); CMReturn(CMPI_RC_OK); } catch (const CIMException &e) { DDD(cout<<"### exception: mbDeleteInstance - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); CMReturnWithString((CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); } CMReturnWithChars(mb,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-3"); }
static CMPIObjectPath* mbCreateInstance(const CMPIBroker *mb, const CMPIContext *ctx, const CMPIObjectPath *cop, const CMPIInstance *ci, CMPIStatus *rc) { DDD(cout<<"--- mbCreateInstance()"<<endl); mb=CM_BROKER; AutoMutex mtx(((CMPI_Broker*)mb)->mtx); try { CIMObjectPath ncop=CM_CIMOM(mb)->createInstance( OperationContext(*CM_Context(ctx)), CM_ObjectPath(cop)->getNameSpace(), *CM_Instance(ci)); if (rc) CMSetStatus(rc,CMPI_RC_OK); return (CMPIObjectPath*)new CMPI_Object(new CIMObjectPath(ncop)); } catch (const CIMException &e) { DDD(cout<<"### exception: mbCreateInstance - code: "<<e.getCode()<<" msg: "<<e.getMessage()<<endl); if (rc) CMSetStatusWithString(rc,(CMPIrc)e.getCode(), (CMPIString*)string2CMPIString(e.getMessage())); return NULL; } if (rc) CMSetStatusWithChars(mb,rc,CMPI_RC_ERROR,"Internal error - CMPIBoker.cpp-1"); return NULL; }
static CMPIData argsGetArgAt(const CMPIArgs* eArg, CMPICount pos, CMPIString** name, CMPIStatus* rc) { OpenWBEM::CIMParamValueArray * arg=(OpenWBEM::CIMParamValueArray *)eArg->hdl; CMPIData data={(CMPIType) 0, CMPI_nullValue, {0} }; if (pos > arg->size()) { CMSetStatus(rc,CMPI_RC_ERR_NOT_FOUND); return data; } OpenWBEM::CIMValue v=(*arg)[pos].getValue(); if (!v) { // Valid request, but the value for the named // parm is null. CMSetStatus(rc,CMPI_RC_OK); return data; } OpenWBEM::CIMDataType pType=v.getType(); CMPIType t=type2CMPIType(pType,v.isArray()); value2CMPIData(v,t,&data); if (name) { OpenWBEM::String n=(*arg)[pos].getName(); *name=string2CMPIString(n); } CMSetStatus(rc,CMPI_RC_OK); return data; }