(file) Return to InternalCIMOMHandleRep.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Provider

   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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2