(file) Return to IndicationService.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / IndicationService

   1 martin 1.87 //%LICENSE////////////////////////////////////////////////////////////////
   2 martin 1.88 //
   3 martin 1.87 // 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.88 //
  10 martin 1.87 // 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.88 //
  17 martin 1.87 // The above copyright notice and this permission notice shall be included
  18             // in all copies or substantial portions of the Software.
  19 martin 1.88 //
  20 martin 1.87 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  21 martin 1.88 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  22 martin 1.87 // 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.88 //
  28 martin 1.87 //////////////////////////////////////////////////////////////////////////
  29 kumpf  1.1  //
  30             //%/////////////////////////////////////////////////////////////////////////////
  31             
  32             #ifndef Pegasus_IndicationService_h
  33             #define Pegasus_IndicationService_h
  34             
  35             #include <Pegasus/Common/Config.h>
  36             #include <Pegasus/Common/MessageQueueService.h>
  37             #include <Pegasus/Common/CIMMessage.h>
  38 kumpf  1.78 #include <Pegasus/Common/AcceptLanguageList.h>
  39             #include <Pegasus/Common/ContentLanguageList.h>
  40 yi.zhou 1.84 #include <Pegasus/Server/ProviderRegistrationManager/\
  41              ProviderRegistrationManager.h>
  42 kumpf   1.54 #include <Pegasus/Server/Linkage.h>
  43 chuck   1.64 #include <Pegasus/Query/QueryExpression/QueryExpression.h>
  44 kumpf   1.1  
  45 yi.zhou 1.84 #include <Pegasus/IndicationService/ProviderClassList.h>
  46              #include <Pegasus/IndicationService/IndicationOperationAggregate.h>
  47              
  48              #ifdef PEGASUS_ENABLE_INDICATION_COUNT
  49              # include <Pegasus/IndicationService/ProviderIndicationCountTable.h>
  50              #endif
  51 kumpf   1.41 
  52 venkat.puvvada 1.85 #ifdef PEGASUS_ENABLE_DMTF_INDICATION_PROFILE_SUPPORT
  53                     # include <Pegasus/IndicationService/IndicationServiceConfiguration.h>
  54                     #endif
  55                     
  56 kumpf          1.1  PEGASUS_NAMESPACE_BEGIN
  57                     
  58 karl           1.97.2.1 // Holds information of control providers servicing the indications.
  59                         struct ControlProvIndReg
  60                         {
  61                             CIMName className;
  62                             CIMNamespaceName nameSpace;
  63                             CIMInstance providerModule;
  64                             CIMInstance provider;
  65                         };
  66                         
  67                         typedef HashTable <String, ControlProvIndReg, EqualFunc <String>,
  68                             HashFunc <String> > ControlProvIndRegTable;
  69                         
  70 kumpf          1.54     class SubscriptionRepository;
  71                         class SubscriptionTable;
  72 kumpf          1.1      
  73                         /**
  74 kumpf          1.5          IndicationService class is the service that serves the
  75 kumpf          1.10         Indication Subscription, Indication Filter, and Indication Handler
  76 kumpf          1.5          classes, and processes indications.
  77 kumpf          1.1       */
  78                         
  79                         class PEGASUS_SERVER_LINKAGE IndicationService : public MessageQueueService
  80                         {
  81                         public:
  82                         
  83                             /**
  84                                 Constructs an IndicationSubscription instance and initializes instance
  85                                 variables.
  86                              */
  87 kumpf          1.82         IndicationService(
  88                                 CIMRepository* repository,
  89                                 ProviderRegistrationManager* providerRegManager);
  90 kumpf          1.1      
  91 kumpf          1.82         virtual ~IndicationService();
  92 kumpf          1.1      
  93 mday           1.2          void handleEnqueue(Message* message);
  94 kumpf          1.1      
  95 kumpf          1.82         virtual void handleEnqueue();
  96 kumpf          1.1      
  97 kumpf          1.82         virtual void _handle_async_request(AsyncRequest* req);
  98 kumpf          1.1      
  99 kumpf          1.54         /**
 100                                 Gets a String containing the Provider Name, for use in a log message to
 101                                 identify the provider.
 102                         
 103                                 @param   provider              provider instance
 104                         
 105                                 @return  String containing the Provider Name
 106                              */
 107 kumpf          1.82         static String getProviderLogString(CIMInstance& provider);
 108 kumpf          1.54     
 109 venkat.puvvada 1.90         /**
 110                                 Sends a Subscription Init Complete request to the Provider
 111                                 Manager Service.
 112                              */
 113                             void sendSubscriptionInitComplete();
 114                         
 115 venkat.puvvada 1.91     
 116 kumpf          1.1          AtomicInt dienow;
 117                         
 118                             /**
 119 kumpf          1.5              Operation types for the NotifyProviderRegistration message
 120 kumpf          1.1           */
 121 kumpf          1.5          enum Operation {OP_CREATE = 1, OP_DELETE = 2, OP_MODIFY = 3};
 122 kumpf          1.24     
 123                             static Mutex _mutex;
 124 kumpf          1.1      
 125 kumpf          1.5      private:
 126 kumpf          1.1      
 127 kumpf          1.82         void _initialize();
 128 kumpf          1.1      
 129 venkat.puvvada 1.91         /**
 130                                 Reads active subscriptons from repository and sends create subscription
 131                                 requests to the corresponding indication providers and initializes the
 132                                 subscription repository and tables.
 133                                 @param   timeoutSeconds        Timeout in seconds  to complete the
 134                                                                    initialization of active
 135                                                                    subscriptions. Timeout value 0
 136                                                                    means no time limit.
 137                         
 138                                 @return  True, if the initialization completed within timeout period.
 139                                          False, if the initialization can not completed within
 140                                              timeout period.
 141                             */
 142                             Boolean _initializeActiveSubscriptionsFromRepository(Uint32 timeoutSeconds);
 143                         
 144 kumpf          1.82         void _terminate();
 145 kumpf          1.1      
 146 kumpf          1.82         void _handleGetInstanceRequest(const Message* message);
 147 kumpf          1.1      
 148 kumpf          1.82         void _handleEnumerateInstancesRequest(const Message* message);
 149 kumpf          1.1      
 150 kumpf          1.82         void _handleEnumerateInstanceNamesRequest(const Message* message);
 151 kumpf          1.1      
 152 kumpf          1.82         void _handleCreateInstanceRequest(const Message* message);
 153 kumpf          1.1      
 154 kumpf          1.82         void _handleModifyInstanceRequest(const Message* message);
 155 kumpf          1.1      
 156                             void _handleDeleteInstanceRequest(const Message * message);
 157                         
 158 yi.zhou        1.83         void _handleProcessIndicationRequest(Message* message);
 159 kumpf          1.1      
 160 venkat.puvvada 1.91     #ifdef PEGASUS_ENABLE_DMTF_INDICATION_PROFILE_SUPPORT
 161                         
 162                             void _handleInvokeMethodRequest(Message* message);
 163                             /**
 164                                 Sends CIMIndicationServiceDisabledRequestMessage to provider manager
 165                                 service so that provider manager's resets _subscriptionInitComplete
 166                                 flag.
 167                             */
 168                             void _sendIndicationServiceDisabled();
 169                         
 170                             /**
 171                                 Clears Subscription Table entries after sending delete subscription
 172                                 requests to appropriate indication providers. Subscription state will
 173                                 remain enabled.
 174                                 @param   timeoutSeconds        Timeout in seconds  to complete sending
 175                                                                    the delete subscription requests to
 176                                                                    all active indication providers.
 177                                                                    Timeout value 0 means no time limit.
 178                         
 179                                 @return  True, if the operation is completed within timeout period.
 180                                          False, if the operation can not completed within
 181 venkat.puvvada 1.91                          timeout period.
 182                             */
 183                         
 184                             Boolean _deleteActiveSubscriptions(Uint32 timeoutSeconds);
 185                         
 186                             /**
 187                                 Enables the indication service using method
 188                                 _initializeActiveSubscriptionsFromRepository(). Sets the Service
 189                                 EnabledState and HelathState properties appropriately.
 190                                 @param   timeoutSeconds        Timeout in seconds  to complete the
 191                                                                    initialization of active
 192                                                                    subscriptions. Timeout value 0
 193                                                                    means no time limit.
 194                         
 195                                 @return  _RETURNCODE_COMPLETEDWITHNOERROR, if the initialization
 196                                              completed within timeout period. Service HealthState
 197                                              is set to "OK" and EnabledState will be set to "Enabled".
 198                         
 199                                          _RETURNCODE_TIMEOUT, if the initialization can not completed
 200                                              within timeout period. In this case, all active
 201                                              subscriptions might not have been initialized. Service
 202 venkat.puvvada 1.91                          HealthState is set to "Degraded/Warning" and EnabledState
 203                                              will be set to "Enabled".
 204                             */
 205                             Uint32 _enableIndicationService(Uint32 timeoutSeconds);
 206                         
 207                             /**
 208                                 Disables the indication service using _deleteActiveSubscriptions()
 209                                 method. Sets the Service EnabledState and HelathState
 210                                 properties appropriately.
 211                         
 212                                 @param   timeoutSeconds        Timeout in seconds to complete the
 213                                                                    disabling of the service.
 214                                 @param   cimException          Output parameter returned to calller
 215                                                                    if there is an exception.
 216                         
 217                                 @return  _RETURNCODE_COMPLETEDWITHNOERROR, if the disable
 218                                              completed within timeout period. Service
 219                                              HealthState is set to "OK" and EnabledState
 220                                              will be set to "Disabled".
 221                         
 222                                          _RETURNCODE_TIMEOUT, if the disable  cannot be completed
 223 venkat.puvvada 1.91                          within timeout period. In this case, all active
 224                                              subscriptions might not have been disabled. Service
 225                                              HealthState is set to "Degraded/Warning" and EnabledState
 226                                              will remain  "Enabled".
 227                             */
 228                             Uint32 _disableIndicationService(
 229                                 Uint32 timeoutSeconds,
 230                                 CIMException &cimException);
 231                         
 232                             /**
 233                                 Waits for async requets pending to complete. Returns true if there
 234                                 are no async requests pending within timeout period.
 235                             */
 236                             Boolean _waitForAsyncRequestsComplete(
 237                                 struct timeval* startTime,
 238                                 Uint32 timeoutSeconds);
 239 venkat.puvvada 1.94         /**
 240                                 Sends the CIMNotifySubscriptionNotActiveRequestMessage to Handler
 241                                 service when subscription has been disabled/deleted/expired.
 242                         
 243                                 @param  subscriptionName          The subscription instance path
 244                             */
 245                             void _sendSubscriptionNotActiveMessagetoHandlerService(
 246                                 const CIMObjectPath &subscriptionName);
 247                         
 248                             /**
 249                                 Sends the CIMNotifyListenerNotActiveRequestMessage to Handler
 250                                 service when listener has been deleted.
 251                         
 252                                 @param  handlerName       handler/listener instance path
 253                             */
 254                             void _sendListenerNotActiveMessagetoHandlerService(
 255                                 const CIMObjectPath &handlerName);
 256 venkat.puvvada 1.91     #endif
 257 venkat.puvvada 1.94     
 258 venkat.puvvada 1.97         Uint16  _getEnabledState();
 259                             void  _setEnabledState(Uint16 state);
 260                         
 261 venkat.puvvada 1.91         /**
 262                                 Handles the CIM requests when IndicationService is not enabled. Very
 263                                 few requests are handled by IndicationService when not enabled.
 264                             */
 265                             void _handleCimRequestWithServiceNotEnabled(Message *message);
 266                         
 267                             void _handleCimRequest(Message *message);
 268                         
 269 kumpf          1.1          /**
 270 kumpf          1.57             Asynchronous callback function for _handleProcessIndicationRequest.
 271                                 The response from the Handler is checked, and if it is not success, the
 272 carolann.graves 1.74             subscription's On Fatal Error Policy is implemented.
 273 kumpf           1.57     
 274                                  @param  operation            shared data structure that controls message
 275                                                                   processing
 276                                  @param  destination          target queue of completion callback
 277                                  @param  userParameter        user parameter for callback processing
 278                               */
 279 kumpf           1.82         static void _handleIndicationCallBack(
 280                                  AsyncOpNode* operation,
 281                                  MessageQueue* destination,
 282                                  void* userParameter);
 283 kumpf           1.57     
 284                              /**
 285 kumpf           1.82             Notifies the Indication Service that a change in provider registration
 286                                  has occurred.  The Indication Service retrieves the subscriptions
 287                                  affected by the registration change, sends the appropriate Create,
 288 carolann.graves 1.74             Modify, and/or Delete requests to the provider, and sends an alert to
 289                                  handler instances of subscriptions that are no longer served by the
 290 kumpf           1.10             provider.
 291 kumpf           1.1          */
 292 kumpf           1.82         void _handleNotifyProviderRegistrationRequest(const Message* message);
 293 kumpf           1.1      
 294                              /**
 295 carolann.graves 1.74             Notifies the Indication Service that a provider has been disabled.
 296 kumpf           1.51             The Indication Service retrieves the subscriptions served by the
 297 carolann.graves 1.74             disabled provider, and logs a message for each subscription that is no
 298 kumpf           1.51             longer served by the provider.
 299 kumpf           1.1           */
 300 kumpf           1.82         void _handleNotifyProviderTerminationRequest(const Message* message);
 301 kumpf           1.1      
 302                              /**
 303 carolann.graves 1.74             Notifies the Indication Service that a provider has been enabled.
 304                                  The Indication Service retrieves the subscriptions that can be served
 305                                  by the enabled provider, sends Create Subscription and Enable
 306                                  Indications requests to the provider, and logs a message for each
 307 kumpf           1.51             subscription that is now served by the provider.
 308                               */
 309 kumpf           1.82         void _handleNotifyProviderEnableRequest(const Message* message);
 310 kumpf           1.51     
 311                              /**
 312 carolann.graves 1.80             Notifies the Indication Service that failure of a provider module that
 313                                  included at least one indication provider has been detected.
 314                                  The Indication Service retrieves the subscriptions served by providers
 315                                  in the failed module.  The Indication Service returns in the response
 316                                  the number of affected subscriptions, so the sender of the request
 317                                  knows if any subscriptions were affected.
 318                               */
 319 kumpf           1.82         void _handleNotifyProviderFailRequest(Message* message);
 320 carolann.graves 1.80     
 321                              /**
 322 carolann.graves 1.74             Determines if it is legal to create an instance.
 323                                  Checks for existence of all key and required properties.  Checks that
 324                                  properties that MUST NOT exist (based on values of other properties),
 325                                  do not exist.  For any property that has a default value, if it does
 326 kumpf           1.5              not exist, adds the property with the default value.
 327                          
 328                                  @param   instance              instance to be created
 329                                  @param   nameSpace             namespace for instance to be created
 330                          
 331 carolann.graves 1.73             @exception   CIM_ERR_INVALID_PARAMETER  if instance is invalid
 332 carolann.graves 1.74             @exception   CIM_ERR_NOT_SUPPORTED      if the specified class is not
 333 carolann.graves 1.73                                                     supported
 334 kumpf           1.5      
 335 kumpf           1.54             @return  True, if the instance can be created;
 336 kumpf           1.10                      Otherwise throws an exception
 337 kumpf           1.5           */
 338 kumpf           1.82         Boolean _canCreate(
 339                                  CIMInstance& instance,
 340                                  const CIMNamespaceName& nameSpace);
 341 kumpf           1.5      
 342 kumpf           1.21         /**
 343                                  Validates the specified required property in the instance.
 344 carolann.graves 1.74             If the property does not exist, or has a null value, or is not of the
 345 kumpf           1.56             expected type, an exception is thrown, using the specified message.
 346 kumpf           1.21     
 347 carolann.graves 1.74             This function is called by the _canCreate function, and is used to
 348 kumpf           1.21             validate the  Filter and Handler properties in Subscription instances,
 349 carolann.graves 1.74             the Name, Query and Query Language properties in
 350                                  Filter instances, the Name and Destination
 351                                  properties in CIMXML Handler instances, and the Name,
 352 kumpf           1.21             Trap Destination, and SNMP Version properties in SNMP Mapper instances.
 353                          
 354                                  @param   instance              instance to be validated
 355                                  @param   propertyName          name of property to be validated
 356 kumpf           1.56             @param   expectedType          expected CIMType of property value
 357 kumpf           1.86             @param   isKeyProperty         indicates whether the property is a key
 358                                                                 property (used for selection of error
 359                                                                 message)
 360 kumpf           1.82             @param   isArray               indicates whether the validated
 361                                                                 property is array
 362 kumpf           1.21     
 363 carolann.graves 1.73             @exception   CIM_ERR_INVALID_PARAMETER  if required property is missing
 364                                                                          or null
 365 kumpf           1.21          */
 366 kumpf           1.82         void _checkRequiredProperty(
 367                                  CIMInstance& instance,
 368                                  const CIMName& propertyName,
 369 kumpf           1.56             const CIMType expectedType,
 370 kumpf           1.86             Boolean isKeyProperty,
 371                                  Boolean isArray = false);
 372 kumpf           1.20     
 373 kumpf           1.5          /**
 374 carolann.graves 1.74             Validates the specified Uint16 (non-array) property and its
 375 carolann.graves 1.69             corresponding String (non-array) Other___ property in the instance.
 376 kumpf           1.15             If the property does not exist, it is added with the default value.
 377                                  If the property exists, but its value is NULL, its value is set to
 378                                  the default value.
 379                                  If the value of the property is Other, but the corresponding Other___
 380 kumpf           1.56             property either does not exist, has a value of NULL, or is not of the
 381 carolann.graves 1.74             correct type, an exception is thrown.
 382 kumpf           1.15             If the value of the property is not Other, but the corresponding
 383                                  Other___ property exists and has a non-NULL value, an exception is
 384                                  thrown.
 385 carolann.graves 1.74             If the value of the property is not a supported value, an exception is
 386 kumpf           1.56             thrown.
 387 carolann.graves 1.74             This function is called by the _canCreate function, and is used to
 388                                  validate the following pairs of properties in Subscription or Handler
 389                                  instances: Subscription State, Other Subscription State, Repeat
 390                                  Notification Policy, Other Repeat Notification Policy, On Fatal Error
 391                                  Policy, Other On Fatal Error Policy, Persistence Type, Other
 392 kumpf           1.15             Persistence Type.
 393                          
 394                                  @param   instance              instance to be validated
 395                                  @param   propertyName          name of property to be validated
 396                                  @param   otherPropertyName     name of Other___ property to be validated
 397                                  @param   defaultValue          default value for property
 398                                  @param   otherValue            "Other" value for property
 399 kumpf           1.19             @param   validValues           set of valid values for property
 400 kumpf           1.55             @param   supportedValues       set of supported values for property
 401 kumpf           1.15     
 402 carolann.graves 1.73             @exception   CIM_ERR_INVALID_PARAMETER  if value of property or Other___
 403                                                                          property is invalid
 404 kumpf           1.15          */
 405 kumpf           1.82         void _checkPropertyWithOther(
 406                                  CIMInstance& instance,
 407                                  const CIMName& propertyName,
 408                                  const CIMName& otherPropertyName,
 409 kumpf           1.15             const Uint16 defaultValue,
 410 kumpf           1.19             const Uint16 otherValue,
 411 kumpf           1.82             const Array<Uint16>& validValues,
 412                                  const Array<Uint16>& supportedValues);
 413 kumpf           1.20     
 414 kumpf           1.21         /**
 415                                  Validates the specified property in the instance.
 416                                  If the property does not exist, it is added with the default value.
 417                                  If the property exists, but its value is NULL, its value is set to
 418                                  the default value.
 419 carolann.graves 1.74             This function is called by the _canCreate function, and is used to
 420 carolann.graves 1.62             validate the Source Namespace property in Filter instances.
 421 carolann.graves 1.74             This function is also called by the _initOrValidateStringProperty
 422                                  function to validate the CreationClassName, SystemName, and
 423 carolann.graves 1.69             SystemCreationClassName key properties in Filter and Handler instances.
 424 kumpf           1.21     
 425 kumpf           1.56             Note: currently all properties validated by this function are of type
 426 carolann.graves 1.74             String.  To use this function in the future with properties of other
 427                                  types, a type parameter would need to be added, and the default value
 428 kumpf           1.56             would need to be passed as a CIMValue instead of a String.
 429                          
 430 carolann.graves 1.69             Note: currently all properties validated by this function are non-array
 431                                  properties.  To use this function in the future with both array and
 432 carolann.graves 1.74             non-array properties, a Boolean isArray parameter would need to be
 433 carolann.graves 1.69             added.
 434                          
 435 kumpf           1.21             @param   instance              instance to be validated
 436                                  @param   propertyName          name of property to be validated
 437                                  @param   defaultValue          default value for property
 438                          
 439                                  @return  the value of the property
 440                               */
 441 kumpf           1.82         String _checkPropertyWithDefault(
 442                                  CIMInstance& instance,
 443                                  const CIMName& propertyName,
 444                                  const String& defaultValue);
 445 kumpf           1.56     
 446                              /**
 447                                  Validates the specified property in the instance.
 448 venkat.puvvada  1.93             If the property does not exist, it is added with the GUID value.
 449                                  If the property exists, but its value is NULL, its value is set to
 450                                  the GUID value.
 451                                  This function is called by the _canCreate function, and is used to
 452                                  set the name of the Handler instance.
 453                          
 454                                  @param   instance              instance to be validated
 455                                  @param   propertyName          name of property to be validated
 456                              */
 457                              String _checkPropertyWithGuid(
 458                                  CIMInstance& instance,
 459                                  const CIMName& propertyName);
 460                          
 461                              /**
 462                                  Validates the specified property in the instance.
 463 carolann.graves 1.62             If the property does not exist, it is added with the default value.
 464                                  If the property exists, but its value is NULL, its value is set to
 465                                  the default value.
 466 carolann.graves 1.74             If the property exists and has a non-NULL value, its value is validated
 467                                  against the default (expected) value.  If the value is invalid, an
 468 carolann.graves 1.62             exception is thrown.
 469 carolann.graves 1.74             This function is called by the _canCreate function, and is used to
 470 carolann.graves 1.62             validate the Creation Class Name, System Name and System Creation Class
 471                                  Name properties in Filter and Handler instances.
 472                          
 473                                  Note: currently all properties validated by this function are of type
 474 carolann.graves 1.74             String.  To use this function in the future with properties of other
 475                                  types, a type parameter would need to be added, and the default value
 476 carolann.graves 1.62             would need to be passed as a CIMValue instead of a String.
 477                          
 478 carolann.graves 1.69             Note: currently all properties validated by this function are non-array
 479                                  properties.  To use this function in the future with both array and
 480 carolann.graves 1.74             non-array properties, a Boolean isArray parameter would need to be
 481 carolann.graves 1.69             added.
 482                          
 483 carolann.graves 1.62             @param   instance              instance to be validated
 484                                  @param   propertyName          name of property to be validated
 485                                  @param   defaultValue          default value for property
 486                          
 487                                  @return  the value of the property
 488                               */
 489 kumpf           1.82         String _initOrValidateStringProperty(
 490                                  CIMInstance& instance,
 491                                  const CIMName& propertyName,
 492                                  const String& defaultValue);
 493 carolann.graves 1.62     
 494                              /**
 495                                  Validates the specified property in the instance.
 496 kumpf           1.56             If the property exists and its value is not NULL, but it is not of
 497                                  the correct type, an exception is thrown.
 498 carolann.graves 1.74             This function is called by the _canCreate function.  It is used to
 499                                  validate the FailureTriggerTimeInterval, TimeOfLastStateChange,
 500 kumpf           1.56             SubscriptionDuration, SubscriptionStartTime, SubscriptionTimeRemaining,
 501                                  RepeatNotificationInterval, RepeatNotificationGap, and
 502                                  RepeatNotificationCount properties in Subscription instances, the Owner
 503 carolann.graves 1.74             property in Handler instances, and the PortNumber, SNMPSecurityName,
 504 kumpf           1.56             and SNMPEngineID properties in SNMP Mapper Handler instances.
 505                          
 506 carolann.graves 1.69             Note: currently all properties validated by this function are non-array
 507                                  properties.  To use this function in the future with both array and
 508 carolann.graves 1.74             non-array properties, a Boolean isArray parameter would need to be
 509 carolann.graves 1.69             added.
 510                          
 511 kumpf           1.56             @param   instance              instance to be validated
 512                                  @param   propertyName          name of property to be validated
 513                                  @param   expectedType          expected CIMType for property
 514 yi.zhou         1.75             @param   isArray               indicates whether the validated
 515                                                                 property is array
 516 kumpf           1.56     
 517 carolann.graves 1.73             @exception   CIM_ERR_INVALID_PARAMETER  if property exists and is not
 518                                                                          null but is not of the correct
 519                                                                          type
 520 kumpf           1.56          */
 521 kumpf           1.82         void _checkProperty(
 522                                  CIMInstance& instance,
 523                                  const CIMName& propertyName,
 524 yi.zhou         1.75             const CIMType expectedType,
 525                                  const Boolean isArray = false);
 526 kumpf           1.15     
 527                              /**
 528 carolann.graves 1.76             Validates that all properties in the instance are supported properties,
 529                                  and throws an exception if an unknown, unsupported property is found.
 530                          
 531                                  @param   instance              instance to be validated
 532                          
 533                                  @exception   CIM_ERR_NOT_SUPPORTED      if instance includes an unknown,
 534                                                                          unsupported property
 535                               */
 536 kumpf           1.82         void _checkSupportedProperties(
 537                                  const CIMInstance& instance);
 538 carolann.graves 1.76     
 539                              /**
 540 kumpf           1.82             Validates value of the specified Uint16 property in the instance.
 541                                  If the value of the property is not a valid value, or is not a
 542 yi.zhou         1.77             supported value, an exception is thrown.
 543                          
 544                                  @param   instance              instance to be validated
 545                                  @param   propertyName          name of property to be validated
 546                                  @param   validValues           set of valid values for property
 547                                  @param   supportedValues       set of supported values for property
 548 kumpf           1.82     
 549                                  @exception   CIM_ERR_NOT_SUPPORTED      if the property value is not
 550 yi.zhou         1.77                                                     supported
 551 kumpf           1.82                          CIM_ERR_INVALID_PARAMETER  if the property value is not
 552 yi.zhou         1.77                                                     valid
 553                               */
 554 kumpf           1.82         void _checkValue(
 555                                  const CIMInstance& instance,
 556                                  const CIMName& propertyName,
 557                                  const Array<Uint16>& validValues,
 558                                  const Array<Uint16>& supportedValues);
 559 yi.zhou         1.77     
 560                              /**
 561 kumpf           1.10             Determines if the user is authorized to modify the instance, and if the
 562 carolann.graves 1.74             specified modification is supported.  Currently, the only modification
 563                                  supported is of the Subscription State property of the Subscription
 564 kumpf           1.10             class.
 565 kumpf           1.5      
 566                                  @param   request               modification request
 567                                  @param   instance              instance to be modified
 568 kumpf           1.37             @param   modifiedInstance      modified instance
 569 kumpf           1.5      
 570 carolann.graves 1.73             @exception   CIM_ERR_NOT_SUPPORTED      if the specified modification is
 571                                                                          not supported
 572                                  @exception   CIM_ERR_ACCESS_DENIED      if the user is not authorized to
 573                                                                          modify the instance
 574                                  @exception   CIM_ERR_INVALID_PARAMETER  if the modifiedInstance is
 575                                                                          invalid
 576 kumpf           1.5      
 577 kumpf           1.54             @return  True, if the instance can be modified;
 578 kumpf           1.10                      Otherwise throws an exception
 579 kumpf           1.5           */
 580 kumpf           1.82         Boolean _canModify(
 581                                  const CIMModifyInstanceRequestMessage* request,
 582                                  const CIMObjectPath& instanceReference,
 583                                  const CIMInstance& instance,
 584                                  CIMInstance& modifiedInstance);
 585 kumpf           1.5      
 586                              /**
 587 carolann.graves 1.74             Determines if the user is authorized to delete the instance, and if it
 588                                  is legal to delete the instance.  If authorized, Subscription instances
 589                                  may always be deleted.  Filter and non-transient Handler instances may
 590                                  only be deleted if they are not being referenced by any Subscription
 591                                  instances. If the instance to be deleted is a transient Handler, any
 592 kumpf           1.10             referencing Subscriptions are also deleted.
 593 kumpf           1.5      
 594                                  @param   instanceReference     reference for instance to be deleted
 595                                  @param   nameSpace             namespace for instance to be deleted
 596 kumpf           1.10             @param   currentUser           current user
 597                          
 598 carolann.graves 1.73             @exception   CIM_ERR_ACCESS_DENIED      if the user is not authorized to
 599                                                                          delete the instance
 600                                  @exception   CIM_ERR_FAILED             if the instance to be deleted is
 601                                                                          referenced by a subscription
 602 kumpf           1.5      
 603 kumpf           1.54             @return  True, if the instance can be deleted;
 604 kumpf           1.10                      Otherwise throws an exception
 605 kumpf           1.1           */
 606 kumpf           1.82         Boolean _canDelete(
 607                                  const CIMObjectPath& instanceReference,
 608                                  const CIMNamespaceName& nameSpace,
 609                                  const String& currentUser);
 610 kumpf           1.1      
 611                              /**
 612                                  Retrieves list of enabled subscription instances in all namespaces,
 613                                  where the subscription indication class matches or is a superclass
 614 kumpf           1.10             of the supported class, and the properties required to process the
 615                                  subscription are all contained in the list of supported properties.
 616 carolann.graves 1.74             If the checkProvider parameter value is True, a subscription is only
 617                                  included in the list returned if the specified provider accepted the
 618                                  subscription.  If the checkProvider parameter value is False, the
 619 kumpf           1.42             provider parameter is not used (ignored).
 620 kumpf           1.1      
 621 kumpf           1.10             @param   supportedClass       the supported class
 622                                  @param   nameSpaces           the list of supported namespaces
 623                                  @param   supportedProperties  the list of supported properties
 624 kumpf           1.42             @param   checkProvider        indicates whether provider acceptance is
 625                                                                    checked
 626                                  @param   provider             the provider (used if checkProvider True)
 627 kumpf           1.1      
 628 kumpf           1.26             @return   list of CIMInstance subscriptions
 629 kumpf           1.1           */
 630 kumpf           1.82         Array<CIMInstance> _getMatchingSubscriptions(
 631                                  const CIMName& supportedClass,
 632                                  const Array<CIMNamespaceName> nameSpaces,
 633                                  const CIMPropertyList& supportedProperties,
 634 kumpf           1.43             const Boolean checkProvider = false,
 635 kumpf           1.82             const CIMInstance& provider = CIMInstance());
 636 kumpf           1.1      
 637                              /**
 638                                  Retrieves lists of enabled subscription instances in all namespaces
 639                                  that are either newly supported or previously supported, based on the
 640 kumpf           1.9              supported class, the supported namespaces before and after modification,
 641 carolann.graves 1.74             and the supported properties before and after modification.  For
 642                                  subscriptions based on the supported class, the newSubscriptions list
 643                                  returned contains the subscriptions for which the properties required
 644                                  to process the subscription are all contained in the new list of
 645                                  supported properties, but are not all contained in the old list of
 646 kumpf           1.9              supported properties, and/or the filter source namespace is contained in
 647 carolann.graves 1.74             the new list if supported namespaces, but is not contained in the old
 648                                  list of supported namespaces.  The formerSubscriptions list returned
 649 kumpf           1.9              contains the subscriptions for which the properties required to process
 650 carolann.graves 1.74             the subscription are not all contained in the new list of supported
 651                                  properties, but are all contained in the old list of supported
 652                                  properties, and/or the filter source namespace is not contained in the
 653                                  new list if supported namespaces, but is contained in the old list of
 654 kumpf           1.9              supported namespaces.
 655                          
 656 kumpf           1.10             @param   supportedClass       the supported class
 657 kumpf           1.9              @param   newNameSpaces        namespaces supported after modification
 658                                  @param   oldNameSpaces        namespaces supported before modification
 659                                  @param   newProperties        properties supported after modification
 660                                  @param   oldProperties        properties supported before modification
 661 kumpf           1.1              @param   newSubscriptions     the list of newly supported subscriptions
 662                                  @param   formerSubscriptions  the list of previously supported
 663                                                                    subscriptions
 664                               */
 665 kumpf           1.82         void _getModifiedSubscriptions(
 666                                  const CIMName& supportedClass,
 667                                  const Array<CIMNamespaceName>& newNameSpaces,
 668                                  const Array<CIMNamespaceName>& oldNameSpaces,
 669                                  const CIMPropertyList& newProperties,
 670                                  const CIMPropertyList& oldProperties,
 671                                  Array<CIMInstance>& newSubscriptions,
 672                                  Array<CIMInstance>& formerSubscriptions);
 673 kumpf           1.1      
 674                              /**
 675 kumpf           1.9              Determines if all of the required properties in the specified list
 676                                  are contained in the specified list of supported properties.
 677                          
 678                                  @param   requiredProperties  the required properties
 679 kumpf           1.10             @param   supportedProperties the supported properties
 680 kumpf           1.9      
 681 kumpf           1.54             @return   true, if all required properties are supported;
 682 kumpf           1.9                        false otherwise
 683                               */
 684 kumpf           1.82         Boolean _inPropertyList(
 685                                  const CIMPropertyList& requiredProperties,
 686                                  const CIMPropertyList& supportedProperties);
 687 kumpf           1.9      
 688                              /**
 689 chuck           1.64             Builds a QueryExpression from the filter query string,
 690                                  the query language name, and the namespace in which the query
 691                                  is to be run.
 692 kumpf           1.1      
 693                                  @param   filterQuery           the filter query string
 694 chuck           1.64             @param   queryLanguage         the query language name
 695                                  @param   ns                    query namespace
 696 kumpf           1.1      
 697 chuck           1.64             @return  QueryExpression representing the filter query
 698 kumpf           1.1           */
 699 kumpf           1.82         QueryExpression _getQueryExpression(
 700                                  const String& filterQuery,
 701                                  const String& queryLanguage,
 702                                  const CIMNamespaceName& ns) const;
 703 kumpf           1.1      
 704                              /**
 705 chuck           1.64             Extracts the indication class name from the specified query expression
 706                                  (WQL or CQL), and validates that the name represents a subclass of the
 707 kumpf           1.1              Indication class.
 708                          
 709 chuck           1.64             @param   queryExpression       the query expression
 710 kumpf           1.1              @param   nameSpaceName         the namespace
 711                          
 712                                  @return  String containing the indication class name
 713                               */
 714 kumpf           1.82         CIMName _getIndicationClassName(
 715                                  const QueryExpression& queryExpression,
 716                                  const CIMNamespaceName& nameSpaceName) const;
 717 kumpf           1.15     
 718                              /**
 719 kumpf           1.1              Retrieves the list of indication providers that serve the specified
 720                                  indication subclasses.
 721                          
 722 chuck           1.64             @param   queryExpression       the query expression
 723                                  @param   nameSpace             the namespace name
 724 kumpf           1.1              @param   indicationClassName   the indication class name
 725                                  @param   indicationSubclasses  the list of indication subclass names
 726                          
 727                                  @return  list of ProviderClassList structs
 728                               */
 729 kumpf           1.82         Array<ProviderClassList> _getIndicationProviders(
 730                                  const QueryExpression& queryExpression,
 731                                  const CIMNamespaceName& nameSpace,
 732                                  const CIMName& indicationClassName,
 733                                  const Array<CIMName>& indicationSubclasses) const;
 734 kumpf           1.1      
 735                              /**
 736 carolann.graves 1.74             Retrieves the list of required properties (all the properties
 737                                  referenced in the WHERE clause) for the specified filter query
 738 carolann.graves 1.72             expression.
 739 kumpf           1.1      
 740 chuck           1.64             @param   queryExpression       the query expression
 741 kumpf           1.22             @param   nameSpaceName         the namespace
 742 chuck           1.64             @param   indicationClassName   the indication class name
 743 kumpf           1.1      
 744 carolann.graves 1.74             @return  CIMPropertyList of required properties for the filter query
 745 chuck           1.64                      expression
 746 kumpf           1.1           */
 747 kumpf           1.82         CIMPropertyList _getPropertyList(
 748                                  const QueryExpression& queryExpression,
 749                                  const CIMNamespaceName& nameSpaceName,
 750                                  const CIMName& indicationClassName) const;
 751 kumpf           1.22     
 752                              /**
 753 carolann.graves 1.74             Checks if the property list includes all properties in the specified
 754 kumpf           1.22             class.  If so, a NULL CIMPropertyList is returned.  Otherwise, a
 755 carolann.graves 1.74             CIMPropertyList containing the properties is returned.  The list of
 756                                  property names in the specified indication class is also returned in
 757                                  the indicationClassProperties parameter.
 758 carolann.graves 1.60     
 759                                  @param   propertyList                the list of property names
 760                                  @param   nameSpaceName               the namespace
 761                                  @param   indicationClassName         the indication class name
 762                                  @param   indicationClassProperties   the list of property names in the
 763                                                                         specified indication class
 764 kumpf           1.22     
 765 carolann.graves 1.74             @return  CIMPropertyList of properties referenced by the filter query
 766 kumpf           1.22                      select statement
 767                               */
 768 kumpf           1.82         CIMPropertyList _checkPropertyList(
 769                                  const Array<CIMName>& propertyList,
 770                                  const CIMNamespaceName& nameSpaceName,
 771                                  const CIMName& indicationClassName,
 772                                  Array<CIMName>& indicationClassProperties) const;
 773 kumpf           1.1      
 774                              /**
 775                                  Extracts the condition (WHERE Clause) from the specified filter query
 776                                  string.
 777                          
 778                                  @param   filterQuery       the filter query
 779                          
 780                                  @return  String containing the filter query condition
 781                               */
 782 kumpf           1.82         String _getCondition(
 783                                  const String& filterQuery) const;
 784 kumpf           1.1      
 785                              /**
 786 carolann.graves 1.74             Deletes subscriptions referencing the specified handler.  All namespaces
 787                                  are searched for subscriptions that reference the handler to be deleted.
 788 kumpf           1.4      
 789 carolann.graves 1.74             @param   nameSpace             the name space of the handler being
 790                                                                     deleted
 791 kumpf           1.4              @param   referenceProperty     the name of the reference property in the
 792                                                                     subscription instance
 793                                  @param   handler               the handler reference
 794                               */
 795 kumpf           1.82         void _deleteReferencingSubscriptions(
 796                                  const CIMNamespaceName& nameSpace,
 797                                  const CIMName& referenceProperty,
 798                                  const CIMObjectPath& handler);
 799 kumpf           1.4      
 800                              /**
 801                                  Determines if specified Subscription has expired
 802                          
 803                                  NOTE: It is assumed that the instance passed to this function is a
 804                                  Subscription instance, and that the Subscription Duration and
 805                                  Start Time properties exist
 806                          
 807                                  @param   instance              the subscription instance
 808                          
 809 kumpf           1.54             @return  True, if the Subscription has expired;
 810 kumpf           1.4                       False otherwise
 811                               */
 812 kumpf           1.82         Boolean _isExpired(
 813                                  const CIMInstance& instance) const;
 814 kumpf           1.4      
 815                              /**
 816 carolann.graves 1.74             Deletes specified subscription
 817 kumpf           1.5      
 818                                  @param   subscription          the subscription reference
 819                               */
 820 kumpf           1.82         void _deleteExpiredSubscription(
 821                                  CIMObjectPath& subscription);
 822 kumpf           1.21     
 823                              /**
 824                                  Gets the Subscription Time Remaining property
 825                          
 826 carolann.graves 1.74             Calculates time remaining from Subscription Start Time, Subscription
 827 kumpf           1.21             Duration, and current date time.  If the subscription has a non-null
 828 carolann.graves 1.74             Duration, the Time Remaining is set, and True is returned.  If the
 829                                  subscription does not have a non-null Duration, it has no expiration
 830                                  date, and the time remaining is unlimited.  In this case, the Time
 831 kumpf           1.21             Remaining is not set and False is returned.
 832 carolann.graves 1.74     
 833 kumpf           1.21             NOTE: It is assumed that the instance passed to this function is a
 834 carolann.graves 1.74             Subscription instance, and that the Start Time property exists and
 835 kumpf           1.21             has a value
 836                          
 837                                  @param   instance              Input the subscription instance
 838                                  @param   timeRemaining         Output the time remaining (seconds)
 839                          
 840 kumpf           1.54             @return  True, if the subscription has a non-null Duration;
 841 kumpf           1.21                      False otherwise
 842                               */
 843 kumpf           1.82         Boolean _getTimeRemaining(
 844                                  const CIMInstance& instance,
 845                                  Uint64& timeRemaining) const;
 846 kumpf           1.5      
 847                              /**
 848 kumpf           1.4              Sets the Subscription Time Remaining property
 849                          
 850 carolann.graves 1.74             Calculates time remaining from Subscription Start Time, Subscription
 851 kumpf           1.4              Duration, and current date time
 852 carolann.graves 1.74     
 853 kumpf           1.4              NOTE: It is assumed that the instance passed to this function is a
 854                                  Subscription instance, and that the Subscription Duration and
 855                                  Start Time properties exist
 856                          
 857                                  @param   instance              the subscription instance
 858                               */
 859 kumpf           1.82         void _setTimeRemaining(CIMInstance& instance);
 860 kumpf           1.4      
 861                              /**
 862 kumpf           1.23             Gets the parameter values required to Create or Modify the subscription
 863 kumpf           1.10             request.
 864 carolann.graves 1.74             If no indication providers are found, condition and queryLanguage are
 865 kumpf           1.3              set to empty string.
 866                          
 867 kumpf           1.33             @param   subscriptionInstance  Input subscription instance
 868 carolann.graves 1.74             @param   indicationSubclasses  Output list of subclasses of indication
 869 kumpf           1.33                                                class in filter query
 870 kumpf           1.3              @param   indicationProviders   Output list of providers with associated
 871                                                                     classes
 872                                  @param   propertyList          Output list of properties required by the
 873                                                                     subscription
 874 kumpf           1.17             @param   sourceNameSpace       Output source namespace for filter query
 875 kumpf           1.3              @param   condition             Output condition part of the filter query
 876 kumpf           1.58             @param   query                 Output filter query
 877 kumpf           1.3              @param   queryLanguage         Output query language in which the filter
 878                                                                     query is expressed
 879                               */
 880 kumpf           1.82         void _getCreateParams(
 881                                  const CIMInstance& subscriptionInstance,
 882                                  Array<CIMName>& indicationSubclasses,
 883                                  Array<ProviderClassList>& indicationProviders,
 884                                  CIMPropertyList& propertyList,
 885                                  CIMNamespaceName& sourceNameSpace,
 886                                  String& condition,
 887                                  String& query,
 888                                  String& queryLanguage);
 889 kumpf           1.10     
 890                              /**
 891 kumpf           1.23             Gets the parameter values required to Create or Modify the subscription
 892 kumpf           1.10             request.
 893                          
 894 kumpf           1.33             @param   subscriptionInstance  Input subscription instance
 895 carolann.graves 1.74             @param   indicationSubclasses  Output list of subclasses of indication
 896 kumpf           1.33                                                class in filter query
 897 kumpf           1.10             @param   propertyList          Output list of properties required by the
 898                                                                     subscription
 899 kumpf           1.17             @param   sourceNameSpace       Output source namespace for filter query
 900 kumpf           1.10             @param   condition             Output condition part of the filter query
 901 kumpf           1.58             @param   query                 Output filter query
 902 kumpf           1.10             @param   queryLanguage         Output query language in which the filter
 903                                                                     query is expressed
 904                               */
 905 kumpf           1.82         void _getCreateParams(
 906                                  const CIMInstance& subscriptionInstance,
 907                                  Array<CIMName>& indicationSubclasses,
 908                                  CIMPropertyList& propertyList,
 909                                  CIMNamespaceName& sourceNameSpace,
 910                                  String& condition,
 911                                  String& query,
 912                                  String& queryLanguage);
 913 kumpf           1.3      
 914                              /**
 915 kumpf           1.23             Gets the parameter values required to Delete the subscription request.
 916 kumpf           1.5      
 917 kumpf           1.33             @param   subscriptionInstance  Input subscription instance
 918 carolann.graves 1.74             @param   indicationSubclasses  Output list of subclasses of indication
 919 kumpf           1.33                                                class in filter query
 920                                  @param   sourceNameSpace       Output source namespace for filter query
 921 kumpf           1.5      
 922 kumpf           1.23             @return  List of providers with associated classes to Delete
 923 kumpf           1.5           */
 924 kumpf           1.82         Array<ProviderClassList> _getDeleteParams(
 925                                  const CIMInstance& subscriptionInstance,
 926                                  Array<CIMName>& indicationSubclasses,
 927                                  CIMNamespaceName& sourceNameSpace);
 928 mday            1.13     
 929 kumpf           1.5          /**
 930 kumpf           1.23             Sends Create subscription request for the specified subscription
 931 carolann.graves 1.68             to each provider in the list.  The requests are sent using SendAsync,
 932 carolann.graves 1.74             and the responses are aggregated in the callback methods.  Create
 933                                  Subscription requests are sent to the indication providers using
 934                                  SendAsync in the following cases: (1) on creation of an enabled
 935 venkat.puvvada  1.91             subscription instance, (2) on modification of a subscription
 936                                  instance, when the state changes to enabled and (3) on initialization,
 937                                  for each enabled subscription retrieved from the repository if timeout
 938                                  is specified. In cases (1) and (2), there is an original Create Instance
 939                                  or Modify Instance request to which the Indication Service must respond.
 940                                  In case (3), there is no original request and no response is required.
 941 kumpf           1.1      
 942                                  @param   indicationProviders   list of providers with associated classes
 943 kumpf           1.54             @param   nameSpace             the nameSpace name of the resource being
 944 carolann.graves 1.74                                                monitored, from the SourceNamespace
 945                                                                     property of the CIM_IndicationFilter
 946                                                                     instance for the specified
 947 kumpf           1.54                                                subscription
 948 kumpf           1.1              @param   propertyList          the properties referenced by the
 949                                                                     subscription
 950                                  @param   condition             the condition part of the filter query
 951 kumpf           1.58             @param   query                 the filter query
 952 kumpf           1.1              @param   queryLanguage         the query language in which the filter
 953                                                                     query is expressed
 954 kumpf           1.23             @param   subscription          the subscription to be created
 955 chuck           1.35             @param   acceptLangs           the language of the response, and
 956                                                                     future indications
 957                                  @param   contentLangs          the language of the subscription
 958 carolann.graves 1.71             @param   origRequest           the original request (Create
 959 carolann.graves 1.68                                                Instance, Modify Instance)
 960 carolann.graves 1.74             @param   indicationSubclasses  the indication subclasses for the
 961 kumpf           1.41                                                subscription
 962 kumpf           1.9              @param   userName              the userName for authentication
 963                                  @param   authType              the authentication type
 964                          
 965 kumpf           1.1           */
 966 kumpf           1.82         void _sendAsyncCreateRequests(
 967                                  const Array<ProviderClassList>& indicationProviders,
 968                                  const CIMNamespaceName& nameSpace,
 969                                  const CIMPropertyList& propertyList,
 970                                  const String& condition,
 971                                  const String& query,
 972                                  const String& queryLanguage,
 973                                  const CIMInstance& subscription,
 974                                  const AcceptLanguageList& acceptLangs,
 975                                  const ContentLanguageList& contentLangs,
 976 kumpf           1.41             const CIMRequestMessage * origRequest,
 977 kumpf           1.82             const Array<CIMName>& indicationSubclasses,
 978                                  const String& userName,
 979                                  const String& authType = String::EMPTY);
 980 mday            1.13     
 981 kumpf           1.1          /**
 982 carolann.graves 1.68             Sends Create subscription request for the specified subscription
 983                                  to each provider in the list.  The requests are sent using SendWait,
 984                                  so no callback methods are required.  Create Subscription requests are
 985                                  sent to the indication providers using SendWait in the following cases:
 986 carolann.graves 1.74             (1) on notification of a provider registration change newly enabling
 987                                  the provider to serve the subscription, (2) on notification that a
 988                                  provider has been enabled and may now serve the subscription, and
 989 carolann.graves 1.71             (3) on initialization, for each enabled subscription retrieved from the
 990                                  repository.  In cases (1) and (2), there is an original Notify Provider
 991 carolann.graves 1.74             Registration or Notify Provider Enable request to which the Indication
 992 carolann.graves 1.71             Service must respond.  In case (3), there is no original request and no
 993                                  response is required.
 994 carolann.graves 1.68     
 995                                  @param   indicationProviders   list of providers with associated classes
 996                                  @param   nameSpace             the nameSpace name of the resource being
 997                                                                     monitored, from the SourceNamespace
 998                                                                     property of the CIM_IndicationFilter
 999                                                                     instance for the specified
1000                                                                     subscription
1001                                  @param   propertyList          the properties referenced by the
1002                                                                     subscription
1003                                  @param   condition             the condition part of the filter query
1004                                  @param   query                 the filter query
1005                                  @param   queryLanguage         the query language in which the filter
1006                                                                     query is expressed
1007                                  @param   subscription          the subscription to be created
1008                                  @param   acceptLangs           the language of the response, and
1009                                                                     future indications
1010                                  @param   contentLangs          the language of the subscription
1011                                  @param   userName              the userName for authentication
1012                                  @param   authType              the authentication type
1013                          
1014 carolann.graves 1.71             @return  List of providers that accepted subscription
1015 carolann.graves 1.68          */
1016 kumpf           1.82         Array<ProviderClassList> _sendWaitCreateRequests(
1017                                  const Array<ProviderClassList>& indicationProviders,
1018                                  const CIMNamespaceName& nameSpace,
1019                                  const CIMPropertyList& propertyList,
1020                                  const String& condition,
1021                                  const String& query,
1022                                  const String& queryLanguage,
1023                                  const CIMInstance& subscription,
1024                                  const AcceptLanguageList& acceptLangs,
1025                                  const ContentLanguageList& contentLangs,
1026                                  const String& userName,
1027                                  const String& authType = String::EMPTY);
1028 carolann.graves 1.68     
1029                              /**
1030 kumpf           1.23             Sends Modify subscription request for the specified subscription
1031 carolann.graves 1.68             to each provider in the list.   The requests are sent using SendWait,
1032                                  so no callback methods are required.  Modify Subscription requests must
1033 carolann.graves 1.74             be sent to the indication providers on notification of a provider
1034                                  registration change, when the provider was formerly serving the
1035                                  subscription, and is still serving the subscription, in the following
1036                                  cases: (1) the provider is newly serving an additional indication
1037 carolann.graves 1.68             subclass specified by the subscription, or (2) the provider is
1038 carolann.graves 1.74             no longer serving an indication subclass specified by the subscription
1039 kumpf           1.41             (but is still serving at least one of the indication subclasses).
1040 carolann.graves 1.68             In cases (1) and (2), there is an original Notify Provider Registration
1041                                  request to which the Indication Service must respond.
1042 kumpf           1.1      
1043                                  @param   indicationProviders   list of providers with associated classes
1044 kumpf           1.54             @param   nameSpace             the nameSpace name of the resource being
1045                                                                     monitored, from the SourceNamespace
1046                                                                     property of the CIM_IndicationFilter
1047 carolann.graves 1.74                                                instance for the specified
1048                                                                     subscription
1049 kumpf           1.1              @param   propertyList          the properties referenced by the
1050                                                                     subscription
1051                                  @param   condition             the condition part of the filter query
1052 kumpf           1.58             @param   query                 the filter query
1053 kumpf           1.1              @param   queryLanguage         the query language in which the filter
1054                                                                     query is expressed
1055                                  @param   subscription          the subscription to be modified
1056 chuck           1.35             @param   acceptLangs           the language of the response, and
1057                                                                     future indications
1058 carolann.graves 1.74             @param   contentLangs          the language of the subscription
1059 kumpf           1.9              @param   userName              the userName for authentication
1060                                  @param   authType              the authentication type
1061 kumpf           1.1           */
1062 kumpf           1.82         void _sendWaitModifyRequests(
1063                                  const Array<ProviderClassList>& indicationProviders,
1064                                  const CIMNamespaceName& nameSpace,
1065                                  const CIMPropertyList& propertyList,
1066                                  const String& condition,
1067                                  const String& query,
1068                                  const String& queryLanguage,
1069                                  const CIMInstance& subscription,
1070                                  const AcceptLanguageList& acceptLangs,
1071                                  const ContentLanguageList& contentLangs,
1072                                  const String& userName,
1073                                  const String& authType = String::EMPTY);
1074 kumpf           1.1      
1075                              /**
1076 kumpf           1.23             Sends Delete subscription request for the specified subscription
1077 carolann.graves 1.68             to each provider in the list.  The requests are sent using SendAsync,
1078 carolann.graves 1.74             and the responses are aggregated in the callback methods.  Delete
1079                                  Subscription requests are sent to the indication providers using
1080                                  SendAsync in the following cases: (1) on deletion of an enabled
1081                                  subscription instance, (2) on modification of a subscription instance,
1082                                  when the state changes to disabled, (3) on deletion of an expired
1083 venkat.puvvada  1.91             subscription, (4) on deletion of a subscription referencing a
1084                                  deleted transient handler and (5) when indication service is disabled
1085                                  dynamically. In cases (1) and (2), there is an original
1086 carolann.graves 1.74             Delete Instance or Modify Instance request to which the Indication
1087 venkat.puvvada  1.91             Service must respond.  In cases (3), (4) and (5) , there is no
1088                                  orginal request and no response is required.
1089 kumpf           1.1      
1090                                  @param   indicationProviders   list of providers with associated classes
1091 carolann.graves 1.74             @param   nameSpace             the nameSpace name of the resource being
1092 kumpf           1.54                                                monitored, from the SourceNamespace
1093                                                                     property of the CIM_IndicationFilter
1094 carolann.graves 1.74                                                instance for the specified
1095                                                                     subscription
1096 kumpf           1.1              @param   subscription          the subscription to be modified
1097 chuck           1.35             @param   acceptLangs           the language of the response
1098 carolann.graves 1.74             @param   contentLangs          the language of the subscription
1099                                  @param   origRequest           the original request (Delete Instance,
1100 carolann.graves 1.68                                                Modify Instance)
1101 carolann.graves 1.74             @param   indicationSubclasses  the indication subclasses for the
1102 kumpf           1.41                                                subscription
1103 kumpf           1.9              @param   userName              the userName for authentication
1104                                  @param   authType              the authentication type
1105 kumpf           1.1           */
1106 kumpf           1.82         void _sendAsyncDeleteRequests(
1107                                  const Array<ProviderClassList>& indicationProviders,
1108                                  const CIMNamespaceName& nameSpace,
1109                                  const CIMInstance& subscription,
1110                                  const AcceptLanguageList& acceptLangs,
1111                                  const ContentLanguageList& contentLangs,
1112 kumpf           1.41             const CIMRequestMessage * origRequest,
1113 kumpf           1.82             const Array<CIMName>& indicationSubclasses,
1114                                  const String& userName,
1115                                  const String& authType = String::EMPTY);
1116 kumpf           1.1      
1117                              /**
1118 carolann.graves 1.68             Sends Delete subscription request for the specified subscription
1119                                  to each provider in the list.  The requests are sent using SendWait,
1120                                  so no callback methods are required.  Delete Subscription requests are
1121 carolann.graves 1.74             sent to the indication providers using SendWait in the following case:
1122                                  (1) on notification of a provider registration change newly preventing
1123                                  the provider from serving the subscription.  In case (1), there is an
1124                                  original Notify Provider Registration request to which the Indication
1125                                  Service must respond.
1126 carolann.graves 1.68     
1127                                  @param   indicationProviders   list of providers with associated classes
1128                                  @param   nameSpace             the nameSpace name of the resource being
1129                                                                     monitored, from the SourceNamespace
1130                                                                     property of the CIM_IndicationFilter
1131                                                                     instance for the specified
1132                                                                     subscription
1133                                  @param   subscription          the subscription to be modified
1134                                  @param   acceptLangs           the language of the response
1135                                  @param   contentLangs          the language of the subscription
1136                                  @param   userName              the userName for authentication
1137                                  @param   authType              the authentication type
1138                               */
1139 kumpf           1.82         void _sendWaitDeleteRequests(
1140                                  const Array<ProviderClassList>& indicationProviders,
1141                                  const CIMNamespaceName& nameSpace,
1142                                  const CIMInstance& subscription,
1143                                  const AcceptLanguageList& acceptLangs,
1144                                  const ContentLanguageList& contentLangs,
1145                                  const String& userName,
1146                                  const String& authType = String::EMPTY);
1147 carolann.graves 1.68     
1148                              /**
1149 kumpf           1.41             Collects responses from providers for aggregation as they are received,
1150 carolann.graves 1.74             and stores them in the IndicationOperationAggregate instance.  Calls
1151                                  _handleOperationResponseAggregation to process the responses, once all
1152 kumpf           1.41             expected responses have been received.
1153                          
1154 kumpf           1.57             @param  operation            shared data structure that controls message
1155 kumpf           1.41                                              processing
1156                                  @param  destination          target queue of completion callback
1157                                  @param  userParameter        user parameter for callback processing
1158                               */
1159 kumpf           1.82         static void _aggregationCallBack(
1160 kumpf           1.41             AsyncOpNode * operation,
1161                                  MessageQueue * destination,
1162                                  void * userParameter);
1163                          
1164                              /**
1165 carolann.graves 1.74             Calls the appropriate function to processes responses from providers,
1166 kumpf           1.41             based on the type of request sent to providers, once all responses have
1167 carolann.graves 1.74             been received.
1168 kumpf           1.41     
1169 carolann.graves 1.74             @param   operationAggregate    the operation aggregate instance
1170 kumpf           1.41          */
1171 kumpf           1.82         void _handleOperationResponseAggregation(
1172 kumpf           1.41             IndicationOperationAggregate * operationAggregate);
1173                          
1174                              /**
1175 carolann.graves 1.74             Processes create subscription responses from providers, once all have
1176                                  been received.  Takes the appropriate action, based on the type of the
1177                                  original request, if any, and the responses received.  Sends the
1178 kumpf           1.41             response to the original request, if required.
1179                          
1180 carolann.graves 1.74             @param   operationAggregate    the operation aggregate instance
1181 kumpf           1.41          */
1182 kumpf           1.82         void _handleCreateResponseAggregation(
1183 kumpf           1.41             IndicationOperationAggregate * operationAggregate);
1184                          
1185                              /**
1186 carolann.graves 1.74             Processes modify subscription responses from providers, once all have
1187 kumpf           1.41             been received.  Updates the subscription hash tables.
1188                          
1189 carolann.graves 1.74             @param   operationAggregate    the operation aggregate instance
1190 kumpf           1.41          */
1191 kumpf           1.82         void _handleModifyResponseAggregation(
1192 kumpf           1.41             IndicationOperationAggregate * operationAggregate);
1193                          
1194                              /**
1195 carolann.graves 1.74             Processes delete subscription responses from providers, once all have
1196                                  been received.  Updates the subscription hash tables appropriately,
1197                                  based on the type of the original request, if any.  Sends the response
1198 kumpf           1.41             to the original request, if required.
1199                          
1200 carolann.graves 1.74             @param   operationAggregate    the operation aggregate instance
1201 kumpf           1.41          */
1202 kumpf           1.82         void _handleDeleteResponseAggregation(
1203 kumpf           1.41             IndicationOperationAggregate * operationAggregate);
1204                          
1205                              /**
1206 kumpf           1.1              Creates an alert instance of the specified class.
1207                          
1208                                  @param   alertClassName        the alert class name
1209 kumpf           1.7              @param   subscriptions         subscriptions for which alert is to be
1210 kumpf           1.1                                                 created
1211                          
1212                                  @return  the created alert instance
1213                               */
1214 kumpf           1.82         CIMInstance _createAlertInstance(
1215                                  const CIMName& alertClassName,
1216                                  const Array<CIMInstance>& subscriptions);
1217 mday            1.14     
1218 kumpf           1.40     #if 0
1219 kumpf           1.82         /**
1220                                  Asynchronous completion routine for _sendAlerts
1221                               */
1222                          
1223                              static void _sendAlertsCallBack(
1224                                  AsyncOpNode* operation,
1225                                  MessageQueue* callback_destination,
1226                                  void* parameter);
1227 kumpf           1.1      
1228                              /**
1229                                  Sends specified alert to each unique handler instance for the
1230                                  specified subscriptions in the list.
1231                          
1232 kumpf           1.7              @param   subscriptions         subscriptions for which alert is to be
1233 kumpf           1.1                                                 sent
1234                                  @param   alertInstance         the alert to be sent
1235                               */
1236 kumpf           1.82         void _sendAlerts(
1237                                  const Array<CIMInstance>& subscriptions,
1238                                  /* const */ CIMInstance& alertInstance);
1239 kumpf           1.40     #endif
1240 carolann.graves 1.74     
1241 kumpf           1.16         /**
1242 kumpf           1.37             Gets the value of the Creator property from the specified Subscription
1243 carolann.graves 1.74             instance.  If this function returns False, the value of the creator
1244 kumpf           1.37             parameter is unchanged.
1245                          
1246                                  @param   instance              subscription instance
1247                                  @param   creator               value of Creator property if retrieved
1248                          
1249 kumpf           1.54             @return  True, if the value of the Creator property was retrieved;
1250 kumpf           1.37                      False if Creator property was missing, null, or of an
1251 kumpf           1.54                            incorrect type
1252 kumpf           1.37          */
1253 kumpf           1.82         Boolean _getCreator(
1254                                  const CIMInstance& instance,
1255                                  String& creator) const;
1256 kumpf           1.37     
1257                              /**
1258 kumpf           1.54             Validates the specified SubscriptionState property value.
1259 kumpf           1.37     
1260 kumpf           1.54             @param   state                 SubscriptionState property value
1261 kumpf           1.37     
1262 kumpf           1.54             @return  True, if the SubscriptionState property value is valid;
1263                                           False otherwise
1264 kumpf           1.37          */
1265 kumpf           1.82         Boolean _validateState(
1266 kumpf           1.54             const Uint16 state) const;
1267 kumpf           1.37     
1268 kumpf           1.46         /**
1269                                  This function peforms an authorization test based on the
1270                                  value of the enableSubscriptionForNonprivilegedUsers.
1271                          
1272                                  @param   userName                String
1273                          
1274 carolann.graves 1.74             @return  True, if authentication is not enabled or the
1275 kumpf           1.54                            user is a privileged system user;
1276                                           False, if authentication is enabled and the
1277                                                 user is not privileged
1278 kumpf           1.46          */
1279 kumpf           1.82         void _checkNonprivilegedAuthorization(
1280                                  const String& userName);
1281 kumpf           1.46     
1282 kumpf           1.48         /**
1283 kumpf           1.49             Updates the propertyList, in preparation for calling the Repository.
1284 carolann.graves 1.74             If the propertyList is not null, the Creator property must be added to
1285                                  the list.  Also, if the request is for the Subscription class, the
1286                                  value of the Time Remaining property need only be calculated if it is
1287                                  requested.  In that case, the Subscription Duration and Start Time
1288                                  properties must be added to the list if not already there.
1289 kumpf           1.49     
1290                                  @param   className             class name for the request
1291                                  @param   propertyList          list of properties requested
1292                                  @param   setTimeRemaining      indicates whether Time Remaining property
1293                                                                 was requested
1294                                  @param   startTimeAdded        indicates whether Start Time property was
1295                                                                 added to the list
1296                                  @param   durationAdded         indicates whether Duration property was
1297                                                                 added to the list
1298                               */
1299 kumpf           1.82         void _updatePropertyList(
1300                                  CIMName& className,
1301                                  CIMPropertyList& propertyList,
1302                                  Boolean& setTimeRemaining,
1303                                  Boolean& startTimeAdded,
1304                                  Boolean& durationAdded);
1305 kumpf           1.49     
1306                              /**
1307 carolann.graves 1.74             Gets a String containing the comma-separated Subscription Filter Name
1308 kumpf           1.48             and Handler Name, for use in a log message to identify the subscription.
1309                          
1310                                  @param   subscription          subscription instance
1311                          
1312                                  @return  String containing the comma-separated Subscription Filter Name
1313                                           and Handler Name
1314                               */
1315 kumpf           1.82         String _getSubscriptionLogString(CIMInstance& subscription);
1316 kumpf           1.48     
1317 yi.zhou         1.83         /**
1318 kumpf           1.89             Retrieves list of enabled subscription instances based on the class
1319 yi.zhou         1.83             name and namespace of the generated indication. If the subscription
1320 kumpf           1.89             matches the class name and namespace of the generated indication
1321                                  and the provider who generated this indication accepted this
1322 yi.zhou         1.83             subscription, the subscription is added to the initial subscriptions
1323 kumpf           1.89             list.
1324                                  If the indication provider included subscriptions in the
1325                                  SubscriptionInstanceNamesContainer, the subset of subscriptions
1326 yi.zhou         1.83             specified by the indication provider that also appear in the initial
1327                                  subscriptions list is returned.
1328 kumpf           1.89             Any subscription included by the provider but not containing in the
1329 yi.zhou         1.83             initial subscriptions list is ignored.
1330 kumpf           1.89     
1331                                  @param   providedSubscriptionNames   Subscriptions specified by the
1332 yi.zhou         1.83                                                  indication provider
1333 kumpf           1.89             @param   className                   The generated indication class
1334                                                                       name
1335                                  @param   nameSpace                   The generated indication namespace
1336                                  @param   indicationProvider          The provider which generated
1337                                                                       the indication
1338 yi.zhou         1.84             @param   subscriptions               Output Array of subscription
1339                                                                       instances
1340                                  @param   subscriptionKeys            Output Array of keys associated
1341                                                                       with the subscriptions
1342 yi.zhou         1.83         */
1343 yi.zhou         1.84         void _getRelevantSubscriptions(
1344 yi.zhou         1.83             const Array<CIMObjectPath> & providedSubscriptionNames,
1345                                  const CIMName& className,
1346 kumpf           1.89             const CIMNamespaceName& nameSpace,
1347 yi.zhou         1.84             const CIMInstance& indicationProvider,
1348                                  Array<CIMInstance>& subscriptions,
1349                                  Array<String>& subscriptionKeys);
1350 yi.zhou         1.83     
1351                              /**
1352                                  Evaluate if the specified subscription matches the indication based on:
1353                                  1) Whether the properties (in WHERE clause) from filter query are
1354                                     supported by the indication provider;
1355                                  2) Whether the subscripton is expired;
1356                                  3) Whether the filter criteria are met by the generated indication
1357                          
1358                                  @param   subscription              The subscription to be evaluated
1359                                  @param   indication                The generated indication
1360                                  @param   supportedPropertyList     The properties are supported by the
1361                                                                     indication provider
1362                                  @param   queryExpr                 The query expression of the evaluated
1363 kumpf           1.89                                                subscription which is used for
1364 yi.zhou         1.83                                                indication evaluation
1365                                  @param   sourceNameSpace           The source namespace of the filter
1366                                                                     instance
1367                          
1368                                  @return  True, if the subscription is met all above conditions;
1369                                           False otherwise
1370                              */
1371                              Boolean _subscriptionMatch(
1372                                  const CIMInstance& subscription,
1373                                  const CIMInstance& indication,
1374                                  const CIMPropertyList& supportedPropertyList,
1375                                  QueryExpression& queryExpr,
1376                                  const CIMNamespaceName sourceNameSpace);
1377                          
1378                              /**
1379                                  Format the generated indication based on:
1380                                  1) Use QueryExpression::applyProjection to remove properties not
1381                                     listed in the SELECT clause;
1382 kumpf           1.89             2) Remove any properties that may be left on the indication
1383 yi.zhou         1.83                that are not in the indication class. These are properties
1384                                     added by the provider incorrectly.
1385 kumpf           1.89     
1386                                  @param   formattedindication          The generated indication to
1387 yi.zhou         1.83                                                   be formatted
1388 kumpf           1.89             @param   queryExpr,                   The query expression of the
1389 yi.zhou         1.83                                                   matched subscription needs to be
1390 kumpf           1.89                                                   used for indication projection
1391                                  @param   ProviderSupportedProperties  The properties are supported by
1392 yi.zhou         1.83                                                   the indication provider
1393 kumpf           1.89             @param   indicationClassProperties    The indication class properties
1394 yi.zhou         1.83     
1395                                  @return  True, if the indication is formatted;
1396                                           False otherwise
1397                              */
1398                              Boolean _formatIndication(
1399                                  CIMInstance& formattedIndication,
1400                                  QueryExpression& queryExpr,
1401                                  const Array<CIMName>& providerSupportedProperties,
1402                                  const Array<CIMName>& indicationClassProperties);
1403                          
1404                              /**
1405                                  Forward the formatted indication to the handler
1406                          
1407 kumpf           1.89             @param   matchedSubscription    The matched subscription
1408 yi.zhou         1.83             @param   handlerInstance        The handler instance for the matched
1409 kumpf           1.89                                             subscription
1410                                  @param   formattedIndication    The formatted indication
1411                                  @param   namespaceName          The generated indication namespace
1412                                  @param   operationContext       The operation context
1413 yi.zhou         1.83         */
1414                              void _forwardIndToHandler(
1415                                  const CIMInstance& matchedSubscription,
1416                                  const CIMInstance& handlerInstance,
1417                                  const CIMInstance& formattedIndication,
1418                                  const CIMNamespaceName& namespaceName,
1419 karl            1.97.2.1         const OperationContext& operationContext,
1420                                  DeliveryStatusAggregator *deliveryStatusAggregator);
1421 yi.zhou         1.83     
1422 venkat.puvvada  1.91         /**
1423                                  Updates the subscription table with the information of the providers
1424                                  those accepted the subscription. This method is called during indication
1425                                  service initialization.
1426                          
1427                                  @param  subscription           The accepted subscription.
1428                                  @param  acceptedProviders      Subscription accepted providers list.
1429                                  @param  indicationSubclasses   The indication subclasses for the
1430                                                                     subscription
1431                                  @param  sourceNameSpace        The nameSpace name of the resource being
1432                                                                     monitored, from the SourceNamespace
1433                                                                     property of the CIM_IndicationFilter
1434                                                                     instance for the specified
1435                                                                     subscription
1436                          
1437                              */
1438                              void _updateAcceptedSubscription(
1439                                  CIMInstance &subscription,
1440                                  const Array<ProviderClassList> &acceptedProviders,
1441                                  const Array<CIMName> &indicationSubclasses,
1442                                  const CIMNamespaceName &sourceNameSpace);
1443 venkat.puvvada  1.91     
1444 venkat.puvvada  1.95         void _deliverWaitingIndications();
1445                              void _beginCreateSubscription(const CIMObjectPath &objPath);
1446                              void _cancelCreateSubscription(const CIMObjectPath &objPath);
1447                              void _commitCreateSubscription(const CIMObjectPath &objPath);
1448                          
1449 venkat.puvvada  1.91     
1450                              AutoPtr<SubscriptionRepository> _subscriptionRepository;
1451 kumpf           1.51     
1452 venkat.puvvada  1.91         AutoPtr<SubscriptionTable> _subscriptionTable;
1453 kumpf           1.6      
1454 yi.zhou         1.84     #ifdef PEGASUS_ENABLE_INDICATION_COUNT
1455                              ProviderIndicationCountTable _providerIndicationCountTable;
1456                          #endif
1457                          
1458 venkat.puvvada  1.85     #ifdef PEGASUS_ENABLE_DMTF_INDICATION_PROFILE_SUPPORT
1459 venkat.puvvada  1.91     
1460                              /**
1461                                  Holds the number of async requests pending with the service.
1462                              */
1463                              AtomicInt _asyncRequestsPending;
1464                          
1465                              /**
1466                                  Holds the number of threads  processing the indications.
1467                              */
1468                              AtomicInt _processIndicationThreads;
1469                          
1470                              AutoPtr<IndicationServiceConfiguration> _indicationServiceConfiguration;
1471 venkat.puvvada  1.97     #else
1472                              Uint32 _enabledState;
1473 venkat.puvvada  1.85     #endif
1474                          
1475 kumpf           1.8          /**
1476 venkat.puvvada  1.95             Indications waiting for completion of pending create subscription
1477                                  requests.
1478                              */
1479                              List<Message, Mutex> _deliveryWaitIndications;
1480                          
1481                              /**
1482 kumpf           1.8              Handle to Provider Registration Manager
1483                               */
1484                              ProviderRegistrationManager * _providerRegManager;
1485 kumpf           1.5      
1486 carolann.graves 1.74         /**
1487 chuck           1.64             Pointer to CIMRepository, for use in building QueryExpression.
1488                               */
1489                              CIMRepository* _cimRepository;
1490                          
1491 kumpf           1.5          /**
1492                                  Integer representing queue ID for accessing Provider Manager Service
1493                               */
1494                              Uint32 _providerManager;
1495                          
1496                              /**
1497                                  Integer representing queue ID for accessing Handler Manager Service
1498                               */
1499                              Uint32 _handlerService;
1500                          
1501                              /**
1502 karl            1.97.2.1         Integer representing queue ID for accessing Module Controller
1503                               */
1504                              Uint32 _moduleController;
1505                          
1506                              /**
1507 kumpf           1.46             Boolean indicating that the CIM Server has been configured to
1508                                  allow non-privileged users read and write access to the
1509                                  Subscription classes.
1510                               */
1511                              Boolean _enableSubscriptionsForNonprivilegedUsers;
1512                          
1513 kumpf           1.55         /**
1514 carolann.graves 1.80             Boolean indicating whether authentication is currently enabled in the
1515                                  CIM Server.
1516                               */
1517                              Boolean _authenticationEnabled;
1518                          
1519                              /**
1520 kumpf           1.82             Gets the indication class specified by the subscription filter query.
1521 yi.zhou         1.66     
1522 kumpf           1.82             @param instance     the subscription instance
1523 yi.zhou         1.66     
1524 kumpf           1.82             @return CIMClass object for the indication class
1525 yi.zhou         1.66         */
1526 kumpf           1.82         CIMClass _getIndicationClass(const CIMInstance& instance);
1527 yi.zhou         1.66     
1528 karl            1.97.2.1     void _buildInternalControlProvidersRegistration();
1529                          
1530                              Array<ProviderClassList> _getInternalIndProviders(
1531                                  const CIMNamespaceName& nameSpace,
1532                                  const Array<CIMName>& indicationSubclasses) const;
1533                          
1534 yi.zhou         1.66         /**
1535 kumpf           1.55             Arrays of valid and supported property values
1536                          
1537 carolann.graves 1.74             Notes:
1538 kumpf           1.55             Valid values are defined by the CIM Event Schema MOF
1539                                  Supported values are a subset of the valid values
1540                                  Some valid values, as defined in the MOF, are not currently supported
1541                                      by the Pegasus IndicationService
1542                          
1543 carolann.graves 1.74             Supported Values
1544 kumpf           1.55             SubscriptionState: Enabled, Disabled
1545                                  RepeatNotificationPolicy: Unknown, Other, None, Suppress, Delay
1546                                  OnFatalErrorPolicy: Ignore, Disable, Remove
1547                                  PersistenceType: Permanent, Transient
1548 yi.zhou         1.77             SNMPVersion: SNMPv1 Trap, SNMPv2C Trap
1549 kumpf           1.55          */
1550 kumpf           1.82         Array<Uint16> _validStates;
1551                              Array<Uint16> _validRepeatPolicies;
1552                              Array<Uint16> _validErrorPolicies;
1553                              Array<Uint16> _validPersistenceTypes;
1554                              Array<Uint16> _validSNMPVersion;
1555                              Array<Uint16> _supportedStates;
1556                              Array<Uint16> _supportedRepeatPolicies;
1557                              Array<Uint16> _supportedErrorPolicies;
1558                              Array<Uint16> _supportedPersistenceTypes;
1559                              Array<Uint16> _supportedSNMPVersion;
1560 yi.zhou         1.66     
1561 carolann.graves 1.76         /**
1562                                  Arrays of names of supported properties for each class
1563                               */
1564 kumpf           1.82         Array<CIMName> _supportedSubscriptionProperties;
1565                              Array<CIMName> _supportedFormattedSubscriptionProperties;
1566                              Array<CIMName> _supportedFilterProperties;
1567                              Array<CIMName> _supportedCIMXMLHandlerProperties;
1568                              Array<CIMName> _supportedCIMXMLListenerDestinationProperties;
1569                              Array<CIMName> _supportedSNMPHandlerProperties;
1570                              Array<CIMName> _supportedSyslogListenerDestinationProperties;
1571                              Array<CIMName> _supportedEmailListenerDestinationProperties;
1572 karl            1.97.2.1     ControlProvIndRegTable _controlProvIndRegTable;
1573 kumpf           1.1      };
1574                          
1575 venkat.puvvada  1.91     // Use with AutoPtr to automatically decrement AtomicInt
1576                          struct DecAtomicInt
1577                          {
1578                              void operator()(AtomicInt* ptr)
1579                              {
1580                                  if (ptr)
1581                                  {
1582                                      ptr->dec();
1583                                  }
1584                              }
1585                          };
1586                          
1587 karl            1.97.2.1 struct ExpectedResponseCountSetDone
1588                          {
1589                              void operator()(DeliveryStatusAggregator* ptr)
1590                              {
1591                                  if (ptr)
1592                                  {
1593                                      ptr->expectedResponseCountSetDone();
1594                                  }
1595                              }
1596                          };
1597                          
1598 kumpf           1.1      PEGASUS_NAMESPACE_END
1599                          
1600 kumpf           1.41     #endif  /* Pegasus_IndicationService_h */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2