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

   1 martin 1.30 //%LICENSE////////////////////////////////////////////////////////////////
   2 martin 1.31 //
   3 martin 1.30 // 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.31 //
  10 martin 1.30 // 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.31 //
  17 martin 1.30 // The above copyright notice and this permission notice shall be included
  18             // in all copies or substantial portions of the Software.
  19 martin 1.31 //
  20 martin 1.30 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  21 martin 1.31 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  22 martin 1.30 // 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.31 //
  28 martin 1.30 //////////////////////////////////////////////////////////////////////////
  29 schuur 1.1  //
  30             //%/////////////////////////////////////////////////////////////////////////////
  31             
  32             #include "OperationResponseHandler.h"
  33 a.dunfey 1.15 #include "CIMOMHandleContext.h"
  34 chip     1.7  
  35 marek    1.25 #include <Pegasus/Common/Tracer.h>
  36 dave.sudlik 1.24 #include <Pegasus/Common/SharedPtr.h>
  37 a.dunfey    1.15 #include <Pegasus/Provider/CIMOMHandle.h>
  38 venkat.puvvada 1.26 #include <Pegasus/Config/ConfigManager.h>
  39 chip           1.7  
  40 schuur         1.1  PEGASUS_NAMESPACE_BEGIN
  41                     
  42 venkat.puvvada 1.26 static void _initializeNormalizer(
  43                         CIMOperationRequestMessage *request,
  44                         Boolean includeQualifiers,
  45                         Boolean includeClassOrigin,
  46                         ObjectNormalizer &normalizer)
  47                     {
  48 kumpf          1.32     // Attempt to get the cached class definition, normalization is disabled
  49 venkat.puvvada 1.26     // if it does not exist.
  50                         if (request->operationContext.contains(
  51                                 CachedClassDefinitionContainer::NAME))
  52                         {
  53                             CachedClassDefinitionContainer container =
  54                                 request->operationContext.get(
  55                                     CachedClassDefinitionContainer::NAME);
  56 mike           1.28         CIMClass cimClass = container.getClass().clone();
  57 mike           1.29         container = CachedClassDefinitionContainer(cimClass);
  58 venkat.puvvada 1.26         SharedPtr<NormalizerContext> tmpContext(new CIMOMHandleContext());
  59                             ObjectNormalizer tmpNormalizer(
  60                                 cimClass,
  61                                 includeQualifiers,
  62                                 includeClassOrigin,
  63                                 request->nameSpace,
  64                                 tmpContext);
  65                             normalizer = tmpNormalizer;
  66                         }
  67                     }
  68                     
  69 chip           1.7  //
  70                     // OperationResponseHandler
  71                     //
  72                     
  73                     OperationResponseHandler::OperationResponseHandler(
  74 kumpf          1.23     CIMRequestMessage* request,
  75                         CIMResponseMessage* response,
  76 kumpf          1.14     PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
  77 chip           1.7      : _request(request),
  78                         _response(response),
  79 kumpf          1.14     _responseChunkCallback(responseChunkCallback),
  80 chip           1.8      _responseObjectTotal(0),
  81 chip           1.7      _responseMessageTotal(0),
  82 kumpf          1.14     _responseObjectThreshold(0)
  83 brian.campbell 1.3  {
  84                     #ifndef PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD
  85 kumpf          1.23 # define PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD 100
  86 brian.campbell 1.3  #elif PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD  == 0
  87 kumpf          1.23 # undef PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD
  88                     # define PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD  ~0
  89 brian.campbell 1.3  #endif
  90                     
  91 kumpf          1.14     if (!request)
  92 a.dunfey       1.4      {
  93                             _responseObjectThreshold = ~0;
  94                         }
  95 kumpf          1.23     else
  96 a.dunfey       1.4      {
  97                             _responseObjectThreshold = PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD;
  98 brian.campbell 1.3  
  99                     #ifdef PEGASUS_DEBUG
 100 kumpf          1.23         static const char* responseObjectThreshold =
 101                                 getenv("PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD");
 102 chip           1.7  
 103                             if (responseObjectThreshold)
 104 kumpf          1.23         {
 105                                 Uint32 i = (Uint32)atoi(responseObjectThreshold);
 106 chip           1.7  
 107                                 if (i > 0)
 108                                 {
 109                                     _responseObjectThreshold = i;
 110                                 }
 111 kumpf          1.23         }
 112 brian.campbell 1.3  #endif
 113 a.dunfey       1.4      }
 114 brian.campbell 1.3  }
 115                     
 116                     OperationResponseHandler::~OperationResponseHandler()
 117                     {
 118 kumpf          1.23     _request = 0;
 119                         _response = 0;
 120 brian.campbell 1.3  }
 121                     
 122 kumpf          1.23 CIMRequestMessage* OperationResponseHandler::getRequest() const
 123 chip           1.7  {
 124 kumpf          1.23     return _request;
 125 chip           1.7  }
 126                     
 127 kumpf          1.23 CIMResponseMessage* OperationResponseHandler::getResponse() const
 128 chip           1.7  {
 129 kumpf          1.23     return _response;
 130 chip           1.7  }
 131                     
 132                     void OperationResponseHandler::setStatus(
 133                         const Uint32 code,
 134 kumpf          1.23     const String& message)
 135 chip           1.7  {
 136 kumpf          1.23     _response->cimException =
 137                             PEGASUS_CIM_EXCEPTION(CIMStatusCode(code), message);
 138 chip           1.7  }
 139                     
 140                     void OperationResponseHandler::setStatus(
 141                         const Uint32 code,
 142 kumpf          1.23     const ContentLanguageList& langs,
 143                         const String& message)
 144 chip           1.7  {
 145                         _response->cimException =
 146                             PEGASUS_CIM_EXCEPTION_LANG(
 147                             langs,
 148                             CIMStatusCode(code),
 149                             message);
 150                     }
 151                     
 152 mike           1.22 void OperationResponseHandler::setCIMException(
 153                         const CIMException& cimException)
 154                     {
 155                         // Assign the cimException argument to _response->cimException. Note that
 156                         // there is no need to use the PEGASUS_CIM_EXCEPTION_LANG() macro to create
 157 kumpf          1.32     // a TraceableCIMException since both _response->cimException and
 158 mike           1.22     // cimException are of type CIMException and the TraceableCIMException
 159                         // constructor has no side effects.
 160                         _response->cimException = cimException;
 161                     }
 162                     
 163 kumpf          1.23 Boolean OperationResponseHandler::isAsync() const
 164 chip           1.7  {
 165 kumpf          1.17     return _responseChunkCallback != 0;
 166 chip           1.7  }
 167                     
 168 brian.campbell 1.3  // This is only called from SimpleResponseHandler.deliver() but lives in this
 169                     // class because all asyncronous response must have a "response" pointer
 170                     // to go through. Only operation classes have a response pointer
 171                     void OperationResponseHandler::send(Boolean isComplete)
 172                     {
 173 kumpf          1.20     // It is possible to instantiate this class directly (not a derived
 174                         // class, which would also inherit from SimpleResponseHandler).
 175                         // The caller would do this only if the operation does not have any
 176                         // data to be returned.
 177                     
 178                         SimpleResponseHandler* simpleP =
 179                             dynamic_cast<SimpleResponseHandler*>(this);
 180                         if (simpleP == 0)
 181                         {
 182                             // if there is no data to be returned, then the message should NEVER be
 183                             // incomplete (even on an error)
 184                             PEGASUS_ASSERT(isComplete);
 185 chip           1.7          return;
 186 kumpf          1.20     }
 187 kumpf          1.19 
 188 kumpf          1.20     // some handlers do not send async because their callers cannot handle
 189                         // partial responses. If this is the case, stop here.
 190 brian.campbell 1.3  
 191 kumpf          1.20     if (!isAsync())
 192                         {
 193                             // preserve traditional behavior
 194                             if (isComplete)
 195 chip           1.7          {
 196 kumpf          1.20             if (_response != 0)
 197                                 {
 198                                     _response->operationContext.set(
 199                                         ContentLanguageListContainer(simpleP->getLanguages()));
 200                                 }
 201                                 transfer();
 202 chip           1.7          }
 203                     
 204                             return;
 205 kumpf          1.20     }
 206 brian.campbell 1.3  
 207 kumpf          1.23     SimpleResponseHandler& simple = *simpleP;
 208                         PEGASUS_ASSERT(_response);
 209                         Uint32 objectCount = simple.size();
 210 brian.campbell 1.3  
 211 kumpf          1.23     // have not reached threshold yet
 212                         if ((isComplete == false) && (objectCount < _responseObjectThreshold))
 213 chip           1.7      {
 214                             return;
 215                         }
 216 brian.campbell 1.3  
 217 kumpf          1.23     CIMResponseMessage* response = _response;
 218 brian.campbell 1.3  
 219 kumpf          1.23     // for complete responses, just use the one handed down from caller
 220                         // otherwise, create our own that the caller never sees but is
 221                         // utilized for async responses underneath
 222 brian.campbell 1.3  
 223 kumpf          1.23     if (isComplete == false)
 224 chip           1.7      {
 225                             _response = _request->buildResponse();
 226                         }
 227 brian.campbell 1.3  
 228 kumpf          1.23     _response->setComplete(isComplete);
 229                         _responseObjectTotal += objectCount;
 230 brian.campbell 1.3  
 231 kumpf          1.23     // since we are reusing response for every chunk, keep track of original
 232                         // count
 233                         _response->setIndex(_responseMessageTotal++);
 234                     
 235                         // set the originally allocated response to one more than the current.
 236                         // The reason for doing this is proactive in case of an exception. This
 237                         // allows the last response to be set as it may not re-enter this code.
 238 brian.campbell 1.3  
 239 kumpf          1.23     if (isComplete == false)
 240 chip           1.7      {
 241                             response->setIndex(_responseMessageTotal);
 242                         }
 243 brian.campbell 1.3  
 244 kumpf          1.23     validate();
 245 brian.campbell 1.3  
 246 kumpf          1.23     if (_response->cimException.getCode() != CIM_ERR_SUCCESS)
 247 chip           1.7      {
 248                             simple.clear();
 249                         }
 250                     
 251 marek          1.25     PEG_TRACE((
 252                             TRC_PROVIDERMANAGER,
 253                             Tracer::LEVEL4,
 254                             "%s::transfer",
 255                             (const char*) getClass().getCString()));
 256 chip           1.7  
 257 kumpf          1.23     transfer();
 258                         simple.clear();
 259 brian.campbell 1.3  
 260 kumpf          1.23     _response->operationContext.set(
 261                             ContentLanguageListContainer(simple.getLanguages()));
 262 brian.campbell 1.3  
 263 kumpf          1.23     // call thru ProviderManager to get externally declared entry point
 264 brian.campbell 1.3  
 265 kumpf          1.23     if (isComplete == false)
 266                         {
 267                             _responseChunkCallback(_request, _response);
 268                         }
 269 brian.campbell 1.3  
 270 kumpf          1.23     // put caller's allocated response back in place. Note that _response
 271                         // is INVALID after sending because it has been deleted externally
 272 brian.campbell 1.3  
 273 kumpf          1.23     _response = response;
 274 brian.campbell 1.3  }
 275                     
 276 kumpf          1.23 void OperationResponseHandler::transfer()
 277 chip           1.7  {
 278                     }
 279                     
 280 kumpf          1.23 void OperationResponseHandler::validate()
 281 chip           1.7  {
 282                     }
 283                     
 284 kumpf          1.23 String OperationResponseHandler::getClass() const
 285 chip           1.7  {
 286 kumpf          1.23     return String("OperationResponseHandler");
 287 chip           1.7  }
 288                     
 289 kumpf          1.23 Uint32 OperationResponseHandler::getResponseObjectTotal() const
 290 chip           1.7  {
 291 kumpf          1.23     return _responseObjectTotal;
 292 chip           1.7  }
 293                     
 294 kumpf          1.23 Uint32 OperationResponseHandler::getResponseMessageTotal() const
 295 chip           1.7  {
 296 kumpf          1.23     return _responseMessageTotal;
 297 chip           1.7  }
 298                     
 299 kumpf          1.23 Uint32 OperationResponseHandler::getResponseObjectThreshold() const
 300 chip           1.7  {
 301 kumpf          1.23     return _responseObjectThreshold;
 302 chip           1.7  }
 303                     
 304                     //
 305                     // GetInstanceResponseHandler
 306                     //
 307                     
 308                     GetInstanceResponseHandler::GetInstanceResponseHandler(
 309 kumpf          1.14     CIMGetInstanceRequestMessage* request,
 310                         CIMGetInstanceResponseMessage* response,
 311                         PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 312                         : OperationResponseHandler(request, response, responseChunkCallback)
 313 chip           1.7  {
 314 venkat.puvvada 1.26     _initializeNormalizer(
 315                             request,
 316 a.dunfey       1.15         request->includeQualifiers,
 317                             request->includeClassOrigin,
 318 venkat.puvvada 1.26         _normalizer);
 319 chip           1.7  }
 320                     
 321 kumpf          1.23 void GetInstanceResponseHandler::deliver(const CIMInstance& cimInstance)
 322 chip           1.7  {
 323 kumpf          1.23     if (cimInstance.isUninitialized())
 324 chip           1.7      {
 325                             MessageLoaderParms message(
 326                                 "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 327                                 "The object is not initialized.");
 328                     
 329                             throw CIMException(CIM_ERR_FAILED, message);
 330                         }
 331                     
 332 kumpf          1.23     if (SimpleInstanceResponseHandler::size() != 0)
 333 chip           1.9      {
 334                             MessageLoaderParms message(
 335                                 "Server.OperationResponseHandler.TOO_MANY_OBJECTS_DELIVERED",
 336                                 "Too many objects delivered.");
 337                     
 338                             throw CIMException(CIM_ERR_FAILED, message);
 339                         }
 340                     
 341 venkat.puvvada 1.26     CIMInstance localInstance(cimInstance);
 342 kumpf          1.23 #ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION
 343 chip           1.7      // The normalizer expects an object path embedded in instances even
 344                         // though it is not required by this operation. Use the requested
 345                         // object path is missing from the instance.
 346 kumpf          1.23     if (localInstance.getPath().getKeyBindings().size() == 0)
 347 chip           1.7      {
 348                             // ATTN: should clone before modification
 349 kumpf          1.23         localInstance.setPath(static_cast<CIMGetInstanceRequestMessage*>(
 350                                 getRequest())->instanceName);
 351 chip           1.7      }
 352 venkat.puvvada 1.26 #endif
 353 kumpf          1.23     SimpleInstanceResponseHandler::deliver(
 354                             _normalizer.processInstance(localInstance));
 355 chip           1.7  }
 356                     
 357 kumpf          1.23 void GetInstanceResponseHandler::complete()
 358 chip           1.9  {
 359 kumpf          1.23     if (SimpleInstanceResponseHandler::size() == 0)
 360 chip           1.9      {
 361                             MessageLoaderParms message(
 362                                 "Server.OperationResponseHandler.TOO_FEW_OBJECTS_DELIVERED",
 363                                 "Too few objects delivered.");
 364 venkat.puvvada 1.21         // Provider claims success, no instances returned. -V see Bug #4104
 365                             setStatus(CIM_ERR_NOT_FOUND);
 366 chip           1.9          throw CIMException(CIM_ERR_FAILED, message);
 367                         }
 368                     
 369                         SimpleInstanceResponseHandler::complete();
 370                     }
 371                     
 372 kumpf          1.23 String GetInstanceResponseHandler::getClass() const
 373 chip           1.7  {
 374 kumpf          1.23     return String("GetInstanceResponseHandler");
 375 chip           1.7  }
 376                     
 377 kumpf          1.23 void GetInstanceResponseHandler::transfer()
 378 chip           1.7  {
 379 kumpf          1.23     if (size() > 0)
 380 chip           1.7      {
 381 kumpf          1.23         CIMGetInstanceResponseMessage& msg =
 382                                 *static_cast<CIMGetInstanceResponseMessage*>(getResponse());
 383 chip           1.7  
 384 r.kieninger    1.33         msg.getResponseData().setCimInstance(getObjects()[0]);
 385 chip           1.7      }
 386                     }
 387                     
 388 kumpf          1.23 void GetInstanceResponseHandler::validate()
 389 chip           1.7  {
 390 kumpf          1.23     if (getResponseObjectTotal() == 0)
 391 chip           1.7      {
 392                             // error? provider claims success,
 393                             // but did not deliver an instance.
 394                             setStatus(CIM_ERR_NOT_FOUND);
 395                         }
 396                     }
 397                     
 398                     //
 399                     // EnumerateInstancesResponseHandler
 400                     //
 401                     
 402                     EnumerateInstancesResponseHandler::EnumerateInstancesResponseHandler(
 403 kumpf          1.14     CIMEnumerateInstancesRequestMessage* request,
 404                         CIMEnumerateInstancesResponseMessage* response,
 405                         PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 406                         : OperationResponseHandler(request, response, responseChunkCallback)
 407 chip           1.7  {
 408 venkat.puvvada 1.26     _initializeNormalizer(
 409                             request,
 410 a.dunfey       1.15         request->includeQualifiers,
 411                             request->includeClassOrigin,
 412 venkat.puvvada 1.26         _normalizer);
 413 chip           1.7  }
 414                     
 415 kumpf          1.23 void EnumerateInstancesResponseHandler::deliver(const CIMInstance& cimInstance)
 416 chip           1.7  {
 417 kumpf          1.23     if (cimInstance.isUninitialized())
 418 chip           1.7      {
 419                             MessageLoaderParms message(
 420                                 "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 421                                 "The object is not initialized.");
 422                     
 423                             throw CIMException(CIM_ERR_FAILED, message);
 424                         }
 425                     
 426 kumpf          1.23     SimpleInstanceResponseHandler::deliver(
 427                             _normalizer.processInstance(cimInstance));
 428 chip           1.7  }
 429                     
 430 r.kieninger    1.33.2.1 void EnumerateInstancesResponseHandler::deliver(const SCMOInstance& cimInstance)
 431                         {
 432                             // --rk-> TBD
 433                             /*if (cimInstance.isUninitialized())
 434                             {
 435                                 MessageLoaderParms message(
 436                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 437                                     "The object is not initialized.");
 438                         
 439                                 throw CIMException(CIM_ERR_FAILED, message);
 440                             }*/
 441                         
 442                             //fprintf(stderr, "EnumerateInstancesResponseHandler::deliver\n");
 443                         
 444                             SimpleInstanceResponseHandler::deliver(cimInstance);
 445                             //    _normalizer.processInstance(cimInstance));
 446                         }
 447                         
 448 kumpf          1.23     String EnumerateInstancesResponseHandler::getClass() const
 449 chip           1.7      {
 450 kumpf          1.23         return String("EnumerateInstancesResponseHandler");
 451 chip           1.7      }
 452                         
 453 kumpf          1.23     void EnumerateInstancesResponseHandler::transfer()
 454 chip           1.7      {
 455 kumpf          1.23         CIMEnumerateInstancesResponseMessage& msg =
 456                                 *static_cast<CIMEnumerateInstancesResponseMessage*>(getResponse());
 457 chip           1.7      
 458 r.kieninger    1.33.2.1     //fprintf(stderr, "EnumerateInstancesResponseHandler::transfer\n");
 459                             msg.getResponseData().setSCMOInstances(getSCMOObjects());
 460 chip           1.7      }
 461                         
 462                         //
 463                         // EnumerateInstanceNamesResponseHandler
 464                         //
 465                         
 466                         EnumerateInstanceNamesResponseHandler::EnumerateInstanceNamesResponseHandler(
 467 kumpf          1.14         CIMEnumerateInstanceNamesRequestMessage* request,
 468                             CIMEnumerateInstanceNamesResponseMessage* response,
 469                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 470                             : OperationResponseHandler(request, response, responseChunkCallback)
 471 chip           1.7      {
 472 venkat.puvvada 1.26         _initializeNormalizer(
 473                                 request,
 474 a.dunfey       1.15             false,
 475                                 false,
 476 venkat.puvvada 1.26             _normalizer);
 477 chip           1.7      }
 478                         
 479 kumpf          1.23     void EnumerateInstanceNamesResponseHandler::deliver(
 480                             const CIMObjectPath& cimObjectPath)
 481 chip           1.7      {
 482 kumpf          1.23         if (cimObjectPath.getClassName().isNull())
 483 chip           1.7          {
 484                                 MessageLoaderParms message(
 485                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 486                                     "The object is not initialized.");
 487                         
 488                                 throw CIMException(CIM_ERR_FAILED, message);
 489                             }
 490                         
 491 kumpf          1.23         SimpleObjectPathResponseHandler::deliver(
 492                                 _normalizer.processInstanceObjectPath(cimObjectPath));
 493 chip           1.7      }
 494                         
 495 r.kieninger    1.33.2.1 void EnumerateInstanceNamesResponseHandler::deliver(
 496                             const SCMOInstance& scmoObjectPath)
 497                         {
 498                             if (scmoObjectPath.getClassName()==NULL)
 499                             {
 500                                 MessageLoaderParms message(
 501                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 502                                     "The object is not initialized.");
 503                         
 504                                 throw CIMException(CIM_ERR_FAILED, message);
 505                             }
 506                         
 507                             SimpleObjectPathResponseHandler::deliver(scmoObjectPath);
 508                         //        _normalizer.processInstanceObjectPath(cimObjectPath));
 509                         }
 510                         
 511 kumpf          1.23     String EnumerateInstanceNamesResponseHandler::getClass() const
 512 chip           1.7      {
 513 kumpf          1.23         return String("EnumerateInstanceNamesResponseHandler");
 514 chip           1.7      }
 515                         
 516 kumpf          1.23     void EnumerateInstanceNamesResponseHandler::transfer()
 517 chip           1.7      {
 518 kumpf          1.23         CIMEnumerateInstanceNamesResponseMessage& msg =
 519                                 *static_cast<CIMEnumerateInstanceNamesResponseMessage*>(getResponse());
 520 chip           1.7      
 521 r.kieninger    1.33.2.1     //fprintf(stderr, "EnumerateInstancesResponseHandler::transfer\n");
 522                             msg.getResponseData().setSCMOInstanceNames(getSCMOObjects());
 523                         //    msg.getResponseData().setInstanceNames(getObjects());
 524 chip           1.7      }
 525                         
 526                         //
 527                         // CreateInstanceResponseHandler
 528                         //
 529                         
 530                         CreateInstanceResponseHandler::CreateInstanceResponseHandler(
 531 kumpf          1.14         CIMCreateInstanceRequestMessage* request,
 532                             CIMCreateInstanceResponseMessage* response,
 533                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 534                             : OperationResponseHandler(request, response, responseChunkCallback)
 535 chip           1.7      {
 536                         }
 537                         
 538 kumpf          1.23     void CreateInstanceResponseHandler::deliver(const CIMObjectPath& cimObjectPath)
 539 chip           1.7      {
 540 kumpf          1.23         if (cimObjectPath.getClassName().isNull())
 541 chip           1.7          {
 542                                 MessageLoaderParms message(
 543                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 544                                     "The object is not initialized.");
 545                         
 546                                 throw CIMException(CIM_ERR_FAILED, message);
 547                             }
 548                         
 549 kumpf          1.23         if (SimpleObjectPathResponseHandler::size() != 0)
 550 chip           1.11         {
 551                                 MessageLoaderParms message(
 552                                     "Server.OperationResponseHandler.TOO_MANY_OBJECTS_DELIVERED",
 553                                     "Too many objects delivered.");
 554                         
 555                                 throw CIMException(CIM_ERR_FAILED, message);
 556                             }
 557                         
 558 chip           1.7          SimpleObjectPathResponseHandler::deliver(cimObjectPath);
 559                         }
 560                         
 561 kumpf          1.23     void CreateInstanceResponseHandler::complete()
 562 chip           1.9      {
 563 kumpf          1.23         if (SimpleObjectPathResponseHandler::size() == 0)
 564 chip           1.9          {
 565                                 MessageLoaderParms message(
 566                                     "Server.OperationResponseHandler.TOO_FEW_OBJECTS_DELIVERED",
 567                                     "Too few objects delivered.");
 568                         
 569                                 throw CIMException(CIM_ERR_FAILED, message);
 570                             }
 571                         
 572                             SimpleObjectPathResponseHandler::complete();
 573                         }
 574                         
 575 kumpf          1.23     String CreateInstanceResponseHandler::getClass() const
 576 chip           1.7      {
 577 kumpf          1.23         return String("CreateInstanceResponseHandler");
 578 chip           1.7      }
 579                         
 580                         #if 0
 581                         // ATTN: is it an error to not return instance name?
 582 kumpf          1.23     void CreateInstanceResponseHandler::validate()
 583 chip           1.7      {
 584 kumpf          1.23         if (getResponseObjectTotal() == 0)
 585 chip           1.7          {
 586                                 setStatus(CIM_ERR_NOT_FOUND);
 587                             }
 588                         }
 589                         #endif
 590                         
 591 kumpf          1.23     void CreateInstanceResponseHandler::transfer()
 592 chip           1.7      {
 593 kumpf          1.23         if (size() > 0)
 594 chip           1.7          {
 595 kumpf          1.23             CIMCreateInstanceResponseMessage& msg =
 596                                     *static_cast<CIMCreateInstanceResponseMessage*>(getResponse());
 597 chip           1.7      
 598                                 msg.instanceName = getObjects()[0];
 599                             }
 600                         }
 601                         
 602                         //
 603                         // ModifyInstanceResponseHandler
 604                         //
 605                         
 606                         ModifyInstanceResponseHandler::ModifyInstanceResponseHandler(
 607 kumpf          1.14         CIMModifyInstanceRequestMessage* request,
 608                             CIMModifyInstanceResponseMessage* response,
 609                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 610                             : OperationResponseHandler(request, response, responseChunkCallback)
 611 chip           1.7      {
 612                         }
 613                         
 614 kumpf          1.23     String ModifyInstanceResponseHandler::getClass() const
 615 chip           1.7      {
 616 kumpf          1.23         return String("ModifyInstanceResponseHandler");
 617 chip           1.7      }
 618                         
 619                         //
 620                         // DeleteInstanceResponseHandler
 621                         //
 622                         
 623                         DeleteInstanceResponseHandler::DeleteInstanceResponseHandler(
 624 kumpf          1.14         CIMDeleteInstanceRequestMessage* request,
 625                             CIMDeleteInstanceResponseMessage* response,
 626                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 627                             : OperationResponseHandler(request, response, responseChunkCallback)
 628 chip           1.7      {
 629                         }
 630                         
 631 kumpf          1.23     String DeleteInstanceResponseHandler::getClass() const
 632 chip           1.7      {
 633 kumpf          1.23         return String("DeleteInstanceResponseHandler");
 634 chip           1.7      }
 635                         
 636                         //
 637                         // GetPropertyResponseHandler
 638                         //
 639                         
 640                         GetPropertyResponseHandler::GetPropertyResponseHandler(
 641 kumpf          1.14         CIMGetPropertyRequestMessage* request,
 642                             CIMGetPropertyResponseMessage* response,
 643                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 644                             : OperationResponseHandler(request, response, responseChunkCallback)
 645 chip           1.7      {
 646                         }
 647                         
 648 kumpf          1.23     void GetPropertyResponseHandler::deliver(const CIMValue& cimValue)
 649 chip           1.7      {
 650 kumpf          1.23         if (cimValue.isNull())
 651 chip           1.7          {
 652                                 MessageLoaderParms message(
 653                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 654                                     "The object is not initialized.");
 655                         
 656                                 throw CIMException(CIM_ERR_FAILED, message);
 657                             }
 658                         
 659                             SimpleValueResponseHandler::deliver(cimValue);
 660                         }
 661                         
 662 kumpf          1.23     String GetPropertyResponseHandler::getClass() const
 663 chip           1.7      {
 664 kumpf          1.23         return String("GetPropertyResponseHandler");
 665 chip           1.7      }
 666                         
 667 kumpf          1.23     void GetPropertyResponseHandler::transfer()
 668 chip           1.7      {
 669 kumpf          1.23         if (size() > 0)
 670 chip           1.7          {
 671 kumpf          1.23             CIMGetPropertyResponseMessage& msg =
 672                                     *static_cast<CIMGetPropertyResponseMessage*>(getResponse());
 673 chip           1.7      
 674                                 msg.value = getObjects()[0];
 675                             }
 676                         }
 677                         
 678 kumpf          1.23     void GetPropertyResponseHandler::validate()
 679 chip           1.7      {
 680                             // error? provider claims success,
 681                             // but did not deliver an instance.
 682 kumpf          1.23         if (getResponseObjectTotal() == 0)
 683 chip           1.7          {
 684                                 setStatus(CIM_ERR_NOT_FOUND);
 685                             }
 686                         }
 687                         
 688                         //
 689                         // SetPropertyResponseHandler
 690                         //
 691                         
 692                         SetPropertyResponseHandler::SetPropertyResponseHandler(
 693 kumpf          1.14         CIMSetPropertyRequestMessage* request,
 694                             CIMSetPropertyResponseMessage* response,
 695                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 696                             : OperationResponseHandler(request, response, responseChunkCallback)
 697 chip           1.7      {
 698                         }
 699                         
 700 kumpf          1.23     String SetPropertyResponseHandler::getClass() const
 701 chip           1.7      {
 702 kumpf          1.23         return String("SetPropertyResponseHandler");
 703 chip           1.7      }
 704                         
 705                         //
 706                         // ExecQueryResponseHandler
 707                         //
 708                         
 709                         ExecQueryResponseHandler::ExecQueryResponseHandler(
 710 kumpf          1.14         CIMExecQueryRequestMessage* request,
 711                             CIMExecQueryResponseMessage* response,
 712                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 713                             : OperationResponseHandler(request, response, responseChunkCallback)
 714 chip           1.7      {
 715                         }
 716                         
 717 kumpf          1.23     void ExecQueryResponseHandler::deliver(const CIMInstance& cimInstance)
 718 chip           1.7      {
 719 kumpf          1.23         if (cimInstance.isUninitialized())
 720 chip           1.7          {
 721                                 MessageLoaderParms message(
 722                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 723                                     "The object is not initialized.");
 724                         
 725                                 throw CIMException(CIM_ERR_FAILED, message);
 726                             }
 727                         
 728                             SimpleInstance2ObjectResponseHandler::deliver(cimInstance);
 729                         }
 730                         
 731 r.kieninger    1.33.2.1 void ExecQueryResponseHandler::deliver(const SCMOInstance& cimInstance)
 732                         {
 733                             /*if (cimInstance.isUninitialized())
 734                             {
 735                                 MessageLoaderParms message(
 736                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 737                                     "The object is not initialized.");
 738                         
 739                                 throw CIMException(CIM_ERR_FAILED, message);
 740                             }*/
 741                         
 742                             SimpleInstance2ObjectResponseHandler::deliver(cimInstance);
 743                         }
 744                         
 745 kumpf          1.23     String ExecQueryResponseHandler::getClass() const
 746 chip           1.7      {
 747 kumpf          1.23         return String("ExecQueryResponseHandler");
 748 chip           1.7      }
 749                         
 750 kumpf          1.23     void ExecQueryResponseHandler::transfer()
 751 chip           1.7      {
 752 kumpf          1.23         CIMExecQueryResponseMessage& msg =
 753                                 *static_cast<CIMExecQueryResponseMessage*>(getResponse());
 754 chip           1.7      
 755 r.kieninger    1.33         msg.getResponseData().setCIMObjects(getObjects());
 756 chip           1.7      }
 757                         
 758 kumpf          1.23     Boolean ExecQueryResponseHandler::isAsync() const
 759 chip           1.7      {
 760 kumpf          1.23         return false;
 761 chip           1.7      }
 762                         
 763                         //
 764                         // AssociatorsResponseHandler
 765                         //
 766                         
 767                         AssociatorsResponseHandler::AssociatorsResponseHandler(
 768 kumpf          1.14         CIMAssociatorsRequestMessage* request,
 769                             CIMAssociatorsResponseMessage* response,
 770                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 771                             : OperationResponseHandler(request, response, responseChunkCallback)
 772 chip           1.7      {
 773                         }
 774                         
 775 kumpf          1.23     void AssociatorsResponseHandler::deliver(const CIMObject& cimObject)
 776 chip           1.7      {
 777 kumpf          1.23         if (cimObject.isUninitialized())
 778 chip           1.7          {
 779                                 MessageLoaderParms message(
 780                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 781                                     "The object is not initialized.");
 782                         
 783                                 throw CIMException(CIM_ERR_FAILED, message);
 784                             }
 785                         
 786                             SimpleObjectResponseHandler::deliver(cimObject);
 787                         }
 788                         
 789 kumpf          1.23     String AssociatorsResponseHandler::getClass() const
 790 chip           1.7      {
 791 kumpf          1.23         return String("AssociatorsResponseHandler");
 792 chip           1.7      }
 793                         
 794 kumpf          1.23     void AssociatorsResponseHandler::transfer()
 795 chip           1.7      {
 796 kumpf          1.23         CIMAssociatorsResponseMessage& msg =
 797                                 *static_cast<CIMAssociatorsResponseMessage*>(getResponse());
 798 chip           1.7      
 799 r.kieninger    1.33         msg.getResponseData().setCIMObjects(getObjects());
 800 chip           1.7      }
 801                         
 802                         //
 803                         // AssociatorNamesResponseHandler
 804                         //
 805                         
 806                         AssociatorNamesResponseHandler::AssociatorNamesResponseHandler(
 807 kumpf          1.14         CIMAssociatorNamesRequestMessage* request,
 808                             CIMAssociatorNamesResponseMessage* response,
 809                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 810                             : OperationResponseHandler(request, response, responseChunkCallback)
 811 chip           1.7      {
 812                         }
 813                         
 814 kumpf          1.23     void AssociatorNamesResponseHandler::deliver(const CIMObjectPath& cimObjectPath)
 815 chip           1.7      {
 816 kumpf          1.23         if (cimObjectPath.getClassName().isNull())
 817 chip           1.7          {
 818                                 MessageLoaderParms message(
 819                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 820                                     "The object is not initialized.");
 821                         
 822                                 throw CIMException(CIM_ERR_FAILED, message);
 823                             }
 824                         
 825                             SimpleObjectPathResponseHandler::deliver(cimObjectPath);
 826                         }
 827                         
 828 kumpf          1.23     String AssociatorNamesResponseHandler::getClass() const
 829 chip           1.7      {
 830 kumpf          1.23         return String("AssociatorNamesResponseHandler");
 831 chip           1.7      }
 832                         
 833 kumpf          1.23     void AssociatorNamesResponseHandler::transfer()
 834 chip           1.7      {
 835 kumpf          1.23         CIMAssociatorNamesResponseMessage& msg =
 836                                 *static_cast<CIMAssociatorNamesResponseMessage*>(getResponse());
 837 chip           1.7      
 838                             msg.objectNames = getObjects();
 839                         }
 840                         
 841                         //
 842                         // ReferencesResponseHandler
 843                         //
 844                         
 845                         ReferencesResponseHandler::ReferencesResponseHandler(
 846 kumpf          1.14         CIMReferencesRequestMessage* request,
 847                             CIMReferencesResponseMessage* response,
 848                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 849                             : OperationResponseHandler(request, response, responseChunkCallback)
 850 chip           1.7      {
 851                         }
 852                         
 853 kumpf          1.23     void ReferencesResponseHandler::deliver(const CIMObject& cimObject)
 854 chip           1.7      {
 855 kumpf          1.23         if (cimObject.isUninitialized())
 856 chip           1.7          {
 857                                 MessageLoaderParms message(
 858                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 859                                     "The object is not initialized.");
 860                         
 861                                 throw CIMException(CIM_ERR_FAILED, message);
 862                             }
 863                         
 864                             SimpleObjectResponseHandler::deliver(cimObject);
 865                         }
 866                         
 867 kumpf          1.23     String ReferencesResponseHandler::getClass() const
 868 chip           1.7      {
 869 kumpf          1.23         return String("ReferencesResponseHandler");
 870 chip           1.7      }
 871                         
 872 kumpf          1.23     void ReferencesResponseHandler::transfer()
 873 chip           1.7      {
 874 kumpf          1.23         CIMReferencesResponseMessage& msg =
 875                                 *static_cast<CIMReferencesResponseMessage*>(getResponse());
 876 chip           1.7      
 877                             msg.cimObjects = getObjects();
 878                         }
 879                         
 880                         //
 881                         // ReferenceNamesResponseHandler
 882                         //
 883                         
 884                         ReferenceNamesResponseHandler::ReferenceNamesResponseHandler(
 885 kumpf          1.14         CIMReferenceNamesRequestMessage* request,
 886                             CIMReferenceNamesResponseMessage* response,
 887                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 888                             : OperationResponseHandler(request, response, responseChunkCallback)
 889 chip           1.7      {
 890                         }
 891                         
 892 kumpf          1.23     void ReferenceNamesResponseHandler::deliver(const CIMObjectPath& cimObjectPath)
 893 chip           1.7      {
 894 kumpf          1.23         if (cimObjectPath.getClassName().isNull())
 895 chip           1.7          {
 896                                 MessageLoaderParms message(
 897                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 898                                     "The object is not initialized.");
 899                         
 900                                 throw CIMException(CIM_ERR_FAILED, message);
 901                             }
 902                         
 903                             SimpleObjectPathResponseHandler::deliver(cimObjectPath);
 904                         }
 905                         
 906 kumpf          1.23     String ReferenceNamesResponseHandler::getClass() const
 907 chip           1.7      {
 908 kumpf          1.23         return String("ReferenceNamesResponseHandler");
 909 chip           1.7      }
 910                         
 911 kumpf          1.23     void ReferenceNamesResponseHandler::transfer()
 912 chip           1.7      {
 913 kumpf          1.23         CIMReferenceNamesResponseMessage& msg =
 914                                 *static_cast<CIMReferenceNamesResponseMessage*>(getResponse());
 915 chip           1.7      
 916                             msg.objectNames = getObjects();
 917                         }
 918                         
 919                         //
 920                         // InvokeMethodResponseHandler
 921                         //
 922                         
 923                         InvokeMethodResponseHandler::InvokeMethodResponseHandler(
 924 kumpf          1.14         CIMInvokeMethodRequestMessage* request,
 925                             CIMInvokeMethodResponseMessage* response,
 926                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 927                             : OperationResponseHandler(request, response, responseChunkCallback)
 928 chip           1.7      {
 929                         }
 930                         
 931 kumpf          1.23     void InvokeMethodResponseHandler::deliverParamValue(
 932                             const CIMParamValue& cimParamValue)
 933 chip           1.7      {
 934 kumpf          1.23         if (cimParamValue.isUninitialized())
 935 chip           1.7          {
 936                                 MessageLoaderParms message(
 937                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 938                                     "The object is not initialized.");
 939                         
 940                                 throw CIMException(CIM_ERR_FAILED, message);
 941                             }
 942                         
 943                             SimpleMethodResultResponseHandler::deliverParamValue(cimParamValue);
 944                         }
 945                         
 946 kumpf          1.23     void InvokeMethodResponseHandler::deliver(const CIMValue& cimValue)
 947 chip           1.7      {
 948 kumpf          1.23         if (cimValue.isNull())
 949 chip           1.7          {
 950                                 MessageLoaderParms message(
 951                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
 952                                     "The object is not initialized.");
 953                         
 954                                 throw CIMException(CIM_ERR_FAILED, message);
 955                             }
 956                         
 957                             SimpleMethodResultResponseHandler::deliver(cimValue);
 958                         }
 959                         
 960 kumpf          1.23     String InvokeMethodResponseHandler::getClass() const
 961 chip           1.7      {
 962 kumpf          1.23         return String("InvokeMethodResponseHandler");
 963 chip           1.7      }
 964                         
 965 kumpf          1.23     void InvokeMethodResponseHandler::transfer()
 966 chip           1.7      {
 967 kumpf          1.23         CIMInvokeMethodResponseMessage& msg =
 968                                 *static_cast<CIMInvokeMethodResponseMessage*>(getResponse());
 969 chip           1.7      
 970                             msg.outParameters = getParamValues();
 971                         
 972                             // ATTN-RK-20020903: Is it legal for the return value to be null?
 973                             // if not, then the check must be done here since deliver() works off the
 974                             // virtual size, which refers to out parameters!
 975                             msg.retValue = getReturnValue();
 976                         }
 977                         
 978                         //
 979                         // EnableIndicationsResponseHandler
 980                         //
 981                         
 982                         EnableIndicationsResponseHandler::EnableIndicationsResponseHandler(
 983 kumpf          1.14         CIMRequestMessage* request,
 984                             CIMResponseMessage* response,
 985 kumpf          1.17         const CIMInstance& provider,
 986 kumpf          1.14         PEGASUS_INDICATION_CALLBACK_T indicationCallback,
 987                             PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback)
 988                             : OperationResponseHandler(request, response, responseChunkCallback),
 989                               _indicationCallback(indicationCallback)
 990 chip           1.7      {
 991                             _provider = provider;
 992                         }
 993                         
 994 kumpf          1.23     void EnableIndicationsResponseHandler::deliver(
 995                             const CIMIndication& cimIndication)
 996 chip           1.7      {
 997                             OperationContext context;
 998                         
 999                             Array<CIMObjectPath> subscriptionInstanceNames;
1000                         
1001 kumpf          1.23         context.insert(
1002                                 SubscriptionInstanceNamesContainer(subscriptionInstanceNames));
1003 chip           1.7      
1004                             deliver(context, cimIndication);
1005                         }
1006                         
1007 kumpf          1.23     void EnableIndicationsResponseHandler::deliver(
1008                             const OperationContext& context,
1009                             const CIMIndication& cimIndication)
1010 chip           1.7      {
1011 kumpf          1.23         if (cimIndication.isUninitialized())
1012 chip           1.7          {
1013                                 MessageLoaderParms message(
1014                                     "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION",
1015                                     "The object is not initialized.");
1016                         
1017                                 throw CIMException(CIM_ERR_FAILED, message);
1018                             }
1019                         
1020                             // ATTN: temporarily convert indication to instance
1021                             CIMInstance cimInstance(cimIndication);
1022                         
1023                             //  Get list of subscription instance names from context
1024                             Array<CIMObjectPath> subscriptionInstanceNames;
1025                         
1026 kumpf          1.23         if (context.contains(SubscriptionInstanceNamesContainer::NAME))
1027 chip           1.7          {
1028                                 SubscriptionInstanceNamesContainer container =
1029                                     context.get(SubscriptionInstanceNamesContainer::NAME);
1030                         
1031                                 subscriptionInstanceNames = container.getInstanceNames();
1032                             }
1033 a.dunfey       1.16         else
1034 chip           1.7          {
1035                                 subscriptionInstanceNames.clear();
1036                             }
1037                         
1038 kumpf          1.12         ContentLanguageList contentLangs;
1039 chip           1.7      
1040 kumpf          1.23         if (context.contains(ContentLanguageListContainer::NAME))
1041 chip           1.7          {
1042                                 // Get the Content-Language for this indication.  The provider
1043                                 // does not have to add specify a language for the indication.
1044                                 ContentLanguageListContainer langContainer =
1045                                     context.get(ContentLanguageListContainer::NAME);
1046                         
1047                                 contentLangs = langContainer.getLanguages();
1048                             }
1049 a.dunfey       1.16         else
1050 chip           1.7          {
1051                                 // The provider did not explicitly set a Content-Language for
1052                                 // the indication.  Fall back to the lang set in this object.
1053                                 contentLangs = getLanguages();
1054                             }
1055                         
1056                             // create message
1057 kumpf          1.23         CIMProcessIndicationRequestMessage* request =
1058 chip           1.7              new CIMProcessIndicationRequestMessage(
1059                                 XmlWriter::getNextMessageId(),
1060                                 cimInstance.getPath().getNameSpace(),
1061                                 cimInstance,
1062                                 subscriptionInstanceNames,
1063                                 _provider,
1064                                 QueueIdStack());  // Must be filled in by the callback function
1065                         
1066                             request->operationContext = context;
1067                         
1068 kumpf          1.23         if (request->operationContext.contains(ContentLanguageListContainer::NAME))
1069 chip           1.7          {
1070 kumpf          1.23             request->operationContext.set(
1071                                     ContentLanguageListContainer(contentLangs));
1072 chip           1.7          }
1073 a.dunfey       1.16         else
1074 chip           1.7          {
1075 kumpf          1.23             request->operationContext.insert(
1076                                     ContentLanguageListContainer(contentLangs));
1077 chip           1.7          }
1078                         
1079                             _indicationCallback(request);
1080                         }
1081                         
1082 kumpf          1.23     void EnableIndicationsResponseHandler::deliver(
1083                             const Array<CIMIndication>& cimIndications)
1084 chip           1.7      {
1085                             OperationContext context;
1086                         
1087                             deliver(context, cimIndications);
1088                         }
1089                         
1090 kumpf          1.23     void EnableIndicationsResponseHandler::deliver(
1091                             const OperationContext& context,
1092                             const Array<CIMIndication>& cimIndications)
1093 chip           1.7      {
1094 kumpf          1.23         for (Uint32 i = 0, n = cimIndications.size(); i < n; i++)
1095 chip           1.7          {
1096                                 deliver(context, cimIndications[i]);
1097                             }
1098                         }
1099                         
1100 kumpf          1.23     String EnableIndicationsResponseHandler::getClass() const
1101 chip           1.7      {
1102 kumpf          1.23         return String("EnableIndicationsResponseHandler");
1103 chip           1.7      }
1104                         
1105 kumpf          1.23     Boolean EnableIndicationsResponseHandler::isAsync() const
1106 chip           1.7      {
1107 kumpf          1.23         return false;
1108 chip           1.7      }
1109                         
1110 schuur         1.1      PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2