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

   1 kumpf 1.1 //%2003////////////////////////////////////////////////////////////////////////
   2           //
   3           // 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           // IBM Corp.; EMC Corporation, The Open Group.
   7           //
   8           // Permission is hereby granted, free of charge, to any person obtaining a copy
   9           // of this software and associated documentation files (the "Software"), to
  10           // deal in the Software without restriction, including without limitation the
  11           // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  12           // sell copies of the Software, and to permit persons to whom the Software is
  13           // furnished to do so, subject to the following conditions:
  14           // 
  15           // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
  16           // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
  17           // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  18           // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  19           // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  20           // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  21           // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  22 kumpf 1.1 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  23           //
  24           //==============================================================================
  25           //
  26           // Author: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
  27           //
  28 se.gupta 1.10 // Modified By: Seema Gupta (gseema@in.ibm.com) for PEP135
  29 kumpf    1.1  //
  30               //%/////////////////////////////////////////////////////////////////////////////
  31               
  32 kumpf    1.9  #include <Pegasus/Common/XmlWriter.h>
  33               #include <Pegasus/Common/OperationContextInternal.h>
  34               
  35 kumpf    1.1  #include "CIMMessageSerializer.h"
  36               
  37               PEGASUS_NAMESPACE_BEGIN
  38               
  39               void CIMMessageSerializer::serialize(Array<Sint8>& out, CIMMessage* cimMessage)
  40               {
  41                   if (cimMessage == 0)
  42                   {
  43                       // No message to serialize
  44                       return;
  45                   }
  46               
  47                   // ATTN: Need to serialize the Message class members?
  48               
  49                   XmlWriter::append(out, "<PGMESSAGE ID=\"");
  50                   XmlWriter::append(out, cimMessage->messageId);
  51                   XmlWriter::append(out, "\" TYPE=\"");
  52                   XmlWriter::append(out, cimMessage->getType());
  53                   XmlWriter::append(out, "\">");
  54               
  55 kumpf    1.11     _serializeOperationContext(out, cimMessage->operationContext);
  56 kumpf    1.1  
  57                   CIMRequestMessage* cimReqMessage;
  58                   cimReqMessage = dynamic_cast<CIMRequestMessage*>(cimMessage);
  59               
  60                   CIMResponseMessage* cimRespMessage;
  61                   cimRespMessage = dynamic_cast<CIMResponseMessage*>(cimMessage);
  62               
  63                   if (cimReqMessage)
  64                   {
  65                       _serializeCIMRequestMessage(out, cimReqMessage);
  66                   }
  67                   else if (cimRespMessage)
  68                   {
  69                       _serializeCIMResponseMessage(out, cimRespMessage);
  70                   }
  71                   else
  72                   {
  73                       // No other CIMMessage types are currently defined
  74                       PEGASUS_ASSERT(0);
  75                   }
  76               
  77 kumpf    1.1      XmlWriter::append(out, "</PGMESSAGE>");
  78               }
  79               
  80               //
  81               // _serializeCIMRequestMessage
  82               //
  83               void CIMMessageSerializer::_serializeCIMRequestMessage(
  84                   Array<Sint8>& out,
  85                   CIMRequestMessage* cimMessage)
  86               {
  87                   PEGASUS_ASSERT(cimMessage != 0);
  88               
  89                   XmlWriter::append(out, "<PGREQ>");
  90               
  91                   _serializeQueueIdStack(out, cimMessage->queueIds);
  92               
  93                   CIMOperationRequestMessage* cimOpReqMessage;
  94                   cimOpReqMessage = dynamic_cast<CIMOperationRequestMessage*>(cimMessage);
  95               
  96                   CIMIndicationRequestMessage* cimIndReqMessage;
  97                   cimIndReqMessage = dynamic_cast<CIMIndicationRequestMessage*>(cimMessage);
  98 kumpf    1.1  
  99                   if (cimOpReqMessage)
 100                   {
 101                       XmlWriter::append(out, "<PGOPREQ>\n");
 102               
 103                       _serializeCIMNamespaceName(out, cimOpReqMessage->nameSpace);
 104                       _serializeCIMName(out, cimOpReqMessage->className);
 105               
 106                       // Encode cimOpReqMessage->providerType as an integer
 107                       XmlWriter::appendValueElement(out, cimOpReqMessage->providerType);
 108               
 109                       switch (cimMessage->getType())
 110                       {
 111                       case CIM_GET_CLASS_REQUEST_MESSAGE:
 112                       case CIM_DELETE_CLASS_REQUEST_MESSAGE:
 113                       case CIM_CREATE_CLASS_REQUEST_MESSAGE:
 114                       case CIM_MODIFY_CLASS_REQUEST_MESSAGE:
 115                       case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE:
 116                       case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE:
 117                       case CIM_GET_QUALIFIER_REQUEST_MESSAGE:
 118                       case CIM_SET_QUALIFIER_REQUEST_MESSAGE:
 119 kumpf    1.1          case CIM_DELETE_QUALIFIER_REQUEST_MESSAGE:
 120                       case CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE:
 121                           // Not implemented.  No provider can support this message type.
 122                           PEGASUS_ASSERT(0);
 123                           break;
 124               
 125                       // Instance operations
 126                       case CIM_GET_INSTANCE_REQUEST_MESSAGE:
 127                           _serializeCIMGetInstanceRequestMessage(
 128                               out, (CIMGetInstanceRequestMessage*)cimMessage);
 129                           break;
 130                       case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
 131                           _serializeCIMDeleteInstanceRequestMessage(
 132                               out, (CIMDeleteInstanceRequestMessage*)cimMessage);
 133                           break;
 134                       case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
 135                           _serializeCIMCreateInstanceRequestMessage(
 136                               out, (CIMCreateInstanceRequestMessage*)cimMessage);
 137                           break;
 138                       case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
 139                           _serializeCIMModifyInstanceRequestMessage(
 140 kumpf    1.1                  out, (CIMModifyInstanceRequestMessage*)cimMessage);
 141                           break;
 142                       case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
 143                           _serializeCIMEnumerateInstancesRequestMessage(
 144                               out, (CIMEnumerateInstancesRequestMessage*)cimMessage);
 145                           break;
 146                       case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
 147                           _serializeCIMEnumerateInstanceNamesRequestMessage(
 148                               out, (CIMEnumerateInstanceNamesRequestMessage*)cimMessage);
 149                           break;
 150                       case CIM_EXEC_QUERY_REQUEST_MESSAGE:
 151                           _serializeCIMExecQueryRequestMessage(
 152                               out, (CIMExecQueryRequestMessage*)cimMessage);
 153                           break;
 154               
 155                       // Property operations
 156                       case CIM_GET_PROPERTY_REQUEST_MESSAGE:
 157                           _serializeCIMGetPropertyRequestMessage(
 158                               out, (CIMGetPropertyRequestMessage*)cimMessage);
 159                           break;
 160                       case CIM_SET_PROPERTY_REQUEST_MESSAGE:
 161 kumpf    1.1              _serializeCIMSetPropertyRequestMessage(
 162                               out, (CIMSetPropertyRequestMessage*)cimMessage);
 163                           break;
 164               
 165                       // Association operations
 166                       case CIM_ASSOCIATORS_REQUEST_MESSAGE:
 167                           _serializeCIMAssociatorsRequestMessage(
 168                               out, (CIMAssociatorsRequestMessage*)cimMessage);
 169                           break;
 170                       case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
 171                           _serializeCIMAssociatorNamesRequestMessage(
 172                               out, (CIMAssociatorNamesRequestMessage*)cimMessage);
 173                           break;
 174                       case CIM_REFERENCES_REQUEST_MESSAGE:
 175                           _serializeCIMReferencesRequestMessage(
 176                               out, (CIMReferencesRequestMessage*)cimMessage);
 177                           break;
 178                       case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
 179                           _serializeCIMReferenceNamesRequestMessage(
 180                               out, (CIMReferenceNamesRequestMessage*)cimMessage);
 181                           break;
 182 kumpf    1.1  
 183                       // Method operations
 184                       case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
 185                           _serializeCIMInvokeMethodRequestMessage(
 186                               out, (CIMInvokeMethodRequestMessage*)cimMessage);
 187                           break;
 188               
 189                       default:
 190                           PEGASUS_ASSERT(0);
 191                       }
 192               
 193                       XmlWriter::append(out, "</PGOPREQ>");
 194                   }
 195                   else if (cimIndReqMessage)
 196                   {
 197                       XmlWriter::append(out, "<PGINDREQ>");
 198               
 199                       switch (cimMessage->getType())
 200                       {
 201                       case CIM_ENABLE_INDICATIONS_REQUEST_MESSAGE:
 202                           _serializeCIMEnableIndicationsRequestMessage(
 203 kumpf    1.1                  out, (CIMEnableIndicationsRequestMessage*)cimMessage);
 204                           break;
 205                       case CIM_DISABLE_INDICATIONS_REQUEST_MESSAGE:
 206                           _serializeCIMDisableIndicationsRequestMessage(
 207                               out, (CIMDisableIndicationsRequestMessage*)cimMessage);
 208                           break;
 209                       case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE:
 210                           _serializeCIMCreateSubscriptionRequestMessage(
 211                               out, (CIMCreateSubscriptionRequestMessage*)cimMessage);
 212                           break;
 213                       case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE:
 214                           _serializeCIMModifySubscriptionRequestMessage(
 215                               out, (CIMModifySubscriptionRequestMessage*)cimMessage);
 216                           break;
 217                       case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE:
 218                           _serializeCIMDeleteSubscriptionRequestMessage(
 219                               out, (CIMDeleteSubscriptionRequestMessage*)cimMessage);
 220                           break;
 221                       default:
 222                           PEGASUS_ASSERT(0);
 223                       }
 224 kumpf    1.1  
 225                       XmlWriter::append(out, "</PGINDREQ>");
 226                   }
 227                   else    // Other message types
 228                   {
 229                       XmlWriter::append(out, "<PGOTHERREQ>");
 230               
 231                       switch (cimMessage->getType())
 232                       {
 233                       case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:
 234                           _serializeCIMExportIndicationRequestMessage(
 235                               out, (CIMExportIndicationRequestMessage*)cimMessage);
 236                           break;
 237                       case CIM_PROCESS_INDICATION_REQUEST_MESSAGE:
 238                           _serializeCIMProcessIndicationRequestMessage(
 239                               out, (CIMProcessIndicationRequestMessage*)cimMessage);
 240                           break;
 241                       case CIM_NOTIFY_PROVIDER_REGISTRATION_REQUEST_MESSAGE:
 242                           // ATTN: No need to serialize this yet
 243                           PEGASUS_ASSERT(0);
 244                           //_serializeCIMNotifyProviderRegistrationRequestMessage(
 245 kumpf    1.1              //    out, (CIMNotifyProviderRegistrationRequestMessage*)cimMessage);
 246                           break;
 247                       case CIM_NOTIFY_PROVIDER_TERMINATION_REQUEST_MESSAGE:
 248                           // ATTN: No need to serialize this yet
 249                           PEGASUS_ASSERT(0);
 250                           //_serializeCIMNotifyProviderTerminationRequestMessage(
 251                           //    out, (CIMNotifyProviderTerminationRequestMessage*)cimMessage);
 252                           break;
 253                       case CIM_HANDLE_INDICATION_REQUEST_MESSAGE:
 254                           // ATTN: No need to serialize this yet
 255                           PEGASUS_ASSERT(0);
 256                           //_serializeCIMHandleIndicationRequestMessage(
 257                           //    out, (CIMHandleIndicationRequestMessage*)cimMessage);
 258                           break;
 259                       case CIM_DISABLE_MODULE_REQUEST_MESSAGE:
 260                           _serializeCIMDisableModuleRequestMessage(
 261                               out, (CIMDisableModuleRequestMessage*)cimMessage);
 262                           break;
 263                       case CIM_ENABLE_MODULE_REQUEST_MESSAGE:
 264                           _serializeCIMEnableModuleRequestMessage(
 265                               out, (CIMEnableModuleRequestMessage*)cimMessage);
 266 kumpf    1.1              break;
 267                       case CIM_NOTIFY_PROVIDER_ENABLE_REQUEST_MESSAGE:
 268                           // ATTN: No need to serialize this yet
 269                           PEGASUS_ASSERT(0);
 270                           //_serializeCIMNotifyProviderEnableRequestMessage(
 271                           //    out, (CIMNotifyProviderEnableRequestMessage*)cimMessage);
 272                           break;
 273                       case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE:
 274                           _serializeCIMStopAllProvidersRequestMessage(
 275                               out, (CIMStopAllProvidersRequestMessage*)cimMessage);
 276                           break;
 277 kumpf    1.2          case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE:
 278                           _serializeCIMInitializeProviderRequestMessage(
 279                               out, (CIMInitializeProviderRequestMessage*)cimMessage);
 280                           break;
 281 kumpf    1.7          case CIM_INITIALIZE_PROVIDER_AGENT_REQUEST_MESSAGE:
 282                           _serializeCIMInitializeProviderAgentRequestMessage(
 283                               out, (CIMInitializeProviderAgentRequestMessage*)cimMessage);
 284                           break;
 285 kumpf    1.2  
 286 kumpf    1.8          case CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE:
 287                           _serializeCIMNotifyConfigChangeRequestMessage(
 288                               out, (CIMNotifyConfigChangeRequestMessage*)cimMessage);
 289                           break;
 290               
 291 kumpf    1.1          default:
 292                           PEGASUS_ASSERT(0);
 293                       }
 294               
 295                       XmlWriter::append(out, "</PGOTHERREQ>");
 296                   }
 297               
 298                   XmlWriter::append(out, "</PGREQ>");
 299               }
 300               
 301               //
 302               // _serializeCIMResponseMessage
 303               //
 304               void CIMMessageSerializer::_serializeCIMResponseMessage(
 305                   Array<Sint8>& out,
 306                   CIMResponseMessage* cimMessage)
 307               {
 308                   PEGASUS_ASSERT(cimMessage != 0);
 309               
 310                   XmlWriter::append(out, "<PGRESP>\n");
 311               
 312 kumpf    1.1      _serializeQueueIdStack(out, cimMessage->queueIds);
 313                   _serializeCIMException(out, cimMessage->cimException);
 314               
 315                   switch (cimMessage->getType())
 316                   {
 317                       //
 318                       // CIM Operation Response Messages
 319                       //
 320               
 321                       case CIM_GET_CLASS_RESPONSE_MESSAGE:
 322                       case CIM_DELETE_CLASS_RESPONSE_MESSAGE:
 323                       case CIM_CREATE_CLASS_RESPONSE_MESSAGE:
 324                       case CIM_MODIFY_CLASS_RESPONSE_MESSAGE:
 325                       case CIM_ENUMERATE_CLASSES_RESPONSE_MESSAGE:
 326                       case CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE:
 327                       case CIM_GET_QUALIFIER_RESPONSE_MESSAGE:
 328                       case CIM_SET_QUALIFIER_RESPONSE_MESSAGE:
 329                       case CIM_DELETE_QUALIFIER_RESPONSE_MESSAGE:
 330                       case CIM_ENUMERATE_QUALIFIERS_RESPONSE_MESSAGE:
 331                           // Not implemented.  No provider can support this message type.
 332                           PEGASUS_ASSERT(0);
 333 kumpf    1.1              break;
 334               
 335                       // Instance operations
 336                       case CIM_GET_INSTANCE_RESPONSE_MESSAGE:
 337                           _serializeCIMGetInstanceResponseMessage(
 338                               out, (CIMGetInstanceResponseMessage*)cimMessage);
 339                           break;
 340                       case CIM_DELETE_INSTANCE_RESPONSE_MESSAGE:
 341                           _serializeCIMDeleteInstanceResponseMessage(
 342                               out, (CIMDeleteInstanceResponseMessage*)cimMessage);
 343                           break;
 344                       case CIM_CREATE_INSTANCE_RESPONSE_MESSAGE:
 345                           _serializeCIMCreateInstanceResponseMessage(
 346                               out, (CIMCreateInstanceResponseMessage*)cimMessage);
 347                           break;
 348                       case CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE:
 349                           _serializeCIMModifyInstanceResponseMessage(
 350                               out, (CIMModifyInstanceResponseMessage*)cimMessage);
 351                           break;
 352                       case CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:
 353                           _serializeCIMEnumerateInstancesResponseMessage(
 354 kumpf    1.1                  out, (CIMEnumerateInstancesResponseMessage*)cimMessage);
 355                           break;
 356                       case CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE:
 357                           _serializeCIMEnumerateInstanceNamesResponseMessage(
 358                               out, (CIMEnumerateInstanceNamesResponseMessage*)cimMessage);
 359                           break;
 360                       case CIM_EXEC_QUERY_RESPONSE_MESSAGE:
 361                           _serializeCIMExecQueryResponseMessage(
 362                               out, (CIMExecQueryResponseMessage*)cimMessage);
 363                           break;
 364               
 365                       // Property operations
 366                       case CIM_GET_PROPERTY_RESPONSE_MESSAGE:
 367                           _serializeCIMGetPropertyResponseMessage(
 368                               out, (CIMGetPropertyResponseMessage*)cimMessage);
 369                           break;
 370                       case CIM_SET_PROPERTY_RESPONSE_MESSAGE:
 371                           _serializeCIMSetPropertyResponseMessage(
 372                               out, (CIMSetPropertyResponseMessage*)cimMessage);
 373                           break;
 374               
 375 kumpf    1.1          // Association operations
 376                       case CIM_ASSOCIATORS_RESPONSE_MESSAGE:
 377                           _serializeCIMAssociatorsResponseMessage(
 378                               out, (CIMAssociatorsResponseMessage*)cimMessage);
 379                           break;
 380                       case CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE:
 381                           _serializeCIMAssociatorNamesResponseMessage(
 382                               out, (CIMAssociatorNamesResponseMessage*)cimMessage);
 383                           break;
 384                       case CIM_REFERENCES_RESPONSE_MESSAGE:
 385                           _serializeCIMReferencesResponseMessage(
 386                               out, (CIMReferencesResponseMessage*)cimMessage);
 387                           break;
 388                       case CIM_REFERENCE_NAMES_RESPONSE_MESSAGE:
 389                           _serializeCIMReferenceNamesResponseMessage(
 390                               out, (CIMReferenceNamesResponseMessage*)cimMessage);
 391                           break;
 392               
 393                       // Method operations
 394                       case CIM_INVOKE_METHOD_RESPONSE_MESSAGE:
 395                           _serializeCIMInvokeMethodResponseMessage(
 396 kumpf    1.1                  out, (CIMInvokeMethodResponseMessage*)cimMessage);
 397                           break;
 398               
 399                       //
 400                       // CIM Indication Response Messages
 401                       //
 402               
 403                       case CIM_ENABLE_INDICATIONS_RESPONSE_MESSAGE:
 404                           _serializeCIMEnableIndicationsResponseMessage(
 405                               out, (CIMEnableIndicationsResponseMessage*)cimMessage);
 406                           break;
 407                       case CIM_DISABLE_INDICATIONS_RESPONSE_MESSAGE:
 408                           _serializeCIMDisableIndicationsResponseMessage(
 409                               out, (CIMDisableIndicationsResponseMessage*)cimMessage);
 410                           break;
 411                       case CIM_CREATE_SUBSCRIPTION_RESPONSE_MESSAGE:
 412                           _serializeCIMCreateSubscriptionResponseMessage(
 413                               out, (CIMCreateSubscriptionResponseMessage*)cimMessage);
 414                           break;
 415                       case CIM_MODIFY_SUBSCRIPTION_RESPONSE_MESSAGE:
 416                           _serializeCIMModifySubscriptionResponseMessage(
 417 kumpf    1.1                  out, (CIMModifySubscriptionResponseMessage*)cimMessage);
 418                           break;
 419                       case CIM_DELETE_SUBSCRIPTION_RESPONSE_MESSAGE:
 420                           _serializeCIMDeleteSubscriptionResponseMessage(
 421                               out, (CIMDeleteSubscriptionResponseMessage*)cimMessage);
 422                           break;
 423               
 424                       //
 425                       // Other CIM Response Messages
 426                       //
 427               
 428                       case CIM_EXPORT_INDICATION_RESPONSE_MESSAGE:
 429                           _serializeCIMExportIndicationResponseMessage(
 430                               out, (CIMExportIndicationResponseMessage*)cimMessage);
 431                           break;
 432                       case CIM_PROCESS_INDICATION_RESPONSE_MESSAGE:
 433                           _serializeCIMProcessIndicationResponseMessage(
 434                               out, (CIMProcessIndicationResponseMessage*)cimMessage);
 435                           break;
 436                       case CIM_NOTIFY_PROVIDER_REGISTRATION_RESPONSE_MESSAGE:
 437                           // ATTN: No need to serialize this yet
 438 kumpf    1.1              PEGASUS_ASSERT(0);
 439                           //_serializeCIMNotifyProviderRegistrationResponseMessage(
 440                           //    out, (CIMNotifyProviderRegistrationResponseMessage*)cimMessage);
 441                           break;
 442                       case CIM_NOTIFY_PROVIDER_TERMINATION_RESPONSE_MESSAGE:
 443                           // ATTN: No need to serialize this yet
 444                           PEGASUS_ASSERT(0);
 445                           //_serializeCIMNotifyProviderTerminationResponseMessage(
 446                           //    out, (CIMNotifyProviderTerminationResponseMessage*)cimMessage);
 447                           break;
 448                       case CIM_HANDLE_INDICATION_RESPONSE_MESSAGE:
 449                           // ATTN: No need to serialize this yet
 450                           PEGASUS_ASSERT(0);
 451                           //_serializeCIMHandleIndicationResponseMessage(
 452                           //    out, (CIMHandleIndicationResponseMessage*)cimMessage);
 453                           break;
 454                       case CIM_DISABLE_MODULE_RESPONSE_MESSAGE:
 455                           _serializeCIMDisableModuleResponseMessage(
 456                               out, (CIMDisableModuleResponseMessage*)cimMessage);
 457                           break;
 458                       case CIM_ENABLE_MODULE_RESPONSE_MESSAGE:
 459 kumpf    1.1              _serializeCIMEnableModuleResponseMessage(
 460                               out, (CIMEnableModuleResponseMessage*)cimMessage);
 461                           break;
 462                       case CIM_NOTIFY_PROVIDER_ENABLE_RESPONSE_MESSAGE:
 463                           // ATTN: No need to serialize this yet
 464                           PEGASUS_ASSERT(0);
 465                           //_serializeCIMNotifyProviderEnableResponseMessage(
 466                           //    out, (CIMNotifyProviderEnableResponseMessage*)cimMessage);
 467                           break;
 468                       case CIM_STOP_ALL_PROVIDERS_RESPONSE_MESSAGE:
 469                           _serializeCIMStopAllProvidersResponseMessage(
 470                               out, (CIMStopAllProvidersResponseMessage*)cimMessage);
 471                           break;
 472 kumpf    1.2          case CIM_INITIALIZE_PROVIDER_RESPONSE_MESSAGE:
 473                           _serializeCIMInitializeProviderResponseMessage(
 474                               out, (CIMInitializeProviderResponseMessage*)cimMessage);
 475                           break;
 476 kumpf    1.7          case CIM_INITIALIZE_PROVIDER_AGENT_RESPONSE_MESSAGE:
 477                           _serializeCIMInitializeProviderAgentResponseMessage(
 478                               out, (CIMInitializeProviderAgentResponseMessage*)cimMessage);
 479                           break;
 480 kumpf    1.8          case CIM_NOTIFY_CONFIG_CHANGE_RESPONSE_MESSAGE:
 481                           _serializeCIMNotifyConfigChangeResponseMessage(
 482                               out, (CIMNotifyConfigChangeResponseMessage*)cimMessage);
 483                           break;
 484 kumpf    1.2  
 485 kumpf    1.1          default:
 486                           PEGASUS_ASSERT(0);
 487                   }
 488               
 489                   XmlWriter::append(out, "</PGRESP>");
 490               }
 491               
 492               
 493               //
 494               // Utility Methods
 495               //
 496               
 497               //
 498               // _serializeUserInfo consolidates encoding of these common message attributes
 499               //
 500               void CIMMessageSerializer::_serializeUserInfo(
 501                   Array<Sint8>& out,
 502                   const String& authType,
 503                   const String& userName)
 504               {
 505                   XmlWriter::appendValueElement(out, authType);
 506 kumpf    1.1      XmlWriter::appendValueElement(out, userName);
 507               }
 508               
 509               //
 510               // _serializeQueueIdStack
 511               //
 512               void CIMMessageSerializer::_serializeQueueIdStack(
 513                   Array<Sint8>& out,
 514                   const QueueIdStack& queueIdStack)
 515               {
 516                   QueueIdStack stackCopy = queueIdStack;
 517               
 518                   // Use a PGQIDSTACK element to encapsulate the QueueIdStack encoding
 519                   XmlWriter::append(out, "<PGQIDSTACK>\n");
 520                   while (!stackCopy.isEmpty())
 521                   {
 522                       Uint32 item = stackCopy.top();
 523                       stackCopy.pop();
 524                       XmlWriter::appendValueElement(out, item);
 525                   }
 526                   XmlWriter::append(out, "</PGQIDSTACK>\n");
 527 kumpf    1.1  }
 528               
 529               //
 530               // _serializeOperationContext
 531               //
 532               void CIMMessageSerializer::_serializeOperationContext(
 533                   Array<Sint8>& out,
 534                   const OperationContext& operationContext)
 535               {
 536 kumpf    1.13     // Use a PGOP element to encapsulate the OperationContext encoding
 537 kumpf    1.1      XmlWriter::append(out, "<PGOC>\n");
 538               
 539                   // Note: OperationContext class does not allow iteration through Containers
 540               
 541                   try
 542                   {
 543                       const IdentityContainer container =
 544                           operationContext.get(IdentityContainer::NAME);
 545               
 546                       XmlWriter::append(out, "<PGOCID>\n");
 547                       XmlWriter::appendValueElement(out, container.getUserName());
 548                       XmlWriter::append(out, "</PGOCID>\n");
 549                   }
 550                   catch (...)
 551                   {
 552                   }
 553               
 554                   try
 555                   {
 556                       const SubscriptionInstanceContainer container =
 557                           operationContext.get(SubscriptionInstanceContainer::NAME);
 558 kumpf    1.1  
 559                       XmlWriter::append(out, "<PGOCSI>\n");
 560                       _serializeCIMInstance(out, container.getInstance());
 561                       XmlWriter::append(out, "</PGOCSI>\n");
 562                   }
 563                   catch (...)
 564                   {
 565                   }
 566               
 567                   try
 568                   {
 569                       const SubscriptionFilterConditionContainer container =
 570                           operationContext.get(SubscriptionFilterConditionContainer::NAME);
 571               
 572                       XmlWriter::append(out, "<PGOCSFC>\n");
 573                       XmlWriter::appendValueElement(out, container.getFilterCondition());
 574                       XmlWriter::appendValueElement(out, container.getQueryLanguage());
 575                       XmlWriter::append(out, "</PGOCSFC>\n");
 576                   }
 577                   catch (...)
 578                   {
 579 kumpf    1.1      }
 580               
 581                   try
 582                   {
 583                       const SubscriptionInstanceNamesContainer container =
 584                           operationContext.get(SubscriptionInstanceNamesContainer::NAME);
 585               
 586                       XmlWriter::append(out, "<PGOCSIN>\n");
 587               
 588                       Array<CIMObjectPath> cimObjectPaths = container.getInstanceNames();
 589                       for (Uint32 i=0; i < cimObjectPaths.size(); i++)
 590                       {
 591                           _serializeCIMObjectPath(out, cimObjectPaths[i]);
 592                       }
 593               
 594                       XmlWriter::append(out, "</PGOCSIN>\n");
 595                   }
 596                   catch (...)
 597                   {
 598                   }
 599               
 600 kumpf    1.1      try
 601                   {
 602                       const TimeoutContainer container =
 603                           operationContext.get(TimeoutContainer::NAME);
 604               
 605                       XmlWriter::append(out, "<PGOCTO>\n");
 606                       XmlWriter::appendValueElement(out, container.getTimeOut());
 607                       XmlWriter::append(out, "</PGOCTO>\n");
 608                   }
 609                   catch (...)
 610                   {
 611                   }
 612               
 613                   try
 614                   {
 615                       const AcceptLanguageListContainer container =
 616                           operationContext.get(AcceptLanguageListContainer::NAME);
 617               
 618                       XmlWriter::append(out, "<PGOCALL>\n");
 619                       _serializeAcceptLanguages(out, container.getLanguages());
 620                       XmlWriter::append(out, "</PGOCALL>\n");
 621 kumpf    1.1      }
 622                   catch (...)
 623                   {
 624                   }
 625               
 626                   try
 627                   {
 628                       const SubscriptionLanguageListContainer container =
 629                           operationContext.get(SubscriptionLanguageListContainer::NAME);
 630               
 631                       XmlWriter::append(out, "<PGOCSLL>\n");
 632                       _serializeAcceptLanguages(out, container.getLanguages());
 633                       XmlWriter::append(out, "</PGOCSLL>\n");
 634                   }
 635                   catch (...)
 636                   {
 637                   }
 638               
 639                   try
 640                   {
 641                       const ContentLanguageListContainer container =
 642 kumpf    1.1              operationContext.get(ContentLanguageListContainer::NAME);
 643               
 644                       XmlWriter::append(out, "<PGOCCLL>\n");
 645                       _serializeContentLanguages(out, container.getLanguages());
 646                       XmlWriter::append(out, "</PGOCCLL>\n");
 647                   }
 648                   catch (...)
 649                   {
 650                   }
 651               
 652                   try
 653                   {
 654                       const SnmpTrapOidContainer container =
 655                           operationContext.get(SnmpTrapOidContainer::NAME);
 656               
 657                       XmlWriter::append(out, "<PGOCSTO>\n");
 658                       XmlWriter::appendValueElement(out, container.getSnmpTrapOid());
 659                       XmlWriter::append(out, "</PGOCSTO>\n");
 660                   }
 661                   catch (...)
 662                   {
 663 kumpf    1.1      }
 664               
 665                   try
 666                   {
 667                       const LocaleContainer container =
 668                           operationContext.get(LocaleContainer::NAME);
 669               
 670                       XmlWriter::append(out, "<PGOCL>\n");
 671                       XmlWriter::appendValueElement(out, container.getLanguageId());
 672                       XmlWriter::append(out, "</PGOCL>\n");
 673                   }
 674                   catch (...)
 675                   {
 676                   }
 677               
 678                   try
 679                   {
 680                       const ProviderIdContainer container =
 681                           operationContext.get(ProviderIdContainer::NAME);
 682               
 683                       XmlWriter::append(out, "<PGOCPI>\n");
 684 kumpf    1.1          _serializeCIMInstance(out, container.getModule());
 685                       _serializeCIMInstance(out, container.getProvider());
 686 kumpf    1.11         XmlWriter::appendValueElement(out, container.isRemoteNameSpace());
 687                       XmlWriter::appendValueElement(out, container.getRemoteInfo());
 688 kumpf    1.1          XmlWriter::append(out, "</PGOCPI>\n");
 689                   }
 690                   catch (...)
 691                   {
 692                   }
 693               
 694                   XmlWriter::append(out, "</PGOC>\n");
 695               }
 696               
 697               //
 698               // _serializeContentLanguages
 699               //
 700               void CIMMessageSerializer::_serializeContentLanguages(
 701                   Array<Sint8>& out,
 702                   const ContentLanguages& contentLanguages)
 703               {
 704                   Array<ContentLanguageElement> elements;
 705                   contentLanguages.getAllLanguageElements(elements);
 706               
 707                   // Use a PGCONTLANGS element to encapsulate the ContentLanguages encoding
 708                   XmlWriter::append(out, "<PGCONTLANGS>\n");
 709 kumpf    1.1      for (Uint32 i=0; i < elements.size(); i++)
 710                   {
 711                       XmlWriter::appendValueElement(out, elements[i].getTag());
 712                   }
 713                   XmlWriter::append(out, "</PGCONTLANGS>\n");
 714               }
 715               
 716               //
 717               // _serializeAcceptLanguages
 718               //
 719               void CIMMessageSerializer::_serializeAcceptLanguages(
 720                   Array<Sint8>& out,
 721                   const AcceptLanguages& acceptLanguages)
 722               {
 723                   Array<AcceptLanguageElement> elements;
 724                   acceptLanguages.getAllLanguageElements(elements);
 725               
 726                   // Use a PGACCLANGS element to encapsulate the AcceptLanguages encoding
 727                   XmlWriter::append(out, "<PGACCLANGS>\n");
 728                   for (Uint32 i=0; i < elements.size(); i++)
 729                   {
 730 kumpf    1.1          XmlWriter::appendValueElement(out, elements[i].getTag());
 731                       XmlWriter::appendValueElement(out, elements[i].getQuality());
 732                   }
 733                   XmlWriter::append(out, "</PGACCLANGS>\n");
 734               }
 735               
 736               //
 737               // _serializeCIMException
 738               //
 739               void CIMMessageSerializer::_serializeCIMException(
 740                   Array<Sint8>& out,
 741                   const CIMException& cimException)
 742               {
 743 kumpf    1.9      TraceableCIMException e(cimException);
 744 kumpf    1.1  
 745                   // Use a PGCIMEXC element to encapsulate the CIMException encoding
 746 kumpf    1.9      // (Note: This is not truly necessary and could be removed.)
 747 kumpf    1.1      XmlWriter::append(out, "<PGCIMEXC>\n");
 748 kumpf    1.9  
 749                   XmlWriter::appendValueElement(out, Uint32(e.getCode()));
 750                   XmlWriter::appendValueElement(out, e.getMessage());
 751                   XmlWriter::appendValueElement(out, e.getCIMMessage());
 752                   XmlWriter::appendValueElement(out, e.getFile());
 753                   XmlWriter::appendValueElement(out, e.getLine());
 754                   _serializeContentLanguages(out, e.getContentLanguages());
 755               
 756 kumpf    1.1      XmlWriter::append(out, "</PGCIMEXC>\n");
 757               }
 758               
 759               //
 760               // _serializeCIMObjectPath
 761               //
 762               void CIMMessageSerializer::_serializeCIMPropertyList(
 763                   Array<Sint8>& out,
 764                   const CIMPropertyList& cimPropertyList)
 765               {
 766                   // Need IPARAMVALUE wrapper because the value can be null.
 767                   XmlWriter::appendPropertyListIParameter(out, cimPropertyList);
 768               }
 769               
 770               //
 771               // _serializeCIMObjectPath
 772               //
 773               void CIMMessageSerializer::_serializeCIMObjectPath(
 774                   Array<Sint8>& out,
 775                   const CIMObjectPath& cimObjectPath)
 776               {
 777 kumpf    1.1      // Use a PGPATH element to encapsulate the CIMObjectPath encoding
 778                   // to account for uninitialized objects
 779                   XmlWriter::append(out, "<PGPATH>\n");
 780                   if (!cimObjectPath.getClassName().isNull())
 781                   {
 782                       XmlWriter::appendValueReferenceElement(out, cimObjectPath, true);
 783                   }
 784                   XmlWriter::append(out, "</PGPATH>\n");
 785               }
 786               
 787               //
 788               // _serializeCIMInstance
 789               //
 790               void CIMMessageSerializer::_serializeCIMInstance(
 791                   Array<Sint8>& out,
 792                   const CIMInstance& cimInstance)
 793               {
 794                   // Use a PGINST element to encapsulate the CIMInstance encoding
 795                   // to account for uninitialized objects
 796                   XmlWriter::append(out, "<PGINST>\n");
 797                   if (!cimInstance.isUninitialized())
 798 kumpf    1.1      {
 799                       // If the CIMInstance is initialized, its Path is also initialized
 800                       XmlWriter::appendValueNamedInstanceElement(out, cimInstance);
 801                   }
 802                   XmlWriter::append(out, "</PGINST>\n");
 803               }
 804               
 805               //
 806               // _serializeCIMNamespaceName
 807               //
 808               void CIMMessageSerializer::_serializeCIMNamespaceName(
 809                   Array<Sint8>& out,
 810                   const CIMNamespaceName& cimNamespaceName)
 811               {
 812                   // Encode CIMNamespaceName as a String for efficiency and so that null
 813                   // values can be handled
 814                   XmlWriter::appendValueElement(out, cimNamespaceName.getString());
 815               }
 816               
 817               //
 818               // _serializeCIMName
 819 kumpf    1.1  //
 820               void CIMMessageSerializer::_serializeCIMName(
 821                   Array<Sint8>& out,
 822                   const CIMName& cimName)
 823               {
 824                   // Encode CIMName as a String so that null values can be handled
 825                   XmlWriter::appendValueElement(out, cimName.getString());
 826               }
 827               
 828               
 829               //
 830               //
 831               // Request Messages
 832               //
 833               //
 834               
 835               //
 836               //
 837               // CIMOperationRequestMessages
 838               //
 839               //
 840 kumpf    1.1  
 841               //
 842               // _serializeCIMGetInstanceRequestMessage
 843               //
 844               void CIMMessageSerializer::_serializeCIMGetInstanceRequestMessage(
 845                   Array<Sint8>& out,
 846                   CIMGetInstanceRequestMessage* message)
 847               {
 848                   _serializeUserInfo(out, message->authType, message->userName);
 849               
 850                   _serializeCIMObjectPath(out, message->instanceName);
 851                   XmlWriter::appendValueElement(out, message->localOnly);
 852                   XmlWriter::appendValueElement(out, message->includeQualifiers);
 853                   XmlWriter::appendValueElement(out, message->includeClassOrigin);
 854                   _serializeCIMPropertyList(out, message->propertyList);
 855               }
 856               
 857               //
 858               // _serializeCIMDeleteInstanceRequestMessage
 859               //
 860               void CIMMessageSerializer::_serializeCIMDeleteInstanceRequestMessage(
 861 kumpf    1.1      Array<Sint8>& out,
 862                   CIMDeleteInstanceRequestMessage* message)
 863               {
 864                   _serializeUserInfo(out, message->authType, message->userName);
 865               
 866                   _serializeCIMObjectPath(out, message->instanceName);
 867               }
 868               
 869               //
 870               // _serializeCIMCreateInstanceRequestMessage
 871               //
 872               void CIMMessageSerializer::_serializeCIMCreateInstanceRequestMessage(
 873                   Array<Sint8>& out,
 874                   CIMCreateInstanceRequestMessage* message)
 875               {
 876                   _serializeUserInfo(out, message->authType, message->userName);
 877               
 878                   _serializeCIMInstance(out, message->newInstance);
 879               }
 880               
 881               //
 882 kumpf    1.1  // _serializeCIMModifyInstanceRequestMessage
 883               //
 884               void CIMMessageSerializer::_serializeCIMModifyInstanceRequestMessage(
 885                   Array<Sint8>& out,
 886                   CIMModifyInstanceRequestMessage* message)
 887               {
 888                   _serializeUserInfo(out, message->authType, message->userName);
 889               
 890                   _serializeCIMInstance(out, message->modifiedInstance);
 891                   XmlWriter::appendValueElement(out, message->includeQualifiers);
 892                   _serializeCIMPropertyList(out, message->propertyList);
 893               }
 894               
 895               //
 896               // _serializeCIMEnumerateInstancesRequestMessage
 897               //
 898               void CIMMessageSerializer::_serializeCIMEnumerateInstancesRequestMessage(
 899                   Array<Sint8>& out,
 900                   CIMEnumerateInstancesRequestMessage* message)
 901               {
 902                   _serializeUserInfo(out, message->authType, message->userName);
 903 kumpf    1.1  
 904                   XmlWriter::appendValueElement(out, message->deepInheritance);
 905                   XmlWriter::appendValueElement(out, message->localOnly);
 906                   XmlWriter::appendValueElement(out, message->includeQualifiers);
 907                   XmlWriter::appendValueElement(out, message->includeClassOrigin);
 908                   _serializeCIMPropertyList(out, message->propertyList);
 909               }
 910               
 911               //
 912               // _serializeCIMEnumerateInstanceNamesRequestMessage
 913               //
 914               void CIMMessageSerializer::_serializeCIMEnumerateInstanceNamesRequestMessage(
 915                   Array<Sint8>& out,
 916                   CIMEnumerateInstanceNamesRequestMessage* message)
 917               {
 918                   _serializeUserInfo(out, message->authType, message->userName);
 919               
 920                   // No additional attributes to serialize!
 921               }
 922               
 923               //
 924 kumpf    1.1  // _serializeCIMExecQueryRequestMessage
 925               //
 926               void CIMMessageSerializer::_serializeCIMExecQueryRequestMessage(
 927                   Array<Sint8>& out,
 928                   CIMExecQueryRequestMessage* message)
 929               {
 930                   _serializeUserInfo(out, message->authType, message->userName);
 931               
 932                   XmlWriter::appendValueElement(out, message->queryLanguage);
 933                   XmlWriter::appendValueElement(out, message->query);
 934               }
 935               
 936               //
 937               // _serializeCIMAssociatorsRequestMessage
 938               //
 939               void CIMMessageSerializer::_serializeCIMAssociatorsRequestMessage(
 940                   Array<Sint8>& out,
 941                   CIMAssociatorsRequestMessage* message)
 942               {
 943                   _serializeUserInfo(out, message->authType, message->userName);
 944               
 945 kumpf    1.1      _serializeCIMObjectPath(out, message->objectName);
 946                   _serializeCIMName(out, message->assocClass);
 947                   _serializeCIMName(out, message->resultClass);
 948                   XmlWriter::appendValueElement(out, message->role);
 949                   XmlWriter::appendValueElement(out, message->resultRole);
 950                   XmlWriter::appendValueElement(out, message->includeQualifiers);
 951                   XmlWriter::appendValueElement(out, message->includeClassOrigin);
 952                   _serializeCIMPropertyList(out, message->propertyList);
 953               }
 954               
 955               //
 956               // _serializeCIMAssociatorNamesRequestMessage
 957               //
 958               void CIMMessageSerializer::_serializeCIMAssociatorNamesRequestMessage(
 959                   Array<Sint8>& out,
 960                   CIMAssociatorNamesRequestMessage* message)
 961               {
 962                   _serializeUserInfo(out, message->authType, message->userName);
 963               
 964                   _serializeCIMObjectPath(out, message->objectName);
 965                   _serializeCIMName(out, message->assocClass);
 966 kumpf    1.1      _serializeCIMName(out, message->resultClass);
 967                   XmlWriter::appendValueElement(out, message->role);
 968                   XmlWriter::appendValueElement(out, message->resultRole);
 969               }
 970               
 971               //
 972               // _serializeCIMReferencesRequestMessage
 973               //
 974               void CIMMessageSerializer::_serializeCIMReferencesRequestMessage(
 975                   Array<Sint8>& out,
 976                   CIMReferencesRequestMessage* message)
 977               {
 978                   _serializeUserInfo(out, message->authType, message->userName);
 979               
 980                   _serializeCIMObjectPath(out, message->objectName);
 981                   _serializeCIMName(out, message->resultClass);
 982                   XmlWriter::appendValueElement(out, message->role);
 983                   XmlWriter::appendValueElement(out, message->includeQualifiers);
 984                   XmlWriter::appendValueElement(out, message->includeClassOrigin);
 985                   _serializeCIMPropertyList(out, message->propertyList);
 986               }
 987 kumpf    1.1  
 988               //
 989               // _serializeCIMReferenceNamesRequestMessage
 990               //
 991               void CIMMessageSerializer::_serializeCIMReferenceNamesRequestMessage(
 992                   Array<Sint8>& out,
 993                   CIMReferenceNamesRequestMessage* message)
 994               {
 995                   _serializeUserInfo(out, message->authType, message->userName);
 996               
 997                   _serializeCIMObjectPath(out, message->objectName);
 998                   _serializeCIMName(out, message->resultClass);
 999                   XmlWriter::appendValueElement(out, message->role);
1000               }
1001               
1002               //
1003               // _serializeCIMGetPropertyRequestMessage
1004               //
1005               void CIMMessageSerializer::_serializeCIMGetPropertyRequestMessage(
1006                   Array<Sint8>& out,
1007                   CIMGetPropertyRequestMessage* message)
1008 kumpf    1.1  {
1009                   _serializeUserInfo(out, message->authType, message->userName);
1010               
1011                   _serializeCIMObjectPath(out, message->instanceName);
1012                   _serializeCIMName(out, message->propertyName);
1013               }
1014               
1015               //
1016               // _serializeCIMSetPropertyRequestMessage
1017               //
1018               void CIMMessageSerializer::_serializeCIMSetPropertyRequestMessage(
1019                   Array<Sint8>& out,
1020                   CIMSetPropertyRequestMessage* message)
1021               {
1022                   _serializeUserInfo(out, message->authType, message->userName);
1023               
1024                   _serializeCIMObjectPath(out, message->instanceName);
1025               
1026                   // Use PARAMVALUE element so we can preserve the CIMType information
1027                   XmlWriter::appendParamValueElement(
1028                       out,
1029 kumpf    1.1          CIMParamValue(
1030                           message->propertyName.getString(), message->newValue, true));
1031               }
1032               
1033               //
1034               // _serializeCIMInvokeMethodRequestMessage
1035               //
1036               void CIMMessageSerializer::_serializeCIMInvokeMethodRequestMessage(
1037                   Array<Sint8>& out,
1038                   CIMInvokeMethodRequestMessage* message)
1039               {
1040                   _serializeUserInfo(out, message->authType, message->userName);
1041               
1042                   _serializeCIMObjectPath(out, message->instanceName);
1043                   _serializeCIMName(out, message->methodName);
1044               
1045                   // Use PGPARAMS element so we can find the end of the PARAMVALUE elements
1046                   XmlWriter::append(out, "<PGPARAMS>\n");
1047                   for (Uint32 i=0; i < message->inParameters.size(); i++)
1048                   {
1049                       XmlWriter::appendParamValueElement(out, message->inParameters[i]);
1050 kumpf    1.1      }
1051                   XmlWriter::append(out, "</PGPARAMS>\n");
1052               }
1053               
1054               
1055               //
1056               //
1057               // CIMIndicationRequestMessages
1058               //
1059               //
1060               
1061               //
1062               // _serializeCIMEnableIndicationsRequestMessage
1063               //
1064               void CIMMessageSerializer::_serializeCIMEnableIndicationsRequestMessage(
1065                   Array<Sint8>& out,
1066                   CIMEnableIndicationsRequestMessage* message)
1067               {
1068                   // No additional attributes to serialize!
1069               }
1070               
1071 kumpf    1.1  //
1072               // _serializeCIMDisableIndicationsRequestMessage
1073               //
1074               void CIMMessageSerializer::_serializeCIMDisableIndicationsRequestMessage(
1075                   Array<Sint8>& out,
1076                   CIMDisableIndicationsRequestMessage* message)
1077               {
1078                   // No additional attributes to serialize!
1079               }
1080               
1081               //
1082               // _serializeCIMCreateSubscriptionRequestMessage
1083               //
1084               void CIMMessageSerializer::_serializeCIMCreateSubscriptionRequestMessage(
1085                   Array<Sint8>& out,
1086                   CIMCreateSubscriptionRequestMessage* message)
1087               {
1088                   _serializeUserInfo(out, message->authType, message->userName);
1089               
1090                   _serializeCIMNamespaceName(out, message->nameSpace);
1091               
1092 kumpf    1.1      _serializeCIMInstance(out, message->subscriptionInstance);
1093               
1094                   // Use PGNAMEARRAY element to encapsulate the CIMName elements
1095                   XmlWriter::append(out, "<PGNAMEARRAY>\n");
1096                   for (Uint32 i=0; i < message->classNames.size(); i++)
1097                   {
1098                       _serializeCIMName(out, message->classNames[i]);
1099                   }
1100                   XmlWriter::append(out, "</PGNAMEARRAY>\n");
1101               
1102                   _serializeCIMPropertyList(out, message->propertyList);
1103               
1104                   // Encode message->repeatNotificationPolicy as an integer
1105                   XmlWriter::appendValueElement(out, message->repeatNotificationPolicy);
1106               
1107 kumpf    1.3      XmlWriter::appendValueElement(out, message->query);
1108 kumpf    1.13 }
1109 kumpf    1.1  
1110               //
1111               // _serializeCIMModifySubscriptionRequestMessage
1112               //
1113               void CIMMessageSerializer::_serializeCIMModifySubscriptionRequestMessage(
1114                   Array<Sint8>& out,
1115                   CIMModifySubscriptionRequestMessage* message)
1116               {
1117                   _serializeUserInfo(out, message->authType, message->userName);
1118               
1119                   _serializeCIMNamespaceName(out, message->nameSpace);
1120               
1121                   _serializeCIMInstance(out, message->subscriptionInstance);
1122               
1123                   // Use PGNAMEARRAY element to encapsulate the CIMName elements
1124                   XmlWriter::append(out, "<PGNAMEARRAY>\n");
1125                   for (Uint32 i=0; i < message->classNames.size(); i++)
1126                   {
1127                       _serializeCIMName(out, message->classNames[i]);
1128                   }
1129                   XmlWriter::append(out, "</PGNAMEARRAY>\n");
1130 kumpf    1.1  
1131                   _serializeCIMPropertyList(out, message->propertyList);
1132               
1133                   // Encode message->repeatNotificationPolicy as an integer
1134                   XmlWriter::appendValueElement(out, message->repeatNotificationPolicy);
1135               
1136 kumpf    1.3      XmlWriter::appendValueElement(out, message->query);
1137 kumpf    1.1  }
1138               
1139               //
1140               // _serializeCIMDeleteSubscriptionRequestMessage
1141               //
1142               void CIMMessageSerializer::_serializeCIMDeleteSubscriptionRequestMessage(
1143                   Array<Sint8>& out,
1144                   CIMDeleteSubscriptionRequestMessage* message)
1145               {
1146                   _serializeUserInfo(out, message->authType, message->userName);
1147               
1148                   _serializeCIMNamespaceName(out, message->nameSpace);
1149               
1150                   _serializeCIMInstance(out, message->subscriptionInstance);
1151               
1152                   // Use PGNAMEARRAY element to encapsulate the CIMName elements
1153                   XmlWriter::append(out, "<PGNAMEARRAY>\n");
1154                   for (Uint32 i=0; i < message->classNames.size(); i++)
1155                   {
1156                       _serializeCIMName(out, message->classNames[i]);
1157                   }
1158 kumpf    1.1      XmlWriter::append(out, "</PGNAMEARRAY>\n");
1159               }
1160               
1161               
1162               //
1163               //
1164               // Other CIMRequestMessages
1165               //
1166               //
1167               
1168               //
1169               // _serializeCIMExportIndicationRequestMessage
1170               //
1171               void CIMMessageSerializer::_serializeCIMExportIndicationRequestMessage(
1172                   Array<Sint8>& out,
1173                   CIMExportIndicationRequestMessage* message)
1174               {
1175                   _serializeUserInfo(out, message->authType, message->userName);
1176               
1177                   XmlWriter::appendValueElement(out, message->destinationPath);
1178                   _serializeCIMInstance(out, message->indicationInstance);
1179 kumpf    1.1  }
1180               
1181               //
1182               // _serializeCIMProcessIndicationRequestMessage
1183               //
1184               void CIMMessageSerializer::_serializeCIMProcessIndicationRequestMessage(
1185                   Array<Sint8>& out,
1186                   CIMProcessIndicationRequestMessage* message)
1187               {
1188                   _serializeCIMNamespaceName(out, message->nameSpace);
1189               
1190                   _serializeCIMInstance(out, message->indicationInstance);
1191               
1192                   // Use PGPATHARRAY element to encapsulate the object path elements
1193                   XmlWriter::append(out, "<PGPATHARRAY>\n");
1194                   for (Uint32 i=0; i < message->subscriptionInstanceNames.size(); i++)
1195                   {
1196                       _serializeCIMObjectPath(out, message->subscriptionInstanceNames[i]);
1197                   }
1198                   XmlWriter::append(out, "</PGPATHARRAY>\n");
1199               
1200 kumpf    1.1      _serializeCIMInstance(out, message->provider);
1201               }
1202               
1203               //
1204               // _serializeCIMDisableModuleRequestMessage
1205               //
1206               void CIMMessageSerializer::_serializeCIMDisableModuleRequestMessage(
1207                   Array<Sint8>& out,
1208                   CIMDisableModuleRequestMessage* message)
1209               {
1210                   _serializeUserInfo(out, message->authType, message->userName);
1211               
1212                   _serializeCIMInstance(out, message->providerModule);
1213               
1214                   // Use PGINSTARRAY element to encapsulate the CIMInstance elements
1215                   XmlWriter::append(out, "<PGINSTARRAY>\n");
1216                   for (Uint32 i=0; i < message->providers.size(); i++)
1217                   {
1218                       _serializeCIMInstance(out, message->providers[i]);
1219                   }
1220                   XmlWriter::append(out, "</PGINSTARRAY>\n");
1221 kumpf    1.1  
1222                   XmlWriter::appendValueElement(out, message->disableProviderOnly);
1223               
1224                   // Use PGBOOLARRAY element to encapsulate the Boolean elements
1225                   XmlWriter::append(out, "<PGBOOLARRAY>\n");
1226                   for (Uint32 i=0; i < message->indicationProviders.size(); i++)
1227                   {
1228                       XmlWriter::appendValueElement(out, message->indicationProviders[i]);
1229                   }
1230                   XmlWriter::append(out, "</PGBOOLARRAY>\n");
1231               }
1232               
1233               //
1234               // _serializeCIMEnableModuleRequestMessage
1235               //
1236               void CIMMessageSerializer::_serializeCIMEnableModuleRequestMessage(
1237                   Array<Sint8>& out,
1238                   CIMEnableModuleRequestMessage* message)
1239               {
1240                   _serializeUserInfo(out, message->authType, message->userName);
1241               
1242 kumpf    1.1      _serializeCIMInstance(out, message->providerModule);
1243               }
1244               
1245               //
1246               // _serializeCIMStopAllProvidersRequestMessage
1247               //
1248               void CIMMessageSerializer::_serializeCIMStopAllProvidersRequestMessage(
1249                   Array<Sint8>& out,
1250                   CIMStopAllProvidersRequestMessage* message)
1251               {
1252                   // No additional attributes to serialize!
1253               }
1254               
1255 kumpf    1.2  //
1256               // _serializeCIMInitializeProviderRequestMessage
1257               //
1258               void CIMMessageSerializer::_serializeCIMInitializeProviderRequestMessage(
1259                   Array<Sint8>& out,
1260                   CIMInitializeProviderRequestMessage* message)
1261               {
1262 kumpf    1.4      // No additional attributes to serialize!
1263 kumpf    1.2  }
1264               
1265 kumpf    1.7  //
1266               // _serializeCIMInitializeProviderAgentRequestMessage
1267               //
1268               void CIMMessageSerializer::_serializeCIMInitializeProviderAgentRequestMessage(
1269                   Array<Sint8>& out,
1270                   CIMInitializeProviderAgentRequestMessage* message)
1271               {
1272                   XmlWriter::appendValueElement(out, message->pegasusHome);
1273               
1274                   // Use PGCONFARRAY element to encapsulate the config property elements
1275                   XmlWriter::append(out, "<PGCONFARRAY>\n");
1276                   for (Uint32 i=0; i < message->configProperties.size(); i++)
1277                   {
1278                       XmlWriter::appendValueElement(out, message->configProperties[i].first);
1279                       XmlWriter::appendValueElement(out, message->configProperties[i].second);
1280                   }
1281                   XmlWriter::append(out, "</PGCONFARRAY>\n");
1282               
1283                   XmlWriter::appendValueElement(out, message->bindVerbose);
1284               }
1285               
1286 kumpf    1.8  //
1287               // _serializeCIMNotifyConfigChangeRequestMessage
1288               //
1289               void CIMMessageSerializer::_serializeCIMNotifyConfigChangeRequestMessage(
1290                   Array<Sint8>& out,
1291                   CIMNotifyConfigChangeRequestMessage* message)
1292               {
1293                   XmlWriter::appendValueElement(out, message->propertyName);
1294                   XmlWriter::appendValueElement(out, message->newPropertyValue);
1295                   XmlWriter::appendValueElement(out, message->currentValueModified);
1296               }
1297 kumpf    1.1  
1298               //
1299               //
1300               // Response Messages
1301               //
1302               //
1303               
1304               //
1305               //
1306               // CIM Operation Response Messages
1307               //
1308               //
1309               
1310               //
1311               // _serializeCIMGetInstanceResponseMessage
1312               //
1313               void CIMMessageSerializer::_serializeCIMGetInstanceResponseMessage(
1314                   Array<Sint8>& out,
1315                   CIMGetInstanceResponseMessage* message)
1316               {
1317                   _serializeCIMInstance(out, message->cimInstance);
1318 kumpf    1.1  }
1319               
1320               //
1321               // _serializeCIMDeleteInstanceResponseMessage
1322               //
1323               void CIMMessageSerializer::_serializeCIMDeleteInstanceResponseMessage(
1324                   Array<Sint8>& out,
1325                   CIMDeleteInstanceResponseMessage* message)
1326               {
1327                   // No additional attributes to serialize!
1328               }
1329               
1330               //
1331               // _serializeCIMCreateInstanceResponseMessage
1332               //
1333               void CIMMessageSerializer::_serializeCIMCreateInstanceResponseMessage(
1334                   Array<Sint8>& out,
1335                   CIMCreateInstanceResponseMessage* message)
1336               {
1337                   _serializeCIMObjectPath(out, message->instanceName);
1338               }
1339 kumpf    1.1  
1340               //
1341               // _serializeCIMModifyInstanceResponseMessage
1342               //
1343               void CIMMessageSerializer::_serializeCIMModifyInstanceResponseMessage(
1344                   Array<Sint8>& out,
1345                   CIMModifyInstanceResponseMessage* message)
1346               {
1347                   // No additional attributes to serialize!
1348               }
1349               
1350               //
1351               // _serializeCIMEnumerateInstancesResponseMessage
1352               //
1353               void CIMMessageSerializer::_serializeCIMEnumerateInstancesResponseMessage(
1354                   Array<Sint8>& out,
1355                   CIMEnumerateInstancesResponseMessage* message)
1356               {
1357                   // Use PGINSTARRAY element to encapsulate the CIMInstance elements
1358                   XmlWriter::append(out, "<PGINSTARRAY>\n");
1359                   for (Uint32 i=0; i < message->cimNamedInstances.size(); i++)
1360 kumpf    1.1      {
1361                       _serializeCIMInstance(out, message->cimNamedInstances[i]);
1362                   }
1363                   XmlWriter::append(out, "</PGINSTARRAY>\n");
1364               }
1365               
1366               //
1367               // _serializeCIMEnumerateInstanceNamesResponseMessage
1368               //
1369               void CIMMessageSerializer::_serializeCIMEnumerateInstanceNamesResponseMessage(
1370                   Array<Sint8>& out,
1371                   CIMEnumerateInstanceNamesResponseMessage* message)
1372               {
1373                   // Use PGPATHARRAY element to encapsulate the object path elements
1374                   XmlWriter::append(out, "<PGPATHARRAY>\n");
1375                   for (Uint32 i=0; i < message->instanceNames.size(); i++)
1376                   {
1377                       _serializeCIMObjectPath(out, message->instanceNames[i]);
1378                   }
1379                   XmlWriter::append(out, "</PGPATHARRAY>\n");
1380               }
1381 kumpf    1.1  
1382               //
1383               // _serializeCIMExecQueryResponseMessage
1384               //
1385               void CIMMessageSerializer::_serializeCIMExecQueryResponseMessage(
1386                   Array<Sint8>& out,
1387                   CIMExecQueryResponseMessage* message)
1388               {
1389                   // Use PGINSTARRAY element to encapsulate the CIMInstance elements
1390                   XmlWriter::append(out, "<PGOBJARRAY>\n");
1391                   for (Uint32 i=0; i < message->cimObjects.size(); i++)
1392                   {
1393                       XmlWriter::appendValueObjectWithPathElement(out, message->cimObjects[i]);
1394                   }
1395                   XmlWriter::append(out, "</PGOBJARRAY>\n");
1396               }
1397               
1398               //
1399               // _serializeCIMAssociatorsResponseMessage
1400               //
1401               void CIMMessageSerializer::_serializeCIMAssociatorsResponseMessage(
1402 kumpf    1.1      Array<Sint8>& out,
1403                   CIMAssociatorsResponseMessage* message)
1404               {
1405                   // Use PGINSTARRAY element to encapsulate the CIMInstance elements
1406                   XmlWriter::append(out, "<PGOBJARRAY>\n");
1407                   for (Uint32 i=0; i < message->cimObjects.size(); i++)
1408                   {
1409                       XmlWriter::appendValueObjectWithPathElement(out, message->cimObjects[i]);
1410                   }
1411                   XmlWriter::append(out, "</PGOBJARRAY>\n");
1412               }
1413               
1414               //
1415               // _serializeCIMAssociatorNamesResponseMessage
1416               //
1417               void CIMMessageSerializer::_serializeCIMAssociatorNamesResponseMessage(
1418                   Array<Sint8>& out,
1419                   CIMAssociatorNamesResponseMessage* message)
1420               {
1421                   // Use PGPATHARRAY element to encapsulate the object path elements
1422                   XmlWriter::append(out, "<PGPATHARRAY>\n");
1423 kumpf    1.1      for (Uint32 i=0; i < message->objectNames.size(); i++)
1424                   {
1425                       _serializeCIMObjectPath(out, message->objectNames[i]);
1426                   }
1427                   XmlWriter::append(out, "</PGPATHARRAY>\n");
1428               }
1429               
1430               //
1431               // _serializeCIMReferencesResponseMessage
1432               //
1433               void CIMMessageSerializer::_serializeCIMReferencesResponseMessage(
1434                   Array<Sint8>& out,
1435                   CIMReferencesResponseMessage* message)
1436               {
1437                   // Use PGINSTARRAY element to encapsulate the CIMInstance elements
1438                   XmlWriter::append(out, "<PGOBJARRAY>\n");
1439                   for (Uint32 i=0; i < message->cimObjects.size(); i++)
1440                   {
1441                       XmlWriter::appendValueObjectWithPathElement(out, message->cimObjects[i]);
1442                   }
1443                   XmlWriter::append(out, "</PGOBJARRAY>\n");
1444 kumpf    1.1  }
1445               
1446               //
1447               // _serializeCIMReferenceNamesResponseMessage
1448               //
1449               void CIMMessageSerializer::_serializeCIMReferenceNamesResponseMessage(
1450                   Array<Sint8>& out,
1451                   CIMReferenceNamesResponseMessage* message)
1452               {
1453                   // Use PGPATHARRAY element to encapsulate the object path elements
1454                   XmlWriter::append(out, "<PGPATHARRAY>\n");
1455                   for (Uint32 i=0; i < message->objectNames.size(); i++)
1456                   {
1457                       _serializeCIMObjectPath(out, message->objectNames[i]);
1458                   }
1459                   XmlWriter::append(out, "</PGPATHARRAY>\n");
1460               }
1461               
1462               //
1463               // _serializeCIMGetPropertyResponseMessage
1464               //
1465 kumpf    1.1  void CIMMessageSerializer::_serializeCIMGetPropertyResponseMessage(
1466                   Array<Sint8>& out,
1467                   CIMGetPropertyResponseMessage* message)
1468               {
1469                   // Use PARAMVALUE element so we can preserve the CIMType information
1470                   XmlWriter::appendParamValueElement(
1471                       out,
1472                       CIMParamValue(String("ignore"), message->value, true));
1473               }
1474               
1475               //
1476               // _serializeCIMSetPropertyResponseMessage
1477               //
1478               void CIMMessageSerializer::_serializeCIMSetPropertyResponseMessage(
1479                   Array<Sint8>& out,
1480                   CIMSetPropertyResponseMessage* message)
1481               {
1482                   // No additional attributes to serialize!
1483               }
1484               
1485               //
1486 kumpf    1.1  // _serializeCIMInvokeMethodResponseMessage
1487               //
1488               void CIMMessageSerializer::_serializeCIMInvokeMethodResponseMessage(
1489                   Array<Sint8>& out,
1490                   CIMInvokeMethodResponseMessage* message)
1491               {
1492                   // Use PARAMVALUE element so we can preserve the CIMType information
1493                   XmlWriter::appendParamValueElement(
1494                       out,
1495                       CIMParamValue(String("ignore"), message->retValue, true));
1496               
1497                   // Use PGPARAMS element so we can find the end of the PARAMVALUE elements
1498                   XmlWriter::append(out, "<PGPARAMS>\n");
1499                   for (Uint32 i=0; i < message->outParameters.size(); i++)
1500                   {
1501                       XmlWriter::appendParamValueElement(out, message->outParameters[i]);
1502                   }
1503                   XmlWriter::append(out, "</PGPARAMS>\n");
1504               
1505                   _serializeCIMName(out, message->methodName);
1506               }
1507 kumpf    1.1  
1508               
1509               //
1510               //
1511               // CIM Indication Response Messages
1512               //
1513               //
1514               
1515               //
1516               // _serializeCIMEnableIndicationsResponseMessage
1517               //
1518               void CIMMessageSerializer::_serializeCIMEnableIndicationsResponseMessage(
1519                   Array<Sint8>& out,
1520                   CIMEnableIndicationsResponseMessage* message)
1521               {
1522                   // No additional attributes to serialize!
1523               }
1524               
1525               //
1526               // _serializeCIMDisableIndicationsResponseMessage
1527               //
1528 kumpf    1.1  void CIMMessageSerializer::_serializeCIMDisableIndicationsResponseMessage(
1529                   Array<Sint8>& out,
1530                   CIMDisableIndicationsResponseMessage* message)
1531               {
1532                   // No additional attributes to serialize!
1533               }
1534               
1535               //
1536               // _serializeCIMCreateSubscriptionResponseMessage
1537               //
1538               void CIMMessageSerializer::_serializeCIMCreateSubscriptionResponseMessage(
1539                   Array<Sint8>& out,
1540                   CIMCreateSubscriptionResponseMessage* message)
1541               {
1542                   // No additional attributes to serialize!
1543               }
1544               
1545               //
1546               // _serializeCIMModifySubscriptionResponseMessage
1547               //
1548               void CIMMessageSerializer::_serializeCIMModifySubscriptionResponseMessage(
1549 kumpf    1.1      Array<Sint8>& out,
1550                   CIMModifySubscriptionResponseMessage* message)
1551               {
1552                   // No additional attributes to serialize!
1553               }
1554               
1555               //
1556               // _serializeCIMDeleteSubscriptionResponseMessage
1557               //
1558               void CIMMessageSerializer::_serializeCIMDeleteSubscriptionResponseMessage(
1559                   Array<Sint8>& out,
1560                   CIMDeleteSubscriptionResponseMessage* message)
1561               {
1562                   // No additional attributes to serialize!
1563               }
1564               
1565               
1566               //
1567               //
1568               // Other CIMResponseMessages
1569               //
1570 kumpf    1.1  //
1571               
1572               //
1573               // _serializeCIMExportIndicationResponseMessage
1574               //
1575               void CIMMessageSerializer::_serializeCIMExportIndicationResponseMessage(
1576                   Array<Sint8>& out,
1577                   CIMExportIndicationResponseMessage* message)
1578               {
1579                   // No additional attributes to serialize!
1580               }
1581               
1582               //
1583               // _serializeCIMProcessIndicationResponseMessage
1584               //
1585               void CIMMessageSerializer::_serializeCIMProcessIndicationResponseMessage(
1586                   Array<Sint8>& out,
1587                   CIMProcessIndicationResponseMessage* message)
1588               {
1589                   // No additional attributes to serialize!
1590               }
1591 kumpf    1.1  
1592               //
1593               // _serializeCIMDisableModuleResponseMessage
1594               //
1595               void CIMMessageSerializer::_serializeCIMDisableModuleResponseMessage(
1596                   Array<Sint8>& out,
1597                   CIMDisableModuleResponseMessage* message)
1598               {
1599                   // Use PGUINT16ARRAY element to encapsulate the Uint16 elements
1600                   XmlWriter::append(out, "<PGUINT16ARRAY>\n");
1601                   for (Uint32 i=0; i < message->operationalStatus.size(); i++)
1602                   {
1603                       XmlWriter::appendValueElement(out, message->operationalStatus[i]);
1604                   }
1605                   XmlWriter::append(out, "</PGUINT16ARRAY>\n");
1606               }
1607               
1608               //
1609               // _serializeCIMEnableModuleResponseMessage
1610               //
1611               void CIMMessageSerializer::_serializeCIMEnableModuleResponseMessage(
1612 kumpf    1.1      Array<Sint8>& out,
1613                   CIMEnableModuleResponseMessage* message)
1614               {
1615                   // Use PGUINT16ARRAY element to encapsulate the Uint16 elements
1616                   XmlWriter::append(out, "<PGUINT16ARRAY>\n");
1617                   for (Uint32 i=0; i < message->operationalStatus.size(); i++)
1618                   {
1619                       XmlWriter::appendValueElement(out, message->operationalStatus[i]);
1620                   }
1621                   XmlWriter::append(out, "</PGUINT16ARRAY>\n");
1622               }
1623               
1624               //
1625               // _serializeCIMStopAllProvidersResponseMessage
1626               //
1627               void CIMMessageSerializer::_serializeCIMStopAllProvidersResponseMessage(
1628                   Array<Sint8>& out,
1629                   CIMStopAllProvidersResponseMessage* message)
1630               {
1631                   // No additional attributes to serialize!
1632               }
1633 kumpf    1.1  
1634 kumpf    1.2  //
1635               // _serializeCIMInitializeProviderResponseMessage
1636               //
1637               void CIMMessageSerializer::_serializeCIMInitializeProviderResponseMessage(
1638                   Array<Sint8>& out,
1639                   CIMInitializeProviderResponseMessage* message)
1640               {
1641                   // No additional attributes to serialize!
1642               }
1643               
1644 kumpf    1.7  //
1645               // _serializeCIMInitializeProviderAgentResponseMessage
1646               //
1647               void CIMMessageSerializer::_serializeCIMInitializeProviderAgentResponseMessage(
1648                   Array<Sint8>& out,
1649                   CIMInitializeProviderAgentResponseMessage* message)
1650               {
1651                   // No additional attributes to serialize!
1652               }
1653               
1654 kumpf    1.8  //
1655               // _serializeCIMNotifyConfigChangeResponseMessage
1656               //
1657               void CIMMessageSerializer::_serializeCIMNotifyConfigChangeResponseMessage(
1658                   Array<Sint8>& out,
1659                   CIMNotifyConfigChangeResponseMessage* message)
1660               {
1661                   // No additional attributes to serialize!
1662               }
1663               
1664 kumpf    1.1  PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2