/scratch/rpmbuild.17644.V17674/pegasus/src/Pegasus/Provider/CIMOMHandle.h

00001 //%LICENSE////////////////////////////////////////////////////////////////
00002 //
00003 // Licensed to The Open Group (TOG) under one or more contributor license
00004 // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
00005 // this work for additional information regarding copyright ownership.
00006 // Each contributor licenses this file to you under the OpenPegasus Open
00007 // Source License; you may not use this file except in compliance with the
00008 // License.
00009 //
00010 // Permission is hereby granted, free of charge, to any person obtaining a
00011 // copy of this software and associated documentation files (the "Software"),
00012 // to deal in the Software without restriction, including without limitation
00013 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
00014 // and/or sell copies of the Software, and to permit persons to whom the
00015 // Software is furnished to do so, subject to the following conditions:
00016 //
00017 // The above copyright notice and this permission notice shall be included
00018 // in all copies or substantial portions of the Software.
00019 //
00020 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00021 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00022 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00023 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
00024 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
00025 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
00026 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00027 //
00029 //
00030 //%/////////////////////////////////////////////////////////////////////////////
00031 
00032 
00033 #ifndef Pegasus_CIMOMHandle_h
00034 #define Pegasus_CIMOMHandle_h
00035 
00036 #include <Pegasus/Common/Config.h>
00037 #include <Pegasus/Common/OperationContext.h>
00038 #include <Pegasus/Common/CIMObject.h>
00039 #include <Pegasus/Common/CIMObjectPath.h>
00040 #include <Pegasus/Common/CIMClass.h>
00041 #include <Pegasus/Common/CIMInstance.h>
00042 #include <Pegasus/Common/CIMPropertyList.h>
00043 #include <Pegasus/Common/ResponseHandler.h>
00044 #include <Pegasus/Provider/Linkage.h>
00045 
00046 PEGASUS_NAMESPACE_BEGIN
00047 
00048 class CIMOMHandleRep;
00049 
00066 class PEGASUS_PROVIDER_LINKAGE CIMOMHandle
00067 {
00068 public:
00069 
00073     CIMOMHandle();
00074 
00075     CIMOMHandle(const CIMOMHandle&);
00076 
00080     ~CIMOMHandle();
00081 
00087     CIMOMHandle& operator=(const CIMOMHandle& handle);
00088 
00089     CIMClass getClass(
00090         const OperationContext& context,
00091         const CIMNamespaceName& nameSpace,
00092         const CIMName& className,
00093         Boolean localOnly,
00094         Boolean includeQualifiers,
00095         Boolean includeClassOrigin,
00096         const CIMPropertyList& propertyList);
00097 
00098     Array<CIMClass> enumerateClasses(
00099         const OperationContext& context,
00100         const CIMNamespaceName& nameSpace,
00101         const CIMName& className,
00102         Boolean deepInheritance,
00103         Boolean localOnly,
00104         Boolean includeQualifiers,
00105         Boolean includeClassOrigin);
00106 
00107     Array<CIMName> enumerateClassNames(
00108         const OperationContext& context,
00109         const CIMNamespaceName& nameSpace,
00110         const CIMName& className,
00111         Boolean deepInheritance);
00112 
00113     void createClass(
00114         const OperationContext& context,
00115         const CIMNamespaceName& nameSpace,
00116         const CIMClass& newClass);
00117 
00118     void modifyClass(
00119         const OperationContext& context,
00120         const CIMNamespaceName& nameSpace,
00121         const CIMClass& modifiedClass);
00122 
00123     void deleteClass(
00124         const OperationContext& context,
00125         const CIMNamespaceName& nameSpace,
00126         const CIMName& className);
00127 
00128     CIMInstance getInstance(
00129         const OperationContext& context,
00130         const CIMNamespaceName& nameSpace,
00131         const CIMObjectPath& instanceName,
00132         Boolean localOnly,
00133         Boolean includeQualifiers,
00134         Boolean includeClassOrigin,
00135         const CIMPropertyList& propertyList);
00136 
00137     Array<CIMInstance> enumerateInstances(
00138         const OperationContext& context,
00139         const CIMNamespaceName& nameSpace,
00140         const CIMName& className,
00141         Boolean deepInheritance,
00142         Boolean localOnly,
00143         Boolean includeQualifiers,
00144         Boolean includeClassOrigin,
00145         const CIMPropertyList& propertyList);
00146 
00147     Array<CIMObjectPath> enumerateInstanceNames(
00148         const OperationContext& context,
00149         const CIMNamespaceName& nameSpace,
00150         const CIMName& className);
00151 
00152     CIMObjectPath createInstance(
00153         const OperationContext& context,
00154         const CIMNamespaceName& nameSpace,
00155         const CIMInstance& newInstance);
00156 
00157     void modifyInstance(
00158         const OperationContext& context,
00159         const CIMNamespaceName& nameSpace,
00160         const CIMInstance& modifiedInstance,
00161         Boolean includeQualifiers,
00162         const CIMPropertyList& propertyList);
00163 
00164     void deleteInstance(
00165         const OperationContext& context,
00166         const CIMNamespaceName& nameSpace,
00167         const CIMObjectPath& instanceName);
00168 
00169     Array<CIMObject> execQuery(
00170         const OperationContext& context,
00171         const CIMNamespaceName& nameSpace,
00172         const String& queryLanguage,
00173         const String& query);
00174 
00175     Array<CIMObject> associators(
00176         const OperationContext& context,
00177         const CIMNamespaceName& nameSpace,
00178         const CIMObjectPath& objectName,
00179         const CIMName& assocClass,
00180         const CIMName& resultClass,
00181         const String& role,
00182         const String& resultRole,
00183         Boolean includeQualifiers,
00184         Boolean includeClassOrigin,
00185         const CIMPropertyList& propertyList);
00186 
00187     Array<CIMObjectPath> associatorNames(
00188         const OperationContext& context,
00189         const CIMNamespaceName& nameSpace,
00190         const CIMObjectPath& objectName,
00191         const CIMName& assocClass,
00192         const CIMName& resultClass,
00193         const String& role,
00194         const String& resultRole);
00195 
00196     Array<CIMObject> references(
00197         const OperationContext& context,
00198         const CIMNamespaceName& nameSpace,
00199         const CIMObjectPath& objectName,
00200         const CIMName& resultClass,
00201         const String& role,
00202         Boolean includeQualifiers,
00203         Boolean includeClassOrigin,
00204         const CIMPropertyList& propertyList);
00205 
00206     Array<CIMObjectPath> referenceNames(
00207         const OperationContext& context,
00208         const CIMNamespaceName& nameSpace,
00209         const CIMObjectPath& objectName,
00210         const CIMName& resultClass,
00211         const String& role);
00212 
00213     // property operations
00214     CIMValue getProperty(
00215         const OperationContext& context,
00216         const CIMNamespaceName& nameSpace,
00217         const CIMObjectPath& instanceName,
00218         const CIMName& propertyName);
00219 
00220     void setProperty(
00221         const OperationContext& context,
00222         const CIMNamespaceName& nameSpace,
00223         const CIMObjectPath& instanceName,
00224         const CIMName& propertyName,
00225         const CIMValue& newValue);
00226 
00227     CIMValue invokeMethod(
00228         const OperationContext& context,
00229         const CIMNamespaceName& nameSpace,
00230         const CIMObjectPath& instanceName,
00231         const CIMName& methodName,
00232         const Array<CIMParamValue>& inParameters,
00233         Array<CIMParamValue>& outParameters);
00234 
00245     void disallowProviderUnload();
00246 
00256     void allowProviderUnload();
00257 
00258 #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES
00259 
00270     OperationContext getResponseContext();
00271 #endif
00272 
00273 private:
00274     CIMOMHandleRep* _rep;
00275 
00276     friend class ProviderStatus;
00277     friend class CMPIProvider;
00278 
00279     Boolean unload_ok();
00280 };
00281 
00282 PEGASUS_NAMESPACE_END
00283 
00284 #endif