13 kumpf 1.1 //
14 // Permission is hereby granted, free of charge, to any person obtaining a copy
15 // of this software and associated documentation files (the "Software"), to
16 // deal in the Software without restriction, including without limitation the
17 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
18 // sell copies of the Software, and to permit persons to whom the Software is
19 // furnished to do so, subject to the following conditions:
20 //
21 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
22 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
23 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
24 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30 //==============================================================================
31 //
32 //%/////////////////////////////////////////////////////////////////////////////
33
34 kumpf 1.1
35 #ifndef Pegasus_CIMOMHandleRep_h
36 #define Pegasus_CIMOMHandleRep_h
37
38 #include <Pegasus/Common/Config.h>
|
40 kumpf 1.1 #include <Pegasus/Common/OperationContext.h>
41 #include <Pegasus/Common/CIMObject.h>
42 #include <Pegasus/Common/CIMObjectPath.h>
43 #include <Pegasus/Common/CIMClass.h>
44 #include <Pegasus/Common/CIMInstance.h>
45 #include <Pegasus/Common/CIMPropertyList.h>
46 #include <Pegasus/Common/CIMParamValue.h>
47 #include <Pegasus/Common/Sharable.h>
48 #include <Pegasus/Common/InternalException.h>
49 #include <Pegasus/Provider/Linkage.h>
50
51 PEGASUS_NAMESPACE_BEGIN
52
53 class PEGASUS_PROVIDER_LINKAGE CIMOMHandleRep : public Sharable
54 {
55 public:
56 /** */
57 CIMOMHandleRep();
58
59 /** */
60 virtual ~CIMOMHandleRep();
61 kumpf 1.1
62 virtual CIMClass getClass(
63 const OperationContext & context,
64 const CIMNamespaceName& nameSpace,
65 const CIMName& className,
66 Boolean localOnly,
67 Boolean includeQualifiers,
68 Boolean includeClassOrigin,
69 const CIMPropertyList& propertyList) = 0;
70
71 virtual Array<CIMClass> enumerateClasses(
72 const OperationContext & context,
73 const CIMNamespaceName& nameSpace,
74 const CIMName& className,
75 Boolean deepInheritance,
76 Boolean localOnly,
77 Boolean includeQualifiers,
78 Boolean includeClassOrigin) = 0;
79
80 virtual Array<CIMName> enumerateClassNames(
81 const OperationContext & context,
82 kumpf 1.1 const CIMNamespaceName& nameSpace,
83 const CIMName& className,
84 Boolean deepInheritance) = 0;
85
86 virtual void createClass(
87 const OperationContext & context,
88 const CIMNamespaceName& nameSpace,
89 const CIMClass& newClass) = 0;
90
91 virtual void modifyClass(
92 const OperationContext & context,
93 const CIMNamespaceName& nameSpace,
94 const CIMClass& modifiedClass) = 0;
95
96 virtual void deleteClass(
97 const OperationContext & context,
98 const CIMNamespaceName& nameSpace,
99 const CIMName& className) = 0;
100
101 virtual CIMInstance getInstance(
102 const OperationContext & context,
103 kumpf 1.1 const CIMNamespaceName& nameSpace,
104 const CIMObjectPath& instanceName,
105 Boolean localOnly,
106 Boolean includeQualifiers,
107 Boolean includeClassOrigin,
108 const CIMPropertyList& propertyList) = 0;
109
110 virtual Array<CIMInstance> enumerateInstances(
111 const OperationContext & context,
112 const CIMNamespaceName& nameSpace,
113 const CIMName& className,
114 Boolean deepInheritance,
115 Boolean localOnly,
116 Boolean includeQualifiers,
117 Boolean includeClassOrigin,
118 const CIMPropertyList& propertyList) = 0;
119
120 virtual Array<CIMObjectPath> enumerateInstanceNames(
121 const OperationContext & context,
122 const CIMNamespaceName& nameSpace,
123 const CIMName& className) = 0;
124 kumpf 1.1
125 virtual CIMObjectPath createInstance(
126 const OperationContext & context,
127 const CIMNamespaceName& nameSpace,
128 const CIMInstance& newInstance) = 0;
129
130 virtual void modifyInstance(
131 const OperationContext & context,
132 const CIMNamespaceName& nameSpace,
133 const CIMInstance& modifiedInstance,
134 Boolean includeQualifiers,
135 const CIMPropertyList& propertyList) = 0;
136
137 virtual void deleteInstance(
138 const OperationContext & context,
139 const CIMNamespaceName& nameSpace,
140 const CIMObjectPath& instanceName) = 0;
141
142 virtual Array<CIMObject> execQuery(
143 const OperationContext & context,
144 const CIMNamespaceName& nameSpace,
145 kumpf 1.1 const String& queryLanguage,
146 const String& query) = 0;
147
148 virtual Array<CIMObject> associators(
149 const OperationContext & context,
150 const CIMNamespaceName& nameSpace,
151 const CIMObjectPath& objectName,
152 const CIMName& assocClass,
153 const CIMName& resultClass,
154 const String& role,
155 const String& resultRole,
156 Boolean includeQualifiers,
157 Boolean includeClassOrigin,
158 const CIMPropertyList& propertyList) = 0;
159
160 virtual Array<CIMObjectPath> associatorNames(
161 const OperationContext & context,
162 const CIMNamespaceName& nameSpace,
163 const CIMObjectPath& objectName,
164 const CIMName& assocClass,
165 const CIMName& resultClass,
166 kumpf 1.1 const String& role,
167 const String& resultRole) = 0;
168
169 virtual Array<CIMObject> references(
170 const OperationContext & context,
171 const CIMNamespaceName& nameSpace,
172 const CIMObjectPath& objectName,
173 const CIMName& resultClass,
174 const String& role,
175 Boolean includeQualifiers,
176 Boolean includeClassOrigin,
177 const CIMPropertyList& propertyList) = 0;
178
179 virtual Array<CIMObjectPath> referenceNames(
180 const OperationContext & context,
181 const CIMNamespaceName& nameSpace,
182 const CIMObjectPath& objectName,
183 const CIMName& resultClass,
184 const String& role) = 0;
185
186 // property operations
187 kumpf 1.1 virtual CIMValue getProperty(
188 const OperationContext & context,
189 const CIMNamespaceName& nameSpace,
190 const CIMObjectPath& instanceName,
191 const CIMName& propertyName) = 0;
192
193 virtual void setProperty(
194 const OperationContext & context,
195 const CIMNamespaceName& nameSpace,
196 const CIMObjectPath& instanceName,
197 const CIMName& propertyName,
198 const CIMValue& newValue) = 0;
199
200 virtual CIMValue invokeMethod(
201 const OperationContext & context,
202 const CIMNamespaceName& nameSpace,
203 const CIMObjectPath& instanceName,
204 const CIMName& methodName,
205 const Array<CIMParamValue>& inParameters,
206 Array<CIMParamValue>& outParameters) = 0;
207
208 kumpf 1.1 /**
209 Provides a hint to the CIM Server that the provider calling this
210 method prefers not to be unloaded. This hint applies in
211 situations where a provider unload is not necessary, such as
212 when the CIM Server unloads idle providers for efficiency reasons.
213 A provider may rescind this hint by using the allowProviderUnload
214 method. Note that disallowProviderUnload is cumulative, such that
215 each call to disallowProviderUnload must be matched with a call to
216 allowProviderUnload.
217 */
218 virtual void disallowProviderUnload();
219
220 /**
221 Provides a hint to the CIM Server that the provider calling this
222 method no longer prefers not to be unloaded. This hint applies in
223 situations where a provider unload is not necessary, such as
224 when the CIM Server unloads idle providers for efficiency reasons.
225 This method is used to rescind a hint that was given using the
226 disallowProviderUnload method. Note that each allowProviderUnload
227 call should be preceded by a disallowProviderUnload call.
228 */
229 kumpf 1.1 virtual void allowProviderUnload();
230
231 #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES
232 /**
233 Returns the context of the response to the last request.
234 Currently, the context only contains the ContentLanguageListContainer
235 from the response.
236 Note: this method should be called directly after the call to the
237 CIM request method (getClass, etc), and can only be called once
238 per request.
239 */
240 virtual OperationContext getResponseContext() = 0;
241 #endif
242
243 #ifdef PEGASUS_OS_OS400
244 virtual void setOS400ProfileHandle(const char* profileHandle) = 0;
245 #endif
246
247 virtual Boolean unload_ok();
248
249 private:
250 kumpf 1.1 Uint32 _providerUnloadProtect;
251 Mutex _providerUnloadProtectMutex;
252 };
253
254 PEGASUS_NAMESPACE_END
255
256 #endif
|