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