1 karl 1.17 //%2005////////////////////////////////////////////////////////////////////////
|
2 schuur 1.1 //
|
3 karl 1.8 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
4 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
5 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
|
6 schuur 1.1 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.8 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
|
9 karl 1.17 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 schuur 1.1 //
12 // Permission is hereby granted, free of charge, to any person obtaining a copy
13 // of this software and associated documentation files (the "Software"), to
14 // deal in the Software without restriction, including without limitation the
15 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16 // sell copies of the Software, and to permit persons to whom the Software is
17 // furnished to do so, subject to the following conditions:
|
18 chip 1.18 //
|
19 schuur 1.1 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
20 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
21 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
22 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
23 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28 //==============================================================================
29 //
30 // Author: Chip Vincent (cvincent@us.ibm.com)
31 //
|
32 chip 1.11 // Modified By:
33 // Carol Ann Krug Graves, Hewlett-Packard Company (carolann_graves@hp.com)
34 // Dave Rosckes (rosckes@us.ibm.com)
35 // Yi Zhou, Hewlett-Packard Company (yi_zhou@hp.com)
36 // Adrian Schuur (schuur@de.ibm.com)
37 // Seema Gupta (gseema@in.ibm.com) for PEP135
38 // Brian G. Campbell, EMC (campbell_brian@emc.com) - PEP140/phase2
|
39 schuur 1.1 //
40 //%/////////////////////////////////////////////////////////////////////////////
41
42 #ifndef Pegasus_OperationResponseHandler_h
43 #define Pegasus_OperationResponseHandler_h
44
45 #include <Pegasus/Common/Config.h>
46 #include <Pegasus/Common/CIMMessage.h>
47 #include <Pegasus/Common/MessageQueueService.h>
48 #include <Pegasus/Common/Constants.h>
49
50 #include <Pegasus/Common/CIMClass.h>
51 #include <Pegasus/Common/CIMInstance.h>
52 #include <Pegasus/Common/CIMIndication.h>
53 #include <Pegasus/Common/CIMValue.h>
54
|
55 chip 1.14 #include <Pegasus/Common/OperationContext.h>
56 #include <Pegasus/Common/OperationContextInternal.h>
57
58 #include <Pegasus/Common/ObjectNormalizer.h>
|
59 chip 1.25
|
60 schuur 1.1 #include <Pegasus/Common/ResponseHandler.h>
|
61 chip 1.25 #include <Pegasus/ProviderManager2/SimpleResponseHandler.h>
|
62 schuur 1.1
63 #include <Pegasus/ProviderManager2/Linkage.h>
64
65 PEGASUS_NAMESPACE_BEGIN
66
67 class PEGASUS_PPM_LINKAGE OperationResponseHandler
68 {
|
69 chip 1.11 friend class SimpleResponseHandler;
|
70 brian.campbell 1.9
|
71 schuur 1.1 public:
|
72 chip 1.11 OperationResponseHandler(
73 CIMRequestMessage * request,
74 CIMResponseMessage * response);
|
75 schuur 1.1
|
76 brian.campbell 1.9 virtual ~OperationResponseHandler(void);
|
77 chip 1.11
|
78 chip 1.25 CIMRequestMessage * getRequest(void) const;
79
80 CIMResponseMessage * getResponse(void) const;
|
81 schuur 1.1
|
82 chip 1.11 virtual void setStatus(
83 const Uint32 code,
|
84 chip 1.25 const String & message = String::EMPTY);
|
85 schuur 1.1
|
86 chip 1.11 virtual void setStatus(
87 const Uint32 code,
88 const ContentLanguages & langs,
|
89 chip 1.25 const String & message = String::EMPTY);
|
90 schuur 1.1
91 protected:
|
92 chip 1.11 // the default for all derived handlers. Some handlers may not apply
93 // async behavior because their callers cannot handle partial responses.
|
94 chip 1.25 virtual Boolean isAsync(void) const;
|
95 brian.campbell 1.9
|
96 chip 1.11 // send (deliver) asynchronously
97 virtual void send(Boolean isComplete);
|
98 brian.campbell 1.9
|
99 chip 1.11 // transfer any objects from handler to response. this does not clear()
|
100 chip 1.25 virtual void transfer(void);
|
101 brian.campbell 1.9
|
102 chip 1.11 // validate whatever is necessary before the transfer
|
103 chip 1.25 virtual void validate(void);
104
105 virtual String getClass(void) const;
106
107 Uint32 getResponseObjectTotal(void) const;
|
108 brian.campbell 1.9
|
109 chip 1.11 // there can be many objects per message (or none at all - i.e complete())
|
110 chip 1.25 Uint32 getResponseMessageTotal(void) const;
111
112 Uint32 getResponseObjectThreshold(void) const;
|
113 brian.campbell 1.9
|
114 schuur 1.1 CIMRequestMessage * _request;
115 CIMResponseMessage * _response;
116
|
117 brian.campbell 1.9 private:
|
118 chip 1.11 Uint32 _responseObjectTotal;
119 Uint32 _responseMessageTotal;
120 Uint32 _responseObjectThreshold;
121
|
122 schuur 1.1 };
123
|
124 chip 1.26 class PEGASUS_PPM_LINKAGE GetInstanceResponseHandler : public OperationResponseHandler, public SimpleInstanceResponseHandler
|
125 chip 1.11 {
126 public:
127 GetInstanceResponseHandler(
128 CIMGetInstanceRequestMessage * request,
|
129 chip 1.25 CIMGetInstanceResponseMessage * response);
130
131 virtual void deliver(const CIMInstance & cimInstance);
|
132 kumpf 1.27 using SimpleInstanceResponseHandler::deliver;
|
133 chip 1.26 virtual void complete(void);
|
134 chip 1.25
135 protected:
136 virtual String getClass(void) const;
137
138 virtual void transfer(void);
139
140 virtual void validate(void);
|
141 chip 1.14
142 private:
143 ObjectNormalizer _normalizer;
144
|
145 schuur 1.1 };
146
|
147 chip 1.26 class PEGASUS_PPM_LINKAGE EnumerateInstancesResponseHandler : public OperationResponseHandler, public SimpleInstanceResponseHandler
|
148 schuur 1.1 {
149 public:
|
150 chip 1.11 EnumerateInstancesResponseHandler(
151 CIMEnumerateInstancesRequestMessage * request,
|
152 chip 1.25 CIMEnumerateInstancesResponseMessage * response);
153
154 virtual void deliver(const CIMInstance & cimInstance);
|
155 kumpf 1.27 using SimpleInstanceResponseHandler::deliver;
|
156 chip 1.11
|
157 chip 1.25 protected:
158 virtual String getClass(void) const;
159
160 virtual void transfer(void);
|
161 chip 1.14
162 private:
163 ObjectNormalizer _normalizer;
164
|
165 schuur 1.1 };
166
|
167 chip 1.26 class PEGASUS_PPM_LINKAGE EnumerateInstanceNamesResponseHandler : public OperationResponseHandler, public SimpleObjectPathResponseHandler
|
168 schuur 1.1 {
169 public:
|
170 chip 1.11 EnumerateInstanceNamesResponseHandler(
171 CIMEnumerateInstanceNamesRequestMessage * request,
|
172 chip 1.25 CIMEnumerateInstanceNamesResponseMessage * response);
|
173 chip 1.11
|
174 chip 1.25 virtual void deliver(const CIMObjectPath & cimObjectPath);
|
175 kumpf 1.27 using SimpleObjectPathResponseHandler::deliver;
|
176 chip 1.25
177 protected:
178 virtual String getClass(void) const;
179
180 virtual void transfer(void);
|
181 chip 1.14
182 private:
183 ObjectNormalizer _normalizer;
184
|
185 schuur 1.1 };
186
|
187 chip 1.26 class PEGASUS_PPM_LINKAGE CreateInstanceResponseHandler : public OperationResponseHandler, public SimpleObjectPathResponseHandler
|
188 schuur 1.1 {
189 public:
|
190 chip 1.11 CreateInstanceResponseHandler(
191 CIMCreateInstanceRequestMessage * request,
|
192 chip 1.25 CIMCreateInstanceResponseMessage * response);
193
194 virtual void deliver(const CIMObjectPath & cimObjectPath);
|
195 kumpf 1.27 using SimpleObjectPathResponseHandler::deliver;
|
196 chip 1.26 virtual void complete(void);
|
197 chip 1.25
198 protected:
199 virtual String getClass(void) const;
200
201 virtual void transfer(void);
202
|
203 schuur 1.1 };
204
|
205 chip 1.26 class PEGASUS_PPM_LINKAGE ModifyInstanceResponseHandler : public OperationResponseHandler, public SimpleResponseHandler
|
206 schuur 1.1 {
207 public:
|
208 chip 1.11 ModifyInstanceResponseHandler(
209 CIMModifyInstanceRequestMessage * request,
|
210 chip 1.25 CIMModifyInstanceResponseMessage * response);
|
211 chip 1.11
|
212 chip 1.18 protected:
|
213 chip 1.25 virtual String getClass(void) const;
214
|
215 schuur 1.1 };
216
|
217 chip 1.26 class PEGASUS_PPM_LINKAGE DeleteInstanceResponseHandler : public OperationResponseHandler, public SimpleResponseHandler
|
218 schuur 1.1 {
219 public:
|
220 chip 1.11 DeleteInstanceResponseHandler(
221 CIMDeleteInstanceRequestMessage * request,
|
222 chip 1.25 CIMDeleteInstanceResponseMessage * response);
|
223 chip 1.11
|
224 chip 1.18 protected:
|
225 chip 1.25 virtual String getClass(void) const;
|
226 chip 1.11
|
227 schuur 1.1 };
228
|
229 chip 1.26 class PEGASUS_PPM_LINKAGE GetPropertyResponseHandler : public OperationResponseHandler, public SimpleValueResponseHandler
|
230 schuur 1.1 {
231 public:
|
232 chip 1.11 GetPropertyResponseHandler(
233 CIMGetPropertyRequestMessage * request,
|
234 chip 1.25 CIMGetPropertyResponseMessage * response);
235
236 virtual void deliver(const CIMValue & cimValue);
|
237 kumpf 1.27 using SimpleValueResponseHandler::deliver;
|
238 chip 1.25
239 protected:
240 virtual String getClass(void) const;
241
242 virtual void transfer(void);
243
244 virtual void validate(void);
245
|
246 schuur 1.1 };
247
|
248 chip 1.26 class PEGASUS_PPM_LINKAGE SetPropertyResponseHandler : public OperationResponseHandler, public SimpleResponseHandler
|
249 schuur 1.1 {
250 public:
|
251 chip 1.11 SetPropertyResponseHandler(
252 CIMSetPropertyRequestMessage * request,
|
253 chip 1.25 CIMSetPropertyResponseMessage * response);
|
254 chip 1.11
|
255 chip 1.18 protected:
|
256 chip 1.25 virtual String getClass(void) const;
|
257 chip 1.11
|
258 schuur 1.1 };
259
|
260 chip 1.26 class PEGASUS_PPM_LINKAGE ExecQueryResponseHandler : public OperationResponseHandler, public SimpleInstance2ObjectResponseHandler
|
261 schuur 1.1 {
262 public:
|
263 chip 1.11 ExecQueryResponseHandler(
264 CIMExecQueryRequestMessage * request,
|
265 chip 1.25 CIMExecQueryResponseMessage * response);
266
267 virtual void deliver(const CIMInstance & cimInstance);
|
268 kumpf 1.27 using SimpleInstance2ObjectResponseHandler::deliver;
|
269 chip 1.25
270 protected:
271 virtual String getClass(void) const;
272
273 virtual void transfer(void);
274
275 virtual Boolean isAsync(void) const;
276
|
277 schuur 1.1 };
278
|
279 chip 1.26 class PEGASUS_PPM_LINKAGE AssociatorsResponseHandler : public OperationResponseHandler, public SimpleObjectResponseHandler
|
280 schuur 1.1 {
281 public:
|
282 chip 1.11 AssociatorsResponseHandler(
283 CIMAssociatorsRequestMessage * request,
|
284 chip 1.25 CIMAssociatorsResponseMessage * response);
285
286 virtual void deliver(const CIMObject & cimObject);
|
287 kumpf 1.27 using SimpleObjectResponseHandler::deliver;
|
288 chip 1.25
289 protected:
290 virtual String getClass(void) const;
291
292 virtual void transfer(void);
|
293 chip 1.11
|
294 schuur 1.1 };
295
|
296 chip 1.26 class PEGASUS_PPM_LINKAGE AssociatorNamesResponseHandler : public OperationResponseHandler, public SimpleObjectPathResponseHandler
|
297 schuur 1.1 {
298 public:
|
299 chip 1.11 AssociatorNamesResponseHandler(
300 CIMAssociatorNamesRequestMessage * request,
|
301 chip 1.25 CIMAssociatorNamesResponseMessage * response);
302
303 virtual void deliver(const CIMObjectPath & cimObjectPath);
|
304 kumpf 1.27 using SimpleObjectPathResponseHandler::deliver;
|
305 chip 1.25
306 protected:
307 virtual String getClass(void) const;
308
309 virtual void transfer(void);
|
310 chip 1.11
|
311 schuur 1.1 };
312
|
313 chip 1.26 class PEGASUS_PPM_LINKAGE ReferencesResponseHandler : public OperationResponseHandler, public SimpleObjectResponseHandler
|
314 schuur 1.1 {
315 public:
|
316 chip 1.11 ReferencesResponseHandler(
317 CIMReferencesRequestMessage * request,
|
318 chip 1.25 CIMReferencesResponseMessage * response);
319
320 virtual void deliver(const CIMObject & cimObject);
|
321 kumpf 1.27 using SimpleObjectResponseHandler::deliver;
|
322 chip 1.25
323 protected:
324 virtual String getClass(void) const;
325
326 virtual void transfer(void);
|
327 chip 1.11
|
328 schuur 1.1 };
329
|
330 chip 1.26 class PEGASUS_PPM_LINKAGE ReferenceNamesResponseHandler : public OperationResponseHandler, public SimpleObjectPathResponseHandler
|
331 schuur 1.1 {
332 public:
|
333 chip 1.11 ReferenceNamesResponseHandler(
334 CIMReferenceNamesRequestMessage * request,
|
335 chip 1.25 CIMReferenceNamesResponseMessage * response);
336
337 virtual void deliver(const CIMObjectPath & cimObjectPath);
|
338 kumpf 1.27 using SimpleObjectPathResponseHandler::deliver;
|
339 chip 1.25
340 protected:
341 virtual String getClass(void) const;
342
343 virtual void transfer(void);
|
344 chip 1.11
|
345 schuur 1.1 };
346
|
347 chip 1.26 class PEGASUS_PPM_LINKAGE InvokeMethodResponseHandler : public OperationResponseHandler, public SimpleMethodResultResponseHandler
|
348 schuur 1.1 {
349 public:
|
350 chip 1.11 InvokeMethodResponseHandler(
351 CIMInvokeMethodRequestMessage * request,
|
352 chip 1.25 CIMInvokeMethodResponseMessage * response);
353
354 virtual void deliverParamValue(const CIMParamValue & cimParamValue);
|
355 kumpf 1.27 using SimpleMethodResultResponseHandler::deliverParamValue;
|
356 chip 1.25
357 virtual void deliver(const CIMValue & cimValue);
358
359 protected:
360 virtual String getClass(void) const;
361
362 virtual void transfer(void);
363
|
364 schuur 1.1 };
365
|
366 brian.campbell 1.9 typedef void (*PEGASUS_INDICATION_CALLBACK)(CIMProcessIndicationRequestMessage*);
|
367 kumpf 1.2
|
368 chip 1.26 class PEGASUS_PPM_LINKAGE EnableIndicationsResponseHandler : public OperationResponseHandler, public SimpleIndicationResponseHandler
|
369 schuur 1.1 {
370 public:
|
371 chip 1.11 EnableIndicationsResponseHandler(
|
372 carolann.graves 1.19 CIMRequestMessage * request,
373 CIMResponseMessage * response,
|
374 chip 1.11 CIMInstance & provider,
|
375 chip 1.25 PEGASUS_INDICATION_CALLBACK indicationCallback);
376
377 virtual void deliver(const CIMIndication & cimIndication);
378
379 virtual void deliver(const OperationContext & context, const CIMIndication & cimIndication);
380
381 virtual void deliver(const Array<CIMIndication> & cimIndications);
382
383 virtual void deliver(const OperationContext & context, const Array<CIMIndication> & cimIndications);
384
385 protected:
386 virtual String getClass(void) const;
387
388 virtual Boolean isAsync(void) const;
|
389 chip 1.18
|
390 brian.campbell 1.9 private:
|
391 chip 1.11 PEGASUS_INDICATION_CALLBACK _indicationCallback;
|
392 schuur 1.1
|
393 brian.campbell 1.9 };
|
394 schuur 1.1
395 PEGASUS_NAMESPACE_END
396
397 #endif
|