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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2