1 chip 1.1 //%/////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
6 // of this software and associated documentation files (the "Software"), to
7 // deal in the Software without restriction, including without limitation the
8 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
9 // sell copies of the Software, and to permit persons to whom the Software is
10 // furnished to do so, subject to the following conditions:
11 //
12 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
13 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
14 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
15 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
16 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
17 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
18 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
19 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 //
21 //==============================================================================
22 chip 1.1 //
23 // Author: Chip Vincent (cvincent@us.ibm.com)
24 //
25 // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
26 // Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
27 //
28 //%/////////////////////////////////////////////////////////////////////////////
29
30 #ifndef Pegasus_ProviderFacade_h
31 #define Pegasus_ProviderFacade_h
32
33 #include <Pegasus/Common/Config.h>
34
35 #include <Pegasus/Provider/CIMBaseProvider.h>
36 #include <Pegasus/Provider/CIMInstanceProvider.h>
37 #include <Pegasus/Provider/CIMClassProvider.h>
38 #include <Pegasus/Provider/CIMAssociationProvider.h>
39 #include <Pegasus/Provider/CIMPropertyProvider.h>
40 #include <Pegasus/Provider/CIMMethodProvider.h>
41 #include <Pegasus/Provider/CIMQueryProvider.h>
42 #include <Pegasus/Provider/CIMIndicationProvider.h>
43 chip 1.1 #include <Pegasus/Provider/CIMIndicationConsumer.h>
44
45 PEGASUS_NAMESPACE_BEGIN
46
47 class PEGASUS_SERVER_LINKAGE ProviderFacade :
48 public CIMInstanceProvider,
49 public CIMClassProvider,
50 public CIMAssociationProvider,
51 public CIMPropertyProvider,
52 public CIMMethodProvider,
53 public CIMQueryProvider,
54 public CIMIndicationProvider,
55 public CIMIndicationConsumer
56 {
57 public:
58 ProviderFacade(CIMBaseProvider * provider);
59 virtual ~ProviderFacade(void);
60
61 // CIMBaseProvider interface
62 virtual void initialize(CIMOMHandle & cimom);
63 virtual void terminate(void);
64 chip 1.1
65 // CIMInstanceProvider interface
66 virtual void getInstance(
67 const OperationContext & context,
68 const CIMReference & instanceReference,
69 const Uint32 flags,
70 const Array<String> & propertyList,
71 ResponseHandler<CIMInstance> & handler);
72
73 virtual void enumerateInstances(
74 const OperationContext & context,
75 const CIMReference & classReference,
76 const Uint32 flags,
77 const Array<String> & propertyList,
78 ResponseHandler<CIMInstance> & handler);
79
80 virtual void enumerateInstanceNames(
81 const OperationContext & context,
82 const CIMReference & classReference,
83 ResponseHandler<CIMReference> & handler);
84
85 chip 1.1 virtual void modifyInstance(
86 const OperationContext & context,
87 const CIMReference & instanceReference,
88 const CIMInstance & instanceObject,
89 const Uint32 flags,
90 const Array<String> & propertyList,
91 ResponseHandler<CIMInstance> & handler);
92
93 virtual void createInstance(
94 const OperationContext & context,
95 const CIMReference & instanceReference,
96 const CIMInstance & instanceObject,
97 ResponseHandler<CIMReference> & handler);
98
99 virtual void deleteInstance(
100 const OperationContext & context,
101 const CIMReference & instanceReference,
102 ResponseHandler<CIMInstance> & handler);
103
104 // CIMClassProvider interface
105 virtual void getClass(
106 chip 1.1 const OperationContext & context,
107 const CIMReference & classReference,
108 const Uint32 flags,
109 const Array<String> & propertyList,
110 ResponseHandler<CIMClass> & handler);
111
112 virtual void enumerateClasses(
113 const OperationContext & context,
114 const CIMReference & classReference,
115 const Uint32 flags,
116 ResponseHandler<CIMClass> & handler);
117
118 virtual void enumerateClassNames(
119 const OperationContext & context,
120 const CIMReference & classReference,
121 const Uint32 flags,
122 ResponseHandler<CIMReference> & handler);
123
124 virtual void modifyClass(
125 const OperationContext & context,
126 const CIMReference & classReference,
127 chip 1.1 const CIMClass & classObject,
128 ResponseHandler<CIMClass> & handler);
129
130 virtual void createClass(
131 const OperationContext & context,
132 const CIMReference & classReference,
133 const CIMClass & classObject,
134 ResponseHandler<CIMClass> & handler);
135
136 virtual void deleteClass(
137 const OperationContext & context,
138 const CIMReference & classReference,
139 ResponseHandler<CIMClass> & handler);
140
141 // CIMAssociationProvider interface
142 virtual void associators(
143 const OperationContext & context,
144 const CIMReference & objectName,
145 const String & associationClass,
146 const String & resultClass,
147 const String & role,
148 chip 1.1 const String & resultRole,
149 const Uint32 flags,
150 const Array<String> & propertyList,
151 ResponseHandler<CIMObject> & handler);
152
153 virtual void associatorNames(
154 const OperationContext & context,
155 const CIMReference & objectName,
156 const String & associationClass,
157 const String & resultClass,
158 const String & role,
159 const String & resultRole,
160 ResponseHandler<CIMReference> & handler);
161
162 virtual void references(
163 const OperationContext & context,
164 const CIMReference & objectName,
165 const String & resultClass,
166 const String & role,
167 const Uint32 flags,
168 const Array<String> & propertyList,
169 chip 1.1 ResponseHandler<CIMObject> & handler);
170
171 virtual void referenceNames(
172 const OperationContext & context,
173 const CIMReference & objectName,
174 const String & resultClass,
175 const String & role,
176 ResponseHandler<CIMReference> & handler);
177
178 // CIMPropertyProvider interface
179 virtual void getProperty(
180 const OperationContext & context,
181 const CIMReference & instanceReference,
182 const String & propertyName,
183 ResponseHandler<CIMValue> & handler);
184
185 virtual void setProperty(
186 const OperationContext & context,
187 const CIMReference & instanceReference,
188 const String & propertyName,
189 const CIMValue & newValue,
190 chip 1.1 ResponseHandler<CIMValue> & handler);
191
192 // CIMMethodProviderFacade
193 virtual void invokeMethod(
194 const OperationContext & context,
195 const CIMReference & objectReference,
196 const String & methodName,
197 const Array<CIMParamValue> & inParameters,
198 Array<CIMParamValue> & outParameters,
199 ResponseHandler<CIMValue> & handler);
200
201 // CIMQueryProvider interface
202 virtual void executeQuery(
203 const OperationContext & context,
204 const String & queryLanguage,
205 const String & query,
206 ResponseHandler<CIMObject> & handler);
207
208 // CIMIndicationProvider interface
209 virtual void provideIndication(
210 const OperationContext & context,
211 chip 1.1 const CIMReference & classReference,
212 const CIMDateTime & minimumInterval,
213 const CIMDateTime & maximumInterval,
214 const Array<String> & propertyList,
215 ResponseHandler<CIMInstance> & handler);
216
217 virtual void updateIndication(
218 const OperationContext & context,
219 const CIMReference & classReference,
220 const CIMDateTime & minimumInterval,
221 const CIMDateTime & maximumInterval,
222 const Array<String> & propertyList,
223 ResponseHandler<CIMInstance> & handler);
224
225 virtual void cancelIndication(
226 const OperationContext & context,
227 const CIMReference & classReference,
228 ResponseHandler<CIMInstance> & handler);
229
230 virtual void checkIndication(
231 const OperationContext & context,
232 chip 1.1 const CIMReference & classReference,
233 const Array<String> & propertyList,
234 ResponseHandler<CIMInstance> & handler);
235
236 virtual void enableIndication(
237 const OperationContext & context,
238 const String & nameSpace,
239 const Array<String> & classNames,
240 const String & providerName,
241 const Array<String> & propertyList,
242 const Uint16 repeatNotificationPolicy,
243 const String & otherRepeatNotificationPolicy,
244 const CIMDateTime & repeatNotificationInterval,
245 const CIMDateTime & repeatNotificationGap,
246 const Uint16 repeatNotificationCount,
247 const String & condition,
248 const String & queryLanguage,
249 const CIMInstance & subscription,
250 ResponseHandler<CIMInstance> & handler);
251
252 virtual void disableIndication(
253 chip 1.1 const OperationContext & context,
254 const String & nameSpace,
255 const Array<String> & classNames,
256 const String & providerName,
257 const CIMInstance & subscription,
258 ResponseHandler<CIMInstance> & handler);
259
260 virtual void modifyIndication(
261 const OperationContext & context,
262 const String & nameSpace,
263 const Array<String> & classNames,
264 const String & providerName,
265 const Array<String> & propertyList,
266 const Uint16 repeatNotificationPolicy,
267 const String & otherRepeatNotificationPolicy,
268 const CIMDateTime & repeatNotificationInterval,
269 const CIMDateTime & repeatNotificationGap,
270 const Uint16 repeatNotificationCount,
271 const String & condition,
272 const String & queryLanguage,
273 const CIMInstance & subscription,
274 chip 1.1 ResponseHandler<CIMInstance> & handler);
275
276 // CIMIndicationConsumer interface
277 virtual void handleIndication(
278 const OperationContext & context,
279 const CIMInstance & indication,
280 ResponseHandler<CIMInstance> & handler);
281
282 virtual void handleIndication(
283 const OperationContext & context,
284 const String & url,
285 const CIMInstance& indicationInstance) { }
286
287 protected:
288 CIMBaseProvider * _provider;
289
290 };
291
292 PEGASUS_NAMESPACE_END
293
294 #endif
|