1 karl 1.21 //%2006////////////////////////////////////////////////////////////////////////
|
2 david.dillard 1.9 //
|
3 karl 1.12 // 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 david.dillard 1.9 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.12 // 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.13 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 karl 1.21 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12 // EMC Corporation; Symantec Corporation; The Open Group.
|
13 david.dillard 1.9 //
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 karl 1.21 //
|
21 david.dillard 1.9 // 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
35 #include <Pegasus/Common/Constants.h>
36 #include <Pegasus/Common/XmlWriter.h>
|
37 venkat.puvvada 1.29 #include <Pegasus/Common/XmlReader.h>
38 #include <Pegasus/Common/XmlParser.h>
|
39 david.dillard 1.9 #include <Pegasus/Common/Thread.h>
40 #include <Pegasus/Common/CIMMessage.h>
41 #include <Pegasus/Common/Tracer.h>
|
42 chip 1.17 #include <Pegasus/Common/AutoPtr.h>
|
43 david.dillard 1.9
44 #include "InternalCIMOMHandleRep.h"
45
46 PEGASUS_NAMESPACE_BEGIN
47
|
48 kumpf 1.26 InternalCIMOMHandleMessageQueue::InternalCIMOMHandleMessageQueue()
|
49 david.dillard 1.9 : MessageQueue(PEGASUS_QUEUENAME_INTERNALCLIENT),
|
50 chip 1.17 _output_qid(0),
51 _return_qid(0),
|
52 mike 1.22 _response(0)
|
53 david.dillard 1.9 {
|
54 chip 1.17 // output queue is the binary message handler
|
55 david.dillard 1.9 MessageQueue* out = MessageQueue::lookup(PEGASUS_QUEUENAME_BINARY_HANDLER);
56
|
57 chip 1.17 PEGASUS_ASSERT(out != 0);
|
58 david.dillard 1.9
|
59 chip 1.17 _output_qid = out->getQueueId();
|
60 a.arora 1.11
|
61 chip 1.17 // input queue is this
62 _return_qid = getQueueId();
|
63 a.arora 1.11 }
64
|
65 kumpf 1.26 InternalCIMOMHandleMessageQueue::~InternalCIMOMHandleMessageQueue()
|
66 david.dillard 1.9 {
67 try
68 {
|
69 chip 1.17 // ATTN: release any unprocessed responses
|
70 mike 1.24 _response.clear();
|
71 david.dillard 1.9 }
|
72 kumpf 1.26 catch (...)
|
73 david.dillard 1.9 {
74 }
75 }
76
|
77 kumpf 1.26 void InternalCIMOMHandleMessageQueue::handleEnqueue()
|
78 david.dillard 1.9 {
|
79 kumpf 1.26 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
80 "InternalCIMOMHandleMessageQueue::handleEnqueue");
|
81 david.dillard 1.9
82 Message* message = dequeue();
83
|
84 chip 1.17 switch(message->getType())
|
85 david.dillard 1.9 {
|
86 chip 1.17 /*
87 case CIM_GET_CLASS_REQUEST_MESSAGE:
88 case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE:
89 case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE:
90 case CIM_CREATE_CLASS_REQUEST_MESSAGE:
91 case CIM_MODIFY_CLASS_REQUEST_MESSAGE:
92 case CIM_DELETE_CLASS_REQUEST_MESSAGE:
93 case CIM_GET_INSTANCE_REQUEST_MESSAGE:
94 case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
95 case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
96 case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
97 case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
98 case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
99 case CIM_EXEC_QUERY_REQUEST_MESSAGE:
100 case CIM_ASSOCIATORS_REQUEST_MESSAGE:
101 case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
102 case CIM_REFERENCES_REQUEST_MESSAGE:
103 case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
104 case CIM_GET_PROPERTY_REQUEST_MESSAGE:
105 case CIM_SET_PROPERTY_REQUEST_MESSAGE:
106 case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
107 chip 1.17 sendRequest(message);
|
108 david.dillard 1.9
|
109 chip 1.17 break;
110 */
|
111 david.dillard 1.9 case CIM_GET_CLASS_RESPONSE_MESSAGE:
112 case CIM_ENUMERATE_CLASSES_RESPONSE_MESSAGE:
113 case CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE:
114 case CIM_CREATE_CLASS_RESPONSE_MESSAGE:
115 case CIM_MODIFY_CLASS_RESPONSE_MESSAGE:
116 case CIM_DELETE_CLASS_RESPONSE_MESSAGE:
117 case CIM_GET_INSTANCE_RESPONSE_MESSAGE:
118 case CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:
119 case CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE:
120 case CIM_CREATE_INSTANCE_RESPONSE_MESSAGE:
121 case CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE:
122 case CIM_DELETE_INSTANCE_RESPONSE_MESSAGE:
123 case CIM_EXEC_QUERY_RESPONSE_MESSAGE:
124 case CIM_ASSOCIATORS_RESPONSE_MESSAGE:
125 case CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE:
126 case CIM_REFERENCES_RESPONSE_MESSAGE:
127 case CIM_REFERENCE_NAMES_RESPONSE_MESSAGE:
128 case CIM_GET_PROPERTY_RESPONSE_MESSAGE:
129 case CIM_SET_PROPERTY_RESPONSE_MESSAGE:
|
130 kumpf 1.15 case CIM_INVOKE_METHOD_RESPONSE_MESSAGE:
|
131 mike 1.22 _response.enqueue(message);
|
132 chip 1.17
|
133 david.dillard 1.9 break;
|
134 chip 1.17 default:
|
135 marek 1.27 PEG_TRACE_CSTRING(
|
136 chip 1.17 TRC_DISCARDED_DATA,
137 Tracer::LEVEL2,
138 "Error: unexpected message type");
139
140 delete message;
|
141 david.dillard 1.9
|
142 chip 1.17 break;
|
143 david.dillard 1.9 }
|
144 chip 1.17
|
145 david.dillard 1.9 PEG_METHOD_EXIT();
146 }
147
|
148 kumpf 1.26 CIMResponseMessage* InternalCIMOMHandleMessageQueue::sendRequest(
149 CIMRequestMessage* request)
|
150 david.dillard 1.9 {
|
151 chip 1.17 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::sendRequest");
152
153 AutoMutex autoMutex(_mutex);
154
155 // update message to include routing information
156 request->dest = _output_qid;
157 request->queueIds.push(_return_qid);
158 request->queueIds.push(_output_qid);
159
160 // locate destination
161 MessageQueueService* service =
162 dynamic_cast<MessageQueueService *>(
163 MessageQueue::lookup(_output_qid));
164
165 PEGASUS_ASSERT(service != 0);
|
166 david.dillard 1.9
|
167 chip 1.17 // forward request
|
168 kumpf 1.26 if (service->SendForget(request) == false)
|
169 david.dillard 1.9 {
|
170 chip 1.17 PEG_METHOD_EXIT();
171 throw Exception("Failed to send message");
172 }
|
173 david.dillard 1.9
|
174 chip 1.17 // wait for response
175 CIMResponseMessage* response =
|
176 mike 1.22 dynamic_cast<CIMResponseMessage *>(_response.dequeue_wait());
|
177 david.dillard 1.9
178 PEG_METHOD_EXIT();
|
179 kumpf 1.26 return response;
|
180 chip 1.17 }
181
182 static void _deleteContentLanguage(void* data)
183 {
|
184 kumpf 1.26 if (data != 0)
|
185 chip 1.17 {
|
186 kumpf 1.19 ContentLanguageList* cl = static_cast<ContentLanguageList*>(data);
|
187 chip 1.17
188 delete cl;
189 }
|
190 david.dillard 1.9 }
191
|
192 chip 1.17 static OperationContext _filterOperationContext(const OperationContext& context)
|
193 david.dillard 1.9 {
|
194 chip 1.17 OperationContext temp;
195
|
196 kumpf 1.26 if (context.contains(IdentityContainer::NAME))
|
197 david.dillard 1.9 {
|
198 chip 1.17 // propagate the identity container if it exists (get() with throw
199 // an exception if it does not)
200 temp.insert(context.get(IdentityContainer::NAME));
|
201 david.dillard 1.9 }
|
202 kumpf 1.26 else
|
203 david.dillard 1.9 {
|
204 chip 1.17 temp.insert(IdentityContainer(String::EMPTY));
|
205 david.dillard 1.9 }
|
206 chip 1.17
|
207 kumpf 1.26 if (context.contains(AcceptLanguageListContainer::NAME))
|
208 david.dillard 1.9 {
|
209 kumpf 1.26 // propagate the accept languages container if it exists
210 // (get() with throw an exception if it does not exist)
|
211 chip 1.17 temp.insert(context.get(AcceptLanguageListContainer::NAME));
|
212 david.dillard 1.9 }
|
213 kumpf 1.26 else
|
214 chip 1.17 {
215 // If the container is not found then try to use the
|
216 kumpf 1.19 // AcceptLanguageList from the current thread
217 AcceptLanguageList* pal = Thread::getLanguages();
|
218 david.dillard 1.9
|
219 kumpf 1.26 if (pal != 0)
|
220 david.dillard 1.9 {
|
221 chip 1.17 temp.insert(AcceptLanguageListContainer(*pal));
|
222 david.dillard 1.9 }
|
223 dave.sudlik 1.20 else
224 {
225 temp.insert(AcceptLanguageListContainer(AcceptLanguageList()));
226 }
|
227 chip 1.17 }
|
228 david.dillard 1.9
|
229 kumpf 1.26 if (context.contains(ContentLanguageListContainer::NAME))
|
230 chip 1.17 {
|
231 kumpf 1.26 // propagate the accept languages container if it exists
232 // (get() with throw an exception if it does not)
|
233 chip 1.17 temp.insert(context.get(ContentLanguageListContainer::NAME));
|
234 david.dillard 1.9 }
|
235 kumpf 1.26 else
|
236 david.dillard 1.9 {
|
237 kumpf 1.19 temp.insert(ContentLanguageListContainer(ContentLanguageList()));
|
238 david.dillard 1.9 }
239
|
240 a.dunfey 1.23 return temp;
|
241 chip 1.17 }
242
243 InternalCIMOMHandleRep::InternalCIMOMHandleRep()
244 {
245 }
246
247 InternalCIMOMHandleRep::~InternalCIMOMHandleRep()
248 {
249 }
|
250 david.dillard 1.9
|
251 kumpf 1.26 CIMResponseMessage* InternalCIMOMHandleRep::do_request(
252 CIMRequestMessage* request)
|
253 chip 1.17 {
254 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::do_request");
255
256 /*
257 Uint32 timeout = 0;
|
258 david.dillard 1.9
259 try
260 {
261 const TimeoutContainer* p = dynamic_cast<const TimeoutContainer*>(
262 &(context.get(TimeoutContainer::NAME)));
263 if (p)
264 {
265 timeout = p->getTimeOut();
266 }
267 }
|
268 kumpf 1.26 catch (Exception &)
|
269 david.dillard 1.9 {
270 }
271
272 try
273 {
|
274 kumpf 1.26 if (timeout)
|
275 david.dillard 1.9 {
276 _msg_avail.time_wait(timeout);
277 }
278 else
279 {
280 _msg_avail.wait();
281 }
282 }
|
283 kumpf 1.26 catch (TimeOut&)
|
284 david.dillard 1.9 {
|
285 marek 1.27 PEG_TRACE_CSTRING(TRC_CIMOM_HANDLE, Tracer::LEVEL2,
|
286 david.dillard 1.9 "timeout waiting for response");
287 throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms(
288 "Provider.CIMOMHandle.EMPTY_CIM_RESPONSE",
289 "Empty CIM Response"));
290 }
|
291 kumpf 1.26 catch (...)
|
292 david.dillard 1.9 {
|
293 marek 1.27 PEG_TRACE_CSTRING(TRC_CIMOM_HANDLE, Tracer::LEVEL2,
|
294 david.dillard 1.9 "Unexpected Exception");
295 throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms(
296 "Provider.CIMOMHandle.EMPTY_CIM_RESPONSE",
297 "Empty CIM Response"));
298 }
|
299 chip 1.17 */
300
301 Message* temp = _queue.sendRequest(request);
302
303 CIMResponseMessage* response = dynamic_cast<CIMResponseMessage*>(temp);
304
|
305 kumpf 1.26 if (response == 0)
|
306 david.dillard 1.9 {
|
307 chip 1.17 delete response;
308
309 PEG_METHOD_EXIT();
|
310 kumpf 1.26 throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms(
311 "Provider.CIMOMHandle.EMPTY_CIM_RESPONSE",
312 "Empty CIM Response"));
|
313 david.dillard 1.9 }
314
|
315 kumpf 1.26 if (response->cimException.getCode() != CIM_ERR_SUCCESS)
|
316 david.dillard 1.9 {
|
317 chip 1.17 CIMException e(response->cimException);
|
318 david.dillard 1.9
319 delete response;
|
320 chip 1.17
321 PEG_METHOD_EXIT();
322 throw e;
|
323 david.dillard 1.9 }
324
|
325 kumpf 1.26 if (response->operationContext.contains(ContentLanguageListContainer::NAME))
|
326 chip 1.17 {
|
327 kumpf 1.26 // If the response has a Content-Language then save it into
328 // thread-specific storage
|
329 chip 1.17 ContentLanguageListContainer container =
330 response->operationContext.get(ContentLanguageListContainer::NAME);
331
|
332 kumpf 1.26 if (container.getLanguages().size() > 0)
|
333 chip 1.17 {
334 Thread* currentThread = Thread::getCurrent();
335
|
336 kumpf 1.26 if (currentThread != 0)
|
337 chip 1.17 {
338 // deletes the old tsd and creates a new one
339 currentThread->put_tsd(
340 "cimomHandleContentLanguages",
341 _deleteContentLanguage,
|
342 kumpf 1.19 sizeof(ContentLanguageList*),
343 new ContentLanguageList(container.getLanguages()));
|
344 chip 1.17 }
345 }
346 }
|
347 david.dillard 1.9
348 PEG_METHOD_EXIT();
|
349 a.dunfey 1.23 return response;
|
350 david.dillard 1.9 }
351
352
353 //
354 // CIM Operations
355 //
356
357 CIMClass InternalCIMOMHandleRep::getClass(
358 const OperationContext & context,
359 const CIMNamespaceName& nameSpace,
360 const CIMName& className,
361 Boolean localOnly,
362 Boolean includeQualifiers,
363 Boolean includeClassOrigin,
364 const CIMPropertyList& propertyList)
365 {
366 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::getClass");
367
|
368 chip 1.17 // encode request
369 CIMGetClassRequestMessage* request =
370 new CIMGetClassRequestMessage(
371 XmlWriter::getNextMessageId(),
|
372 david.dillard 1.9 nameSpace,
373 className,
374 localOnly,
375 includeQualifiers,
376 includeClassOrigin,
|
377 chip 1.17 propertyList,
378 QueueIdStack());
379
380 // copy and adjust, as needed, the operation context
381 request->operationContext = _filterOperationContext(context);
|
382 dave.sudlik 1.20 // request->operationContext.get(AcceptLanguageListContainer::NAME);
|
383 chip 1.17
384 AutoPtr<CIMGetClassResponseMessage> response;
385
386 try
387 {
388 response.reset(dynamic_cast<CIMGetClassResponseMessage*>(
389 do_request(request)));
|
390 david.dillard 1.9
|
391 kumpf 1.26 if (response.get() == 0)
|
392 chip 1.17 {
|
393 marek 1.27 PEG_TRACE_CSTRING(
|
394 chip 1.17 TRC_CIMOM_HANDLE,
395 Tracer::LEVEL2,
396 "Incorrect response type in CIMOMHandle");
|
397 david.dillard 1.9
|
398 chip 1.17 throw CIMException(CIM_ERR_FAILED);
399 }
|
400 david.dillard 1.9 }
|
401 kumpf 1.26 catch (CIMException &)
|
402 david.dillard 1.9 {
|
403 chip 1.17 PEG_METHOD_EXIT();
|
404 david.dillard 1.9 throw;
405 }
|
406 kumpf 1.26 catch (...)
|
407 david.dillard 1.9 {
|
408 marek 1.27 PEG_TRACE_CSTRING(
|
409 chip 1.17 TRC_CIMOM_HANDLE,
410 Tracer::LEVEL2,
|
411 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
412 chip 1.17
413 PEG_METHOD_EXIT();
|
414 kumpf 1.26 throw CIMException(CIM_ERR_FAILED, MessageLoaderParms(
415 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
416 "Exception caught in CIMOMHandle"));
|
417 david.dillard 1.9 }
418
419 CIMClass cimClass = response->cimClass;
420
421 PEG_METHOD_EXIT();
|
422 kumpf 1.26 return cimClass;
|
423 david.dillard 1.9 }
424
425
426 Array<CIMClass> InternalCIMOMHandleRep::enumerateClasses(
427 const OperationContext & context,
428 const CIMNamespaceName& nameSpace,
429 const CIMName& className,
430 Boolean deepInheritance,
431 Boolean localOnly,
432 Boolean includeQualifiers,
433 Boolean includeClassOrigin)
434 {
435 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
436 "InternalCIMOMHandleRep::enumerateClasses");
437
438 CIMEnumerateClassesRequestMessage* request =
439 new CIMEnumerateClassesRequestMessage(
440 XmlWriter::getNextMessageId(),
441 nameSpace,
442 className,
443 deepInheritance,
444 david.dillard 1.9 localOnly,
445 includeQualifiers,
446 includeClassOrigin,
|
447 chip 1.17 QueueIdStack());
|
448 david.dillard 1.9
|
449 chip 1.17 // copy and adjust, as needed, the operation context
450 request->operationContext = _filterOperationContext(context);
|
451 david.dillard 1.9
|
452 chip 1.17 AutoPtr<CIMEnumerateClassesResponseMessage> response;
|
453 david.dillard 1.9
454 try
455 {
|
456 chip 1.17 response.reset(dynamic_cast<CIMEnumerateClassesResponseMessage*>(
457 do_request(request)));
458
|
459 kumpf 1.26 if (response.get() == 0)
|
460 chip 1.17 {
|
461 marek 1.27 PEG_TRACE_CSTRING(
|
462 chip 1.17 TRC_CIMOM_HANDLE,
463 Tracer::LEVEL2,
464 "Incorrect response type in CIMOMHandle");
465
466 throw CIMException(CIM_ERR_FAILED);
467 }
|
468 david.dillard 1.9 }
|
469 kumpf 1.26 catch (CIMException &)
|
470 david.dillard 1.9 {
|
471 chip 1.17 PEG_METHOD_EXIT();
|
472 david.dillard 1.9 throw;
473 }
|
474 kumpf 1.26 catch (...)
|
475 david.dillard 1.9 {
|
476 marek 1.27 PEG_TRACE_CSTRING(
|
477 chip 1.17 TRC_CIMOM_HANDLE,
478 Tracer::LEVEL2,
|
479 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
480 chip 1.17
481 PEG_METHOD_EXIT();
482 throw CIMException(
483 CIM_ERR_FAILED,
484 MessageLoaderParms(
485 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
486 "Exception caught in CIMOMHandle"));
|
487 david.dillard 1.9 }
|
488 chip 1.17
|
489 david.dillard 1.9 Array<CIMClass> cimClasses = response->cimClasses;
|
490 chip 1.17
|
491 david.dillard 1.9 PEG_METHOD_EXIT();
|
492 kumpf 1.26 return cimClasses;
|
493 david.dillard 1.9 }
494
495
496 Array<CIMName> InternalCIMOMHandleRep::enumerateClassNames(
497 const OperationContext & context,
498 const CIMNamespaceName &nameSpace,
499 const CIMName& className,
500 Boolean deepInheritance)
501 {
502 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
503 "InternalCIMOMHandleRep::enumerateClassNames");
504
505 CIMEnumerateClassNamesRequestMessage* request =
506 new CIMEnumerateClassNamesRequestMessage(
|
507 chip 1.17 XmlWriter::getNextMessageId(),
508 nameSpace,
509 className,
510 deepInheritance,
511 QueueIdStack());
512
513 // copy and adjust, as needed, the operation context
514 request->operationContext = _filterOperationContext(context);
|
515 david.dillard 1.9
|
516 chip 1.17 AutoPtr<CIMEnumerateClassNamesResponseMessage> response;
|
517 david.dillard 1.9
518 try
519 {
|
520 chip 1.17 response.reset(dynamic_cast<CIMEnumerateClassNamesResponseMessage*>(
521 do_request(request)));
522
|
523 kumpf 1.26 if (response.get() == 0)
|
524 chip 1.17 {
|
525 marek 1.27 PEG_TRACE_CSTRING(
|
526 chip 1.17 TRC_CIMOM_HANDLE,
527 Tracer::LEVEL2,
528 "Incorrect response type in CIMOMHandle");
529
530 throw CIMException(CIM_ERR_FAILED);
531 }
|
532 david.dillard 1.9 }
|
533 kumpf 1.26 catch (CIMException &)
|
534 david.dillard 1.9 {
|
535 chip 1.17 PEG_METHOD_EXIT();
|
536 david.dillard 1.9 throw;
537 }
|
538 kumpf 1.26 catch (...)
|
539 david.dillard 1.9 {
|
540 marek 1.27 PEG_TRACE_CSTRING(
|
541 chip 1.17 TRC_CIMOM_HANDLE,
542 Tracer::LEVEL2,
|
543 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
544 chip 1.17
545 PEG_METHOD_EXIT();
546 throw CIMException(
547 CIM_ERR_FAILED,
548 MessageLoaderParms(
549 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
550 "Exception caught in CIMOMHandle"));
|
551 david.dillard 1.9 }
552
|
553 chip 1.17 Array<CIMName> cimClassNames = response->classNames;
554
|
555 david.dillard 1.9 PEG_METHOD_EXIT();
|
556 kumpf 1.26 return cimClassNames;
|
557 david.dillard 1.9 }
558
559
560 void InternalCIMOMHandleRep::createClass(
561 const OperationContext & context,
562 const CIMNamespaceName& nameSpace,
563 const CIMClass& newClass)
564 {
565 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::createClass");
566
567 CIMCreateClassRequestMessage* request =
568 new CIMCreateClassRequestMessage(
569 XmlWriter::getNextMessageId(),
570 nameSpace,
571 newClass,
|
572 chip 1.17 QueueIdStack());
|
573 david.dillard 1.9
|
574 chip 1.17 // copy and adjust, as needed, the operation context
575 request->operationContext = _filterOperationContext(context);
|
576 david.dillard 1.9
|
577 chip 1.17 AutoPtr<CIMCreateClassResponseMessage> response;
|
578 david.dillard 1.9
579 try
580 {
|
581 chip 1.17 response.reset(dynamic_cast<CIMCreateClassResponseMessage*>(
582 do_request(request)));
583
|
584 kumpf 1.26 if (response.get() == 0)
|
585 chip 1.17 {
|
586 marek 1.27 PEG_TRACE_CSTRING(
|
587 chip 1.17 TRC_CIMOM_HANDLE,
588 Tracer::LEVEL2,
589 "Incorrect response type in CIMOMHandle");
590
591 throw CIMException(CIM_ERR_FAILED);
592 }
|
593 david.dillard 1.9 }
|
594 kumpf 1.26 catch (CIMException &)
|
595 david.dillard 1.9 {
|
596 chip 1.17 PEG_METHOD_EXIT();
|
597 david.dillard 1.9 throw;
598 }
|
599 kumpf 1.26 catch (...)
|
600 david.dillard 1.9 {
|
601 marek 1.27 PEG_TRACE_CSTRING(
|
602 chip 1.17 TRC_CIMOM_HANDLE,
603 Tracer::LEVEL2,
|
604 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
605 chip 1.17
606 PEG_METHOD_EXIT();
607 throw CIMException(
608 CIM_ERR_FAILED,
609 MessageLoaderParms(
610 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
611 "Exception caught in CIMOMHandle"));
|
612 david.dillard 1.9 }
613
614 PEG_METHOD_EXIT();
615 return;
616 }
617
618
619 void InternalCIMOMHandleRep::modifyClass(
620 const OperationContext & context,
621 const CIMNamespaceName &nameSpace,
622 const CIMClass& modifiedClass)
623 {
624 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::modifyClass");
625
626 CIMModifyClassRequestMessage* request =
627 new CIMModifyClassRequestMessage(
628 XmlWriter::getNextMessageId(),
629 nameSpace,
630 modifiedClass,
|
631 chip 1.17 QueueIdStack());
|
632 david.dillard 1.9
|
633 chip 1.17 // copy and adjust, as needed, the operation context
634 request->operationContext = _filterOperationContext(context);
635
636 AutoPtr<CIMModifyClassResponseMessage> response;
|
637 david.dillard 1.9
638 try
639 {
|
640 chip 1.17 response.reset(dynamic_cast<CIMModifyClassResponseMessage*>(
641 do_request(request)));
642
|
643 kumpf 1.26 if (response.get() == 0)
|
644 chip 1.17 {
|
645 marek 1.27 PEG_TRACE_CSTRING(
|
646 chip 1.17 TRC_CIMOM_HANDLE,
647 Tracer::LEVEL2,
648 "Incorrect response type in CIMOMHandle");
649
650 throw CIMException(CIM_ERR_FAILED);
651 }
|
652 david.dillard 1.9 }
|
653 kumpf 1.26 catch (CIMException &)
|
654 david.dillard 1.9 {
|
655 chip 1.17 PEG_METHOD_EXIT();
|
656 david.dillard 1.9 throw;
657 }
|
658 kumpf 1.26 catch (...)
|
659 david.dillard 1.9 {
|
660 marek 1.27 PEG_TRACE_CSTRING(
|
661 chip 1.17 TRC_CIMOM_HANDLE,
662 Tracer::LEVEL2,
|
663 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
664 chip 1.17
665 PEG_METHOD_EXIT();
666 throw CIMException(
667 CIM_ERR_FAILED,
668 MessageLoaderParms(
669 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
670 "Exception caught in CIMOMHandle"));
|
671 david.dillard 1.9 }
672
673 PEG_METHOD_EXIT();
674 return;
675 }
676
677
678 void InternalCIMOMHandleRep::deleteClass(
679 const OperationContext & context,
680 const CIMNamespaceName &nameSpace,
681 const CIMName& className)
682 {
683 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::deleteClass");
684
685 // encode request
686 CIMDeleteClassRequestMessage* request =
687 new CIMDeleteClassRequestMessage(
688 XmlWriter::getNextMessageId(),
689 nameSpace,
690 className,
|
691 chip 1.17 QueueIdStack());
692
693 // copy and adjust, as needed, the operation context
694 request->operationContext = _filterOperationContext(context);
|
695 david.dillard 1.9
|
696 chip 1.17 AutoPtr<CIMDeleteClassResponseMessage> response;
|
697 david.dillard 1.9
|
698 chip 1.17 try
699 {
700 response.reset(dynamic_cast<CIMDeleteClassResponseMessage*>(
701 do_request(request)));
702
|
703 kumpf 1.26 if (response.get() == 0)
|
704 chip 1.17 {
|
705 marek 1.27 PEG_TRACE_CSTRING(
|
706 chip 1.17 TRC_CIMOM_HANDLE,
707 Tracer::LEVEL2,
708 "Incorrect response type in CIMOMHandle");
709
710 throw CIMException(CIM_ERR_FAILED);
711 }
|
712 david.dillard 1.9 }
|
713 kumpf 1.26 catch (CIMException &)
|
714 david.dillard 1.9 {
|
715 chip 1.17 PEG_METHOD_EXIT();
|
716 david.dillard 1.9 throw;
717 }
|
718 kumpf 1.26 catch (...)
|
719 david.dillard 1.9 {
|
720 marek 1.27 PEG_TRACE_CSTRING(
|
721 chip 1.17 TRC_CIMOM_HANDLE,
722 Tracer::LEVEL2,
|
723 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
724 chip 1.17
725 PEG_METHOD_EXIT();
726 throw CIMException(
727 CIM_ERR_FAILED,
728 MessageLoaderParms(
729 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
730 "Exception caught in CIMOMHandle"));
|
731 david.dillard 1.9 }
|
732 chip 1.17
|
733 david.dillard 1.9 PEG_METHOD_EXIT();
734 return;
735 }
736
737
738 CIMInstance InternalCIMOMHandleRep::getInstance(
739 const OperationContext & context,
740 const CIMNamespaceName &nameSpace,
741 const CIMObjectPath& instanceName,
742 Boolean localOnly,
743 Boolean includeQualifiers,
744 Boolean includeClassOrigin,
745 const CIMPropertyList& propertyList)
746 {
747 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::getInstance");
748
749 // encode request
750 CIMGetInstanceRequestMessage* request =
751 new CIMGetInstanceRequestMessage(
752 XmlWriter::getNextMessageId(),
753 nameSpace,
754 david.dillard 1.9 instanceName,
|
755 venkat.puvvada 1.30 false, // localOnly is deprecated
|
756 david.dillard 1.9 includeQualifiers,
757 includeClassOrigin,
758 propertyList,
|
759 chip 1.17 QueueIdStack());
760
761 // copy and adjust, as needed, the operation context
762 request->operationContext = _filterOperationContext(context);
|
763 david.dillard 1.9
|
764 chip 1.17 AutoPtr<CIMGetInstanceResponseMessage> response;
|
765 david.dillard 1.9
766 try
767 {
|
768 chip 1.17 response.reset(dynamic_cast<CIMGetInstanceResponseMessage*>(
769 do_request(request)));
770
|
771 kumpf 1.26 if (response.get() == 0)
|
772 chip 1.17 {
|
773 marek 1.27 PEG_TRACE_CSTRING(
|
774 chip 1.17 TRC_CIMOM_HANDLE,
775 Tracer::LEVEL2,
776 "Incorrect response type in CIMOMHandle");
777
778 throw CIMException(CIM_ERR_FAILED);
779 }
|
780 david.dillard 1.9 }
|
781 kumpf 1.26 catch (CIMException &)
|
782 david.dillard 1.9 {
|
783 chip 1.17 PEG_METHOD_EXIT();
|
784 david.dillard 1.9 throw;
785 }
|
786 kumpf 1.26 catch (...)
|
787 david.dillard 1.9 {
|
788 marek 1.27 PEG_TRACE_CSTRING(
|
789 chip 1.17 TRC_CIMOM_HANDLE,
790 Tracer::LEVEL2,
|
791 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
792 chip 1.17
793 PEG_METHOD_EXIT();
794 throw CIMException(
795 CIM_ERR_FAILED,
796 MessageLoaderParms(
797 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
798 "Exception caught in CIMOMHandle"));
|
799 david.dillard 1.9 }
800
801 CIMInstance cimInstance = response->cimInstance;
802
803 PEG_METHOD_EXIT();
|
804 kumpf 1.26 return cimInstance;
|
805 david.dillard 1.9 }
806
807 Array<CIMInstance> InternalCIMOMHandleRep::enumerateInstances(
808 const OperationContext & context,
809 const CIMNamespaceName &nameSpace,
810 const CIMName& className,
811 Boolean deepInheritance,
812 Boolean localOnly,
813 Boolean includeQualifiers,
814 Boolean includeClassOrigin,
815 const CIMPropertyList& propertyList)
816 {
817 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
818 "InternalCIMOMHandleRep::enumerateInstances");
819
820 // encode request
821 CIMEnumerateInstancesRequestMessage* request =
822 new CIMEnumerateInstancesRequestMessage(
823 XmlWriter::getNextMessageId(),
824 nameSpace,
825 className,
826 david.dillard 1.9 deepInheritance,
|
827 venkat.puvvada 1.30 false, //localOnly is deprecated.
|
828 david.dillard 1.9 includeQualifiers,
829 includeClassOrigin,
830 propertyList,
|
831 chip 1.17 QueueIdStack());
|
832 david.dillard 1.9
|
833 chip 1.17 // copy and adjust, as needed, the operation context
834 request->operationContext = _filterOperationContext(context);
835
836 AutoPtr<CIMEnumerateInstancesResponseMessage> response;
|
837 david.dillard 1.9
838 try
839 {
|
840 chip 1.17 response.reset(dynamic_cast<CIMEnumerateInstancesResponseMessage*>(
841 do_request(request)));
842
|
843 kumpf 1.26 if (response.get() == 0)
|
844 chip 1.17 {
|
845 marek 1.27 PEG_TRACE_CSTRING(
|
846 chip 1.17 TRC_CIMOM_HANDLE,
847 Tracer::LEVEL2,
848 "Incorrect response type in CIMOMHandle");
849
850 throw CIMException(CIM_ERR_FAILED);
851 }
|
852 david.dillard 1.9 }
|
853 kumpf 1.26 catch (CIMException &)
|
854 david.dillard 1.9 {
|
855 chip 1.17 PEG_METHOD_EXIT();
|
856 david.dillard 1.9 throw;
857 }
|
858 kumpf 1.26 catch (...)
|
859 david.dillard 1.9 {
|
860 marek 1.27 PEG_TRACE_CSTRING(
|
861 chip 1.17 TRC_CIMOM_HANDLE,
862 Tracer::LEVEL2,
|
863 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
864 chip 1.17
865 PEG_METHOD_EXIT();
866 throw CIMException(
867 CIM_ERR_FAILED,
868 MessageLoaderParms(
869 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
870 "Exception caught in CIMOMHandle"));
|
871 david.dillard 1.9 }
872
873 Array<CIMInstance> cimInstances = response->cimNamedInstances;
874
875 PEG_METHOD_EXIT();
|
876 kumpf 1.26 return cimInstances;
|
877 david.dillard 1.9 }
878
879
880 Array<CIMObjectPath> InternalCIMOMHandleRep::enumerateInstanceNames(
881 const OperationContext & context,
882 const CIMNamespaceName &nameSpace,
883 const CIMName& className)
884 {
885 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
886 "InternalCIMOMHandleRep::enumerateInstanceNames");
887
888 // encode request
889 CIMEnumerateInstanceNamesRequestMessage* request =
890 new CIMEnumerateInstanceNamesRequestMessage(
891 XmlWriter::getNextMessageId(),
892 nameSpace,
893 className,
|
894 chip 1.17 QueueIdStack());
|
895 david.dillard 1.9
|
896 chip 1.17 // copy and adjust, as needed, the operation context
897 request->operationContext = _filterOperationContext(context);
898
899 AutoPtr<CIMEnumerateInstanceNamesResponseMessage> response;
|
900 david.dillard 1.9
901 try
902 {
|
903 chip 1.17 response.reset(dynamic_cast<CIMEnumerateInstanceNamesResponseMessage*>(
904 do_request(request)));
905
|
906 kumpf 1.26 if (response.get() == 0)
|
907 chip 1.17 {
|
908 marek 1.27 PEG_TRACE_CSTRING(
|
909 chip 1.17 TRC_CIMOM_HANDLE,
910 Tracer::LEVEL2,
911 "Incorrect response type in CIMOMHandle");
912
913 throw CIMException(CIM_ERR_FAILED);
914 }
|
915 david.dillard 1.9 }
|
916 kumpf 1.26 catch (CIMException &)
|
917 david.dillard 1.9 {
|
918 chip 1.17 PEG_METHOD_EXIT();
|
919 david.dillard 1.9 throw;
920 }
|
921 kumpf 1.26 catch (...)
|
922 david.dillard 1.9 {
|
923 marek 1.27 PEG_TRACE_CSTRING(
|
924 chip 1.17 TRC_CIMOM_HANDLE,
925 Tracer::LEVEL2,
|
926 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
927 chip 1.17
928 PEG_METHOD_EXIT();
929 throw CIMException(
930 CIM_ERR_FAILED,
931 MessageLoaderParms(
932 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
933 "Exception caught in CIMOMHandle"));
|
934 david.dillard 1.9 }
935
|
936 chip 1.17 Array<CIMObjectPath> cimObjectPaths = response->instanceNames;
|
937 david.dillard 1.9
938 PEG_METHOD_EXIT();
|
939 kumpf 1.26 return cimObjectPaths;
|
940 david.dillard 1.9 }
941
942 CIMObjectPath InternalCIMOMHandleRep::createInstance(
943 const OperationContext & context,
944 const CIMNamespaceName &nameSpace,
945 const CIMInstance& newInstance)
946 {
947 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
948 "InternalCIMOMHandleRep::createInstance");
949
950 CIMCreateInstanceRequestMessage* request =
951 new CIMCreateInstanceRequestMessage(
952 XmlWriter::getNextMessageId(),
953 nameSpace,
954 newInstance,
|
955 chip 1.17 QueueIdStack());
|
956 david.dillard 1.9
|
957 chip 1.17 // copy and adjust, as needed, the operation context
958 request->operationContext = _filterOperationContext(context);
959
960 AutoPtr<CIMCreateInstanceResponseMessage> response;
|
961 david.dillard 1.9
962 try
963 {
|
964 chip 1.17 response.reset(dynamic_cast<CIMCreateInstanceResponseMessage*>(
965 do_request(request)));
966
|
967 kumpf 1.26 if (response.get() == 0)
|
968 chip 1.17 {
|
969 marek 1.27 PEG_TRACE_CSTRING(
|
970 chip 1.17 TRC_CIMOM_HANDLE,
971 Tracer::LEVEL2,
972 "Incorrect response type in CIMOMHandle");
973
974 throw CIMException(CIM_ERR_FAILED);
975 }
|
976 david.dillard 1.9 }
|
977 kumpf 1.26 catch (CIMException &)
|
978 david.dillard 1.9 {
|
979 chip 1.17 PEG_METHOD_EXIT();
|
980 david.dillard 1.9 throw;
981 }
|
982 kumpf 1.26 catch (...)
|
983 david.dillard 1.9 {
|
984 marek 1.27 PEG_TRACE_CSTRING(
|
985 chip 1.17 TRC_CIMOM_HANDLE,
986 Tracer::LEVEL2,
|
987 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
988 chip 1.17
989 PEG_METHOD_EXIT();
990 throw CIMException(
991 CIM_ERR_FAILED,
992 MessageLoaderParms(
993 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
994 "Exception caught in CIMOMHandle"));
|
995 david.dillard 1.9 }
996
997 CIMObjectPath cimReference = response->instanceName;
998
999 PEG_METHOD_EXIT();
|
1000 kumpf 1.26 return cimReference;
|
1001 david.dillard 1.9 }
1002
1003
1004 void InternalCIMOMHandleRep::modifyInstance(
1005 const OperationContext & context,
1006 const CIMNamespaceName &nameSpace,
1007 const CIMInstance& modifiedInstance,
1008 Boolean includeQualifiers,
1009 const CIMPropertyList& propertyList)
1010 {
1011 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
1012 "InternalCIMOMHandleRep::modifyInstance");
1013
1014 CIMModifyInstanceRequestMessage* request =
1015 new CIMModifyInstanceRequestMessage(
1016 XmlWriter::getNextMessageId(),
1017 nameSpace,
1018 modifiedInstance,
1019 includeQualifiers,
1020 propertyList,
|
1021 chip 1.17 QueueIdStack());
|
1022 david.dillard 1.9
|
1023 chip 1.17 // copy and adjust, as needed, the operation context
1024 request->operationContext = _filterOperationContext(context);
|
1025 david.dillard 1.9
|
1026 chip 1.17 AutoPtr<CIMModifyInstanceResponseMessage> response;
|
1027 david.dillard 1.9
1028 try
1029 {
|
1030 chip 1.17 response.reset(dynamic_cast<CIMModifyInstanceResponseMessage*>(
1031 do_request(request)));
1032
|
1033 kumpf 1.26 if (response.get() == 0)
|
1034 chip 1.17 {
|
1035 marek 1.27 PEG_TRACE_CSTRING(
|
1036 chip 1.17 TRC_CIMOM_HANDLE,
1037 Tracer::LEVEL2,
1038 "Incorrect response type in CIMOMHandle");
1039
1040 throw CIMException(CIM_ERR_FAILED);
1041 }
|
1042 david.dillard 1.9 }
|
1043 kumpf 1.26 catch (CIMException &)
|
1044 david.dillard 1.9 {
|
1045 chip 1.17 PEG_METHOD_EXIT();
|
1046 david.dillard 1.9 throw;
1047 }
|
1048 kumpf 1.26 catch (...)
|
1049 david.dillard 1.9 {
|
1050 marek 1.27 PEG_TRACE_CSTRING(
|
1051 chip 1.17 TRC_CIMOM_HANDLE,
1052 Tracer::LEVEL2,
|
1053 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1054 chip 1.17
1055 PEG_METHOD_EXIT();
1056 throw CIMException(
1057 CIM_ERR_FAILED,
1058 MessageLoaderParms(
1059 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1060 "Exception caught in CIMOMHandle"));
|
1061 david.dillard 1.9 }
1062
1063 PEG_METHOD_EXIT();
1064 return;
1065 }
1066
1067
1068 void InternalCIMOMHandleRep::deleteInstance(
1069 const OperationContext & context,
1070 const CIMNamespaceName &nameSpace,
1071 const CIMObjectPath& instanceName)
1072 {
1073 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
1074 "InternalCIMOMHandleRep::deleteInstance");
1075
1076 CIMDeleteInstanceRequestMessage* request =
1077 new CIMDeleteInstanceRequestMessage(
1078 XmlWriter::getNextMessageId(),
1079 nameSpace,
1080 instanceName,
|
1081 chip 1.17 QueueIdStack());
|
1082 david.dillard 1.9
|
1083 chip 1.17 // copy and adjust, as needed, the operation context
1084 request->operationContext = _filterOperationContext(context);
|
1085 david.dillard 1.9
|
1086 chip 1.17 AutoPtr<CIMDeleteInstanceResponseMessage> response;
|
1087 david.dillard 1.9
1088 try
1089 {
|
1090 chip 1.17 response.reset(dynamic_cast<CIMDeleteInstanceResponseMessage*>(
1091 do_request(request)));
1092
|
1093 kumpf 1.26 if (response.get() == 0)
|
1094 chip 1.17 {
|
1095 marek 1.27 PEG_TRACE_CSTRING(
|
1096 chip 1.17 TRC_CIMOM_HANDLE,
1097 Tracer::LEVEL2,
1098 "Incorrect response type in CIMOMHandle");
1099
1100 throw CIMException(CIM_ERR_FAILED);
1101 }
|
1102 david.dillard 1.9 }
|
1103 kumpf 1.26 catch (CIMException &)
|
1104 david.dillard 1.9 {
|
1105 chip 1.17 PEG_METHOD_EXIT();
|
1106 david.dillard 1.9 throw;
1107 }
|
1108 kumpf 1.26 catch (...)
|
1109 david.dillard 1.9 {
|
1110 marek 1.27 PEG_TRACE_CSTRING(
|
1111 chip 1.17 TRC_CIMOM_HANDLE,
1112 Tracer::LEVEL2,
|
1113 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1114 chip 1.17
1115 PEG_METHOD_EXIT();
1116 throw CIMException(
1117 CIM_ERR_FAILED,
1118 MessageLoaderParms(
1119 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1120 "Exception caught in CIMOMHandle"));
|
1121 david.dillard 1.9 }
1122
1123 PEG_METHOD_EXIT();
1124 return;
1125 }
1126
1127
1128 Array<CIMObject> InternalCIMOMHandleRep::execQuery(
1129 const OperationContext & context,
1130 const CIMNamespaceName &nameSpace,
1131 const String& queryLanguage,
1132 const String& query)
1133 {
1134 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::execQuery");
1135
1136 CIMExecQueryRequestMessage* request =
1137 new CIMExecQueryRequestMessage(
1138 XmlWriter::getNextMessageId(),
1139 nameSpace,
1140 queryLanguage,
1141 query,
|
1142 chip 1.17 QueueIdStack());
|
1143 david.dillard 1.9
|
1144 chip 1.17 // copy and adjust, as needed, the operation context
1145 request->operationContext = _filterOperationContext(context);
|
1146 david.dillard 1.9
|
1147 chip 1.17 AutoPtr<CIMExecQueryResponseMessage> response;
|
1148 david.dillard 1.9
1149 try
1150 {
|
1151 chip 1.17 response.reset(dynamic_cast<CIMExecQueryResponseMessage*>(
1152 do_request(request)));
1153
|
1154 kumpf 1.26 if (response.get() == 0)
|
1155 chip 1.17 {
|
1156 marek 1.27 PEG_TRACE_CSTRING(
|
1157 chip 1.17 TRC_CIMOM_HANDLE,
1158 Tracer::LEVEL2,
1159 "Incorrect response type in CIMOMHandle");
1160
1161 throw CIMException(CIM_ERR_FAILED);
1162 }
|
1163 david.dillard 1.9 }
|
1164 kumpf 1.26 catch (CIMException &)
|
1165 david.dillard 1.9 {
|
1166 chip 1.17 PEG_METHOD_EXIT();
|
1167 david.dillard 1.9 throw;
1168 }
|
1169 kumpf 1.26 catch (...)
|
1170 david.dillard 1.9 {
|
1171 marek 1.27 PEG_TRACE_CSTRING(
|
1172 chip 1.17 TRC_CIMOM_HANDLE,
1173 Tracer::LEVEL2,
|
1174 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1175 chip 1.17
1176 PEG_METHOD_EXIT();
1177 throw CIMException(
1178 CIM_ERR_FAILED,
1179 MessageLoaderParms(
1180 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1181 "Exception caught in CIMOMHandle"));
|
1182 david.dillard 1.9 }
1183
1184 Array<CIMObject> cimObjects = response->cimObjects;
1185
1186 PEG_METHOD_EXIT();
|
1187 kumpf 1.26 return cimObjects;
|
1188 david.dillard 1.9 }
1189
1190
1191 Array<CIMObject> InternalCIMOMHandleRep::associators(
1192 const OperationContext & context,
1193 const CIMNamespaceName &nameSpace,
1194 const CIMObjectPath& objectName,
1195 const CIMName& assocClass,
1196 const CIMName& resultClass,
1197 const String& role,
1198 const String& resultRole,
1199 Boolean includeQualifiers,
1200 Boolean includeClassOrigin,
1201 const CIMPropertyList& propertyList)
1202 {
1203 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::associators");
1204
|
1205 chip 1.17 CIMAssociatorsRequestMessage* request =
1206 new CIMAssociatorsRequestMessage(
1207 XmlWriter::getNextMessageId(),
|
1208 david.dillard 1.9 nameSpace,
1209 objectName,
1210 assocClass,
1211 resultClass,
1212 role,
1213 resultRole,
1214 includeQualifiers,
1215 includeClassOrigin,
|
1216 chip 1.17 propertyList,
1217 QueueIdStack());
|
1218 david.dillard 1.9
|
1219 chip 1.17 // copy and adjust, as needed, the operation context
1220 request->operationContext = _filterOperationContext(context);
|
1221 david.dillard 1.9
|
1222 chip 1.17 AutoPtr<CIMAssociatorsResponseMessage> response;
|
1223 david.dillard 1.9
1224 try
1225 {
|
1226 chip 1.17 response.reset(dynamic_cast<CIMAssociatorsResponseMessage*>(
1227 do_request(request)));
1228
|
1229 kumpf 1.26 if (response.get() == 0)
|
1230 chip 1.17 {
|
1231 marek 1.27 PEG_TRACE_CSTRING(
|
1232 chip 1.17 TRC_CIMOM_HANDLE,
1233 Tracer::LEVEL2,
1234 "Incorrect response type in CIMOMHandle");
1235
1236 throw CIMException(CIM_ERR_FAILED);
1237 }
|
1238 david.dillard 1.9 }
|
1239 kumpf 1.26 catch (CIMException &)
|
1240 david.dillard 1.9 {
|
1241 chip 1.17 PEG_METHOD_EXIT();
|
1242 david.dillard 1.9 throw;
1243 }
|
1244 kumpf 1.26 catch (...)
|
1245 david.dillard 1.9 {
|
1246 marek 1.27 PEG_TRACE_CSTRING(
|
1247 chip 1.17 TRC_CIMOM_HANDLE,
1248 Tracer::LEVEL2,
|
1249 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1250 chip 1.17
1251 PEG_METHOD_EXIT();
1252 throw CIMException(
1253 CIM_ERR_FAILED,
1254 MessageLoaderParms(
1255 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1256 "Exception caught in CIMOMHandle"));
|
1257 david.dillard 1.9 }
1258
1259 Array<CIMObject> cimObjects = response->cimObjects;
1260
1261 PEG_METHOD_EXIT();
|
1262 kumpf 1.26 return cimObjects;
|
1263 david.dillard 1.9 }
1264
1265
1266 Array<CIMObjectPath> InternalCIMOMHandleRep::associatorNames(
1267 const OperationContext & context,
1268 const CIMNamespaceName &nameSpace,
1269 const CIMObjectPath& objectName,
1270 const CIMName& assocClass,
1271 const CIMName& resultClass,
1272 const String& role,
1273 const String& resultRole)
1274 {
1275 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
1276 "InternalCIMOMHandleRep::associatorNames");
1277
1278 CIMAssociatorNamesRequestMessage* request =
1279 new CIMAssociatorNamesRequestMessage(
1280 XmlWriter::getNextMessageId(),
1281 nameSpace,
1282 objectName,
1283 assocClass,
1284 david.dillard 1.9 resultClass,
1285 role,
1286 resultRole,
|
1287 chip 1.17 QueueIdStack());
|
1288 david.dillard 1.9
|
1289 chip 1.17 // copy and adjust, as needed, the operation context
1290 request->operationContext = _filterOperationContext(context);
|
1291 david.dillard 1.9
|
1292 chip 1.17 AutoPtr<CIMAssociatorNamesResponseMessage> response;
|
1293 david.dillard 1.9
1294 try
1295 {
|
1296 chip 1.17 response.reset(dynamic_cast<CIMAssociatorNamesResponseMessage*>(
1297 do_request(request)));
1298
|
1299 kumpf 1.26 if (response.get() == 0)
|
1300 chip 1.17 {
|
1301 marek 1.27 PEG_TRACE_CSTRING(
|
1302 chip 1.17 TRC_CIMOM_HANDLE,
1303 Tracer::LEVEL2,
1304 "Incorrect response type in CIMOMHandle");
1305
1306 throw CIMException(CIM_ERR_FAILED);
1307 }
|
1308 david.dillard 1.9 }
|
1309 kumpf 1.26 catch (CIMException &)
|
1310 david.dillard 1.9 {
|
1311 chip 1.17 PEG_METHOD_EXIT();
|
1312 david.dillard 1.9 throw;
1313 }
|
1314 kumpf 1.26 catch (...)
|
1315 david.dillard 1.9 {
|
1316 marek 1.27 PEG_TRACE_CSTRING(
|
1317 chip 1.17 TRC_CIMOM_HANDLE,
1318 Tracer::LEVEL2,
|
1319 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1320 chip 1.17
1321 PEG_METHOD_EXIT();
1322 throw CIMException(
1323 CIM_ERR_FAILED,
1324 MessageLoaderParms(
1325 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1326 "Exception caught in CIMOMHandle"));
|
1327 david.dillard 1.9 }
1328
1329 Array<CIMObjectPath> cimObjectPaths = response->objectNames;
1330
1331 PEG_METHOD_EXIT();
|
1332 kumpf 1.26 return cimObjectPaths;
|
1333 david.dillard 1.9 }
1334
1335
1336 Array<CIMObject> InternalCIMOMHandleRep::references(
1337 const OperationContext & context,
1338 const CIMNamespaceName &nameSpace,
1339 const CIMObjectPath& objectName,
1340 const CIMName& resultClass,
1341 const String& role,
1342 Boolean includeQualifiers,
1343 Boolean includeClassOrigin,
1344 const CIMPropertyList& propertyList)
1345 {
1346 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::references");
1347
1348 CIMReferencesRequestMessage* request =
1349 new CIMReferencesRequestMessage(
1350 XmlWriter::getNextMessageId(),
1351 nameSpace,
1352 objectName,
1353 resultClass,
1354 david.dillard 1.9 role,
1355 includeQualifiers,
1356 includeClassOrigin,
1357 propertyList,
|
1358 chip 1.17 QueueIdStack());
|
1359 david.dillard 1.9
|
1360 chip 1.17 // copy and adjust, as needed, the operation context
1361 request->operationContext = _filterOperationContext(context);
|
1362 david.dillard 1.9
|
1363 chip 1.17 AutoPtr<CIMReferencesResponseMessage> response;
|
1364 david.dillard 1.9
1365 try
1366 {
|
1367 chip 1.17 response.reset(dynamic_cast<CIMReferencesResponseMessage*>(
1368 do_request(request)));
1369
|
1370 kumpf 1.26 if (response.get() == 0)
|
1371 chip 1.17 {
|
1372 marek 1.27 PEG_TRACE_CSTRING(
|
1373 chip 1.17 TRC_CIMOM_HANDLE,
1374 Tracer::LEVEL2,
1375 "Incorrect response type in CIMOMHandle");
1376
1377 throw CIMException(CIM_ERR_FAILED);
1378 }
|
1379 david.dillard 1.9 }
|
1380 kumpf 1.26 catch (CIMException &)
|
1381 david.dillard 1.9 {
|
1382 chip 1.17 PEG_METHOD_EXIT();
|
1383 david.dillard 1.9 throw;
1384 }
|
1385 kumpf 1.26 catch (...)
|
1386 david.dillard 1.9 {
|
1387 marek 1.27 PEG_TRACE_CSTRING(
|
1388 chip 1.17 TRC_CIMOM_HANDLE,
1389 Tracer::LEVEL2,
|
1390 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1391 chip 1.17
1392 PEG_METHOD_EXIT();
1393 throw CIMException(
1394 CIM_ERR_FAILED,
1395 MessageLoaderParms(
1396 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1397 "Exception caught in CIMOMHandle"));
|
1398 david.dillard 1.9 }
1399
1400 Array<CIMObject> cimObjects = response->cimObjects;
1401
1402 PEG_METHOD_EXIT();
|
1403 kumpf 1.26 return cimObjects;
|
1404 david.dillard 1.9 }
1405
1406
1407 Array<CIMObjectPath> InternalCIMOMHandleRep::referenceNames(
1408 const OperationContext & context,
1409 const CIMNamespaceName &nameSpace,
1410 const CIMObjectPath& objectName,
1411 const CIMName& resultClass,
1412 const String& role)
1413 {
1414 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE,
1415 "InternalCIMOMHandleRep::referenceNames");
1416
1417 CIMReferenceNamesRequestMessage* request =
1418 new CIMReferenceNamesRequestMessage(
1419 XmlWriter::getNextMessageId(),
1420 nameSpace,
1421 objectName,
1422 resultClass,
1423 role,
|
1424 chip 1.17 QueueIdStack());
|
1425 david.dillard 1.9
|
1426 chip 1.17 // copy and adjust, as needed, the operation context
1427 request->operationContext = _filterOperationContext(context);
|
1428 david.dillard 1.9
|
1429 chip 1.17 AutoPtr<CIMReferenceNamesResponseMessage> response;
|
1430 david.dillard 1.9
1431 try
1432 {
|
1433 chip 1.17 response.reset(dynamic_cast<CIMReferenceNamesResponseMessage*>(
1434 do_request(request)));
1435
|
1436 kumpf 1.26 if (response.get() == 0)
|
1437 chip 1.17 {
|
1438 marek 1.27 PEG_TRACE_CSTRING(
|
1439 chip 1.17 TRC_CIMOM_HANDLE,
1440 Tracer::LEVEL2,
1441 "Incorrect response type in CIMOMHandle");
1442
1443 throw CIMException(CIM_ERR_FAILED);
1444 }
|
1445 david.dillard 1.9 }
|
1446 kumpf 1.26 catch (CIMException &)
|
1447 david.dillard 1.9 {
|
1448 chip 1.17 PEG_METHOD_EXIT();
|
1449 david.dillard 1.9 throw;
1450 }
|
1451 kumpf 1.26 catch (...)
|
1452 david.dillard 1.9 {
|
1453 marek 1.27 PEG_TRACE_CSTRING(
|
1454 chip 1.17 TRC_CIMOM_HANDLE,
1455 Tracer::LEVEL2,
|
1456 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1457 chip 1.17
1458 PEG_METHOD_EXIT();
1459 throw CIMException(
1460 CIM_ERR_FAILED,
1461 MessageLoaderParms(
1462 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1463 "Exception caught in CIMOMHandle"));
|
1464 david.dillard 1.9 }
1465
1466 Array<CIMObjectPath> cimObjectPaths = response->objectNames;
1467
1468 PEG_METHOD_EXIT();
|
1469 kumpf 1.26 return cimObjectPaths;
|
1470 david.dillard 1.9 }
1471
1472
1473 CIMValue InternalCIMOMHandleRep::getProperty(
1474 const OperationContext & context,
1475 const CIMNamespaceName &nameSpace,
1476 const CIMObjectPath& instanceName,
1477 const CIMName& propertyName)
1478 {
1479 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::getProperty");
1480
1481 CIMGetPropertyRequestMessage* request =
1482 new CIMGetPropertyRequestMessage(
|
1483 chip 1.17 XmlWriter::getNextMessageId(),
1484 nameSpace,
1485 instanceName,
1486 propertyName,
1487 QueueIdStack());
|
1488 david.dillard 1.9
|
1489 chip 1.17 // copy and adjust, as needed, the operation context
1490 request->operationContext = _filterOperationContext(context);
|
1491 david.dillard 1.9
|
1492 chip 1.17 AutoPtr<CIMGetPropertyResponseMessage> response;
|
1493 david.dillard 1.9
1494 try
1495 {
|
1496 chip 1.17 response.reset(dynamic_cast<CIMGetPropertyResponseMessage*>(
1497 do_request(request)));
1498
|
1499 kumpf 1.26 if (response.get() == 0)
|
1500 chip 1.17 {
|
1501 marek 1.27 PEG_TRACE_CSTRING(
|
1502 chip 1.17 TRC_CIMOM_HANDLE,
1503 Tracer::LEVEL2,
1504 "Incorrect response type in CIMOMHandle");
1505
1506 throw CIMException(CIM_ERR_FAILED);
1507 }
|
1508 david.dillard 1.9 }
|
1509 kumpf 1.26 catch (CIMException &)
|
1510 david.dillard 1.9 {
|
1511 chip 1.17 PEG_METHOD_EXIT();
|
1512 david.dillard 1.9 throw;
1513 }
|
1514 kumpf 1.26 catch (...)
|
1515 david.dillard 1.9 {
|
1516 marek 1.27 PEG_TRACE_CSTRING(
|
1517 chip 1.17 TRC_CIMOM_HANDLE,
1518 Tracer::LEVEL2,
|
1519 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1520 chip 1.17
1521 PEG_METHOD_EXIT();
1522 throw CIMException(
1523 CIM_ERR_FAILED,
1524 MessageLoaderParms(
1525 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1526 "Exception caught in CIMOMHandle"));
|
1527 david.dillard 1.9 }
1528
1529 CIMValue cimValue = response->value;
1530
|
1531 venkat.puvvada 1.29 // Return value in String form.
1532 if (cimValue.getType() != CIMTYPE_STRING &&
1533 cimValue.getType() != CIMTYPE_REFERENCE && !cimValue.isNull())
1534 {
1535 Buffer out;
1536 XmlWriter::appendValueElement(out, cimValue);
1537 XmlParser parser((char*)out.getData());
1538 XmlReader::getPropertyValue(parser,cimValue);
1539 }
1540
|
1541 david.dillard 1.9 PEG_METHOD_EXIT();
|
1542 kumpf 1.26 return cimValue;
|
1543 david.dillard 1.9 }
1544
1545
1546 void InternalCIMOMHandleRep::setProperty(
1547 const OperationContext & context,
1548 const CIMNamespaceName &nameSpace,
1549 const CIMObjectPath& instanceName,
1550 const CIMName& propertyName,
1551 const CIMValue& newValue)
1552 {
1553 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::setProperty");
1554
1555 CIMSetPropertyRequestMessage* request =
1556 new CIMSetPropertyRequestMessage(
1557 XmlWriter::getNextMessageId(),
1558 nameSpace,
1559 instanceName,
1560 propertyName,
1561 newValue,
|
1562 chip 1.17 QueueIdStack());
|
1563 david.dillard 1.9
|
1564 chip 1.17 // copy and adjust, as needed, the operation context
1565 request->operationContext = _filterOperationContext(context);
|
1566 david.dillard 1.9
|
1567 chip 1.17 AutoPtr<CIMSetPropertyResponseMessage> response;
|
1568 david.dillard 1.9
1569 try
1570 {
|
1571 chip 1.17 response.reset(dynamic_cast<CIMSetPropertyResponseMessage*>(
1572 do_request(request)));
1573
|
1574 kumpf 1.26 if (response.get() == 0)
|
1575 chip 1.17 {
|
1576 marek 1.27 PEG_TRACE_CSTRING(
|
1577 chip 1.17 TRC_CIMOM_HANDLE,
1578 Tracer::LEVEL2,
1579 "Incorrect response type in CIMOMHandle");
1580
1581 throw CIMException(CIM_ERR_FAILED);
1582 }
|
1583 david.dillard 1.9 }
|
1584 kumpf 1.26 catch (CIMException &)
|
1585 david.dillard 1.9 {
|
1586 chip 1.17 PEG_METHOD_EXIT();
|
1587 david.dillard 1.9 throw;
1588 }
|
1589 kumpf 1.26 catch (...)
|
1590 david.dillard 1.9 {
|
1591 marek 1.27 PEG_TRACE_CSTRING(
|
1592 chip 1.17 TRC_CIMOM_HANDLE,
1593 Tracer::LEVEL2,
|
1594 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1595 chip 1.17
1596 PEG_METHOD_EXIT();
1597 throw CIMException(
1598 CIM_ERR_FAILED,
1599 MessageLoaderParms(
1600 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1601 "Exception caught in CIMOMHandle"));
|
1602 david.dillard 1.9 }
1603
1604 PEG_METHOD_EXIT();
1605 return;
1606 }
1607
1608
1609 CIMValue InternalCIMOMHandleRep::invokeMethod(
1610 const OperationContext & context,
1611 const CIMNamespaceName &nameSpace,
1612 const CIMObjectPath& instanceName,
1613 const CIMName& methodName,
1614 const Array<CIMParamValue>& inParameters,
1615 Array<CIMParamValue>& outParameters)
1616 {
1617 PEG_METHOD_ENTER(TRC_CIMOM_HANDLE, "InternalCIMOMHandleRep::invokeMethod");
1618
1619 CIMInvokeMethodRequestMessage* request =
1620 new CIMInvokeMethodRequestMessage(
1621 XmlWriter::getNextMessageId(),
1622 nameSpace,
1623 david.dillard 1.9 instanceName,
1624 methodName,
1625 inParameters,
|
1626 chip 1.17 QueueIdStack());
1627
1628 // copy and adjust, as needed, the operation context
1629 request->operationContext = _filterOperationContext(context);
|
1630 david.dillard 1.9
|
1631 chip 1.17 AutoPtr<CIMInvokeMethodResponseMessage> response;
|
1632 david.dillard 1.9
1633 try
1634 {
|
1635 chip 1.17 response.reset(dynamic_cast<CIMInvokeMethodResponseMessage*>(
1636 do_request(request)));
1637
|
1638 kumpf 1.26 if (response.get() == 0)
|
1639 chip 1.17 {
|
1640 marek 1.27 PEG_TRACE_CSTRING(
|
1641 chip 1.17 TRC_CIMOM_HANDLE,
1642 Tracer::LEVEL2,
1643 "Incorrect response type in CIMOMHandle");
1644
1645 throw CIMException(CIM_ERR_FAILED);
1646 }
|
1647 david.dillard 1.9 }
|
1648 kumpf 1.26 catch (CIMException &)
|
1649 david.dillard 1.9 {
|
1650 chip 1.17 PEG_METHOD_EXIT();
|
1651 david.dillard 1.9 throw;
1652 }
|
1653 kumpf 1.26 catch (...)
|
1654 david.dillard 1.9 {
|
1655 marek 1.27 PEG_TRACE_CSTRING(
|
1656 chip 1.17 TRC_CIMOM_HANDLE,
1657 Tracer::LEVEL2,
|
1658 david.dillard 1.9 "Exception caught in CIMOMHandle");
|
1659 chip 1.17
1660 PEG_METHOD_EXIT();
1661 throw CIMException(
1662 CIM_ERR_FAILED,
1663 MessageLoaderParms(
1664 "Provider.CIMOMHandle.CAUGHT_EXCEPTION",
1665 "Exception caught in CIMOMHandle"));
|
1666 david.dillard 1.9 }
1667
|
1668 chip 1.17 CIMValue cimValue = response->retValue;
|
1669 kumpf 1.15 outParameters = response->outParameters;
|
1670 david.dillard 1.9
1671 PEG_METHOD_EXIT();
|
1672 kumpf 1.26 return cimValue;
|
1673 david.dillard 1.9 }
1674
1675
1676 //
1677 // Public CIMOMHandle Methods
1678 //
1679
1680 void InternalCIMOMHandleRep::disallowProviderUnload()
1681 {
1682 CIMOMHandleRep::disallowProviderUnload();
1683 }
1684
1685 void InternalCIMOMHandleRep::allowProviderUnload()
1686 {
1687 CIMOMHandleRep::allowProviderUnload();
1688 }
1689
1690 #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES
1691 OperationContext InternalCIMOMHandleRep::getResponseContext()
1692 {
1693 OperationContext ctx;
1694 david.dillard 1.9
1695 Thread* curThrd = Thread::getCurrent();
1696 if (curThrd == NULL)
1697 {
|
1698 kumpf 1.19 ctx.insert(ContentLanguageListContainer(ContentLanguageList()));
|
1699 david.dillard 1.9 }
1700 else
1701 {
|
1702 kumpf 1.19 ContentLanguageList* contentLangs = (ContentLanguageList*)
|
1703 david.dillard 1.9 curThrd->reference_tsd("cimomHandleContentLanguages");
1704 curThrd->dereference_tsd();
|
1705 chip 1.17
|
1706 david.dillard 1.9 if (contentLangs == NULL)
1707 {
|
1708 kumpf 1.19 ctx.insert(ContentLanguageListContainer(ContentLanguageList()));
|
1709 david.dillard 1.9 }
1710 else
1711 {
1712 ctx.insert(ContentLanguageListContainer(*contentLangs));
1713 // delete the old tsd to free the memory
1714 curThrd->delete_tsd("cimomHandleContentLanguages");
1715 }
1716 }
1717
1718 return ctx;
1719 }
1720 #endif
1721
1722 PEGASUS_NAMESPACE_END
|