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

   1 karl  1.47 //%2003////////////////////////////////////////////////////////////////////////
   2 kumpf 1.1  //
   3 karl  1.47 // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development
   4            // Company, L. P., IBM Corp., The Open Group, Tivoli Systems.
   5            // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.;
   6            // IBM Corp.; EMC Corporation, The Open Group.
   7 kumpf 1.1  //
   8            // Permission is hereby granted, free of charge, to any person obtaining a copy
   9            // of this software and associated documentation files (the "Software"), to
  10            // deal in the Software without restriction, including without limitation the
  11            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  12            // sell copies of the Software, and to permit persons to whom the Software is
  13            // furnished to do so, subject to the following conditions:
  14 kumpf 1.27 // 
  15 kumpf 1.1  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
  16            // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
  17            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  18            // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  19            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  20            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  21            // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  22            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  23            //
  24            //==============================================================================
  25            //
  26            // Author: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
  27            //
  28            // Modified By:  Carol Ann Krug Graves, Hewlett-Packard Company
  29 kumpf 1.39 //                   (carolann_graves@hp.com)
  30            //               Ben Heilbronn, Hewlett-Packard Company (ben_heilbronn@hp.com)
  31            //               Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
  32 kumpf 1.1  //
  33            //%/////////////////////////////////////////////////////////////////////////////
  34            
  35            #ifndef Pegasus_IndicationService_h
  36            #define Pegasus_IndicationService_h
  37            
  38            #include <Pegasus/Common/Config.h>
  39            #include <Pegasus/Common/MessageQueueService.h>
  40            #include <Pegasus/Common/CIMMessage.h>
  41 kumpf 1.24 #include <Pegasus/Common/IPC.h>
  42 kumpf 1.1  #include <Pegasus/Repository/CIMRepository.h>
  43 kumpf 1.6  #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h>
  44 kumpf 1.1  #include <Pegasus/WQL/WQLParser.h>
  45            #include <Pegasus/WQL/WQLSelectStatement.h>
  46            #include <Pegasus/WQL/WQLSimplePropertySource.h>
  47 kumpf 1.28 #include <Pegasus/Server/Linkage.h>
  48 chuck 1.35 #include <Pegasus/Common/AcceptLanguages.h> // l10n  
  49            #include <Pegasus/Common/ContentLanguages.h> // l10n
  50 kumpf 1.1  
  51 kumpf 1.41 #include "ProviderClassList.h"
  52            #include "IndicationOperationAggregate.h"
  53            
  54 kumpf 1.1  PEGASUS_NAMESPACE_BEGIN
  55            
  56 kumpf 1.10 /**
  57 kumpf 1.33     Entry for ActiveSubscriptions table
  58 kumpf 1.10  */
  59 kumpf 1.33 struct ActiveSubscriptionsTableEntry
  60 kumpf 1.10 {
  61 kumpf 1.26     CIMInstance subscription;
  62 kumpf 1.33     Array <ProviderClassList> providers;
  63 kumpf 1.10 };
  64 kumpf 1.1  
  65 kumpf 1.10 /**
  66 kumpf 1.33     Table for active subscription information
  67            
  68                The ActiveSubscriptions table is used to keep track of active subscriptions.
  69 kumpf 1.51     This table contains an entry for each subscription that is enabled 
  70                (value of SubscriptionState property is enabled).  
  71 kumpf 1.33     Each entry consists of a Subscription instance, and a list of 
  72 kumpf 1.51     ProviderClassList structs representing the providers, if any, currently 
  73                serving each subscription and the relevant indication subclasses served by 
  74                each provider.
  75 kumpf 1.33     The Key is generated by concatenating the namespace name of the 
  76                subscription instance, and the subscription instance key values (filter and
  77                handler key values).
  78 kumpf 1.51     Entries are inserted into the table on initialization, when an enabled 
  79                subscription instance is created, or when a subscription instance is 
  80                modified to be enabled.
  81                Entries are removed from the table when an enabled subscription instance is
  82                deleted, or when a subscription instance is modified to be disabled.
  83                Entries are updated (remove followed by insert) when a provider serving a 
  84                subscription is disabled or enabled, or a provider registration change 
  85                occurs.
  86 kumpf 1.33     The _handleProcessIndicationRequest() function, when a list of 
  87                subscriptions is included in request, looks up each subscription in the 
  88                table.
  89                The _handleNotifyProviderRegistrationRequest() function, once matching
  90                subscriptions have been identified, looks up the provider information for 
  91                each matching subscription in the table.
  92                The _handleModifyInstanceRequest() and _handleDeleteInstanceRequest() 
  93                functions, when sending delete requests to providers, look up the providers
  94                for the subscription in the table.
  95                The _handleNotifyProviderTerminationRequest() function, when a provider is 
  96                disabled, iterates through the table to retrieve all active 
  97                subscriptions being served by the provider.
  98                The terminate() function, when the CIM Server is being shut down, iterates 
  99                through the table to retrieve all active subscriptions.
 100 kumpf 1.10  */
 101            typedef HashTable <String, 
 102 kumpf 1.33                    ActiveSubscriptionsTableEntry, 
 103 kumpf 1.10                    EqualFunc <String>, 
 104 kumpf 1.33                    HashFunc <String> > ActiveSubscriptionsTable;
 105            
 106            /**
 107                Entry for SubscriptionClasses table
 108             */
 109            struct SubscriptionClassesTableEntry
 110            {
 111                CIMName indicationClassName;
 112                CIMNamespaceName sourceNamespaceName;
 113                Array <CIMInstance> subscriptions;
 114            };
 115            
 116            /**
 117                Table for subscription classes information
 118            
 119                The SubscriptionClasses Table is used to keep track of active subscriptions 
 120                for each indication subclass-source namespace pair.
 121                Each entry consists of an indication subclass name, a source namespace name,
 122                and a list of subscription instances.
 123                The Key is generated by concatenating the indication subclass name, and the
 124                source namespace name.
 125 kumpf 1.33     The _handleProcessIndicationRequest() function, when no list of 
 126                subscriptions is included in the request, looks up matching subscriptions 
 127                in the table, using the class name and namespace name of the indication 
 128                instance.
 129                The _handleNotifyProviderRegistrationRequest() function, when an indication
 130                provider registration instance has been created or deleted, looks up 
 131                matching subscriptions in the table, using the class name and namespace 
 132                names from the provider registration instance.  
 133             */
 134            typedef HashTable <String,
 135                               SubscriptionClassesTableEntry,
 136                               EqualFunc <String>,
 137                               HashFunc <String> > SubscriptionClassesTable;
 138 kumpf 1.1  
 139            /**
 140            
 141 kumpf 1.5      IndicationService class is the service that serves the
 142 kumpf 1.10     Indication Subscription, Indication Filter, and Indication Handler
 143 kumpf 1.5      classes, and processes indications.
 144 kumpf 1.1  
 145                @author  Hewlett-Packard Company
 146            
 147             */
 148            
 149            class PEGASUS_SERVER_LINKAGE IndicationService : public MessageQueueService
 150            {
 151            public:
 152            
 153                typedef MessageQueueService Base;
 154            
 155                /**
 156                    Constructs an IndicationSubscription instance and initializes instance
 157                    variables.
 158                 */
 159 kumpf 1.6      IndicationService (
 160                    CIMRepository * repository,
 161 kumpf 1.8          ProviderRegistrationManager * providerRegManager);
 162 kumpf 1.1  
 163                virtual ~IndicationService(void);
 164            
 165 mday  1.2      void handleEnqueue(Message* message);
 166 kumpf 1.1  
 167                virtual void handleEnqueue(void); 
 168            
 169                virtual void _handle_async_request(AsyncRequest *req);
 170            
 171                AtomicInt dienow;
 172            
 173                /**
 174 kumpf 1.5          Operation types for the NotifyProviderRegistration message
 175 kumpf 1.1       */
 176 kumpf 1.5      enum Operation {OP_CREATE = 1, OP_DELETE = 2, OP_MODIFY = 3};
 177 kumpf 1.24 
 178                static Mutex _mutex;
 179 kumpf 1.1  
 180 kumpf 1.5  private:
 181 kumpf 1.1  
 182                void _initialize (void);
 183            
 184                void _terminate (void);
 185            
 186                void _handleGetInstanceRequest(const Message * message);
 187            
 188                void _handleEnumerateInstancesRequest(const Message * message);
 189            
 190                void _handleEnumerateInstanceNamesRequest(const Message * message);
 191            
 192                void _handleCreateInstanceRequest(const Message * message);
 193            
 194                void _handleModifyInstanceRequest(const Message * message);
 195            
 196                void _handleDeleteInstanceRequest(const Message * message);
 197            
 198                void _handleProcessIndicationRequest(const Message * message);
 199            
 200                /**
 201            	Notifies the Indication Service that a change in provider registration
 202 kumpf 1.1  	has occurred.  The Indication Service retrieves the subscriptions
 203 kumpf 1.23 	affected by the registration change, sends the appropriate Create,
 204                    Modify, and/or Delete requests to the provider, and sends an alert to 
 205 kumpf 1.10         handler instances of subscriptions that are no longer served by the 
 206                    provider.
 207 kumpf 1.1      */
 208                void _handleNotifyProviderRegistrationRequest(const Message * message);
 209            
 210                /**
 211 kumpf 1.33         Determines if the specified provider is in the list of providers 
 212                    serving the subscription.  
 213            
 214                    @param   provider              the provider instance
 215                    @param   tableValue            the Active Subscriptions Table entry
 216            
 217                    @return  The index of the provider in the list, if found
 218                             PEG_NOT_FOUND otherwise
 219                */
 220                Uint32 _providerInList 
 221                    (const CIMInstance & provider,
 222                     const ActiveSubscriptionsTableEntry & tableValue);
 223            
 224                /**
 225                    Determines if the specified class is in the list of indication 
 226                    subclasses served by the specified provider, serving the subscription.  
 227            
 228                    @param   className             the class name
 229                    @param   providerClasses       the list of providers serving the 
 230                                                   subscription, with the classes served
 231            
 232 kumpf 1.33         @return  The index of the class name in the list, if found
 233                             PEG_NOT_FOUND otherwise
 234                */
 235                Uint32 _classInList
 236                    (const CIMName & className,
 237                     const ProviderClassList & providerClasses);
 238            
 239                /**
 240                    Notifies the Indication Service that a provider has been disabled.  
 241 kumpf 1.51         The Indication Service retrieves the subscriptions served by the
 242                    disabled provider, and logs a message for each subscription that is no 
 243                    longer served by the provider.
 244 kumpf 1.1       */
 245                void _handleNotifyProviderTerminationRequest(const Message * message);
 246            
 247                /**
 248 kumpf 1.51         Notifies the Indication Service that a provider has been enabled.  
 249                    The Indication Service retrieves the subscriptions that can be served 
 250                    by the enabled provider, sends Create Subscription and Enable 
 251                    Indications requests to the provider, and logs a message for each 
 252                    subscription that is now served by the provider.
 253                 */
 254                void _handleNotifyProviderEnableRequest (const Message * message);
 255            
 256                /**
 257 kumpf 1.12         Implements the subscription's On Fatal Error Policy.
 258                    This function is called when a fatal error has occurred in the
 259                    indication provider or indication handler, and the subscription can no
 260                    longer be served.
 261                    If the subscription's policy is Disable, the Subscription State is
 262                    set to Disabled.
 263                    If the subscription's policy is Remove, the subscription instance is 
 264                    deleted.
 265            
 266 kumpf 1.33         @param   subscription          the subscription instance
 267 kumpf 1.12 
 268                    @return  True if the subscription has been disabled or deleted
 269                             False otherwise
 270                 */
 271                Boolean _handleError (
 272 kumpf 1.26         const CIMInstance subscription);
 273 kumpf 1.12 
 274                /**
 275                    Disables the subscription.
 276                    This function is called when a fatal error has occurred in the
 277                    indication provider or indication handler, the subscription can no
 278                    longer be served, and the subscription's policy is Disable.
 279                    The Subscription State is set to Disabled.
 280            
 281 kumpf 1.33         @param   subscription          the subscription instance
 282 kumpf 1.12      */
 283                void _disableSubscription (
 284 kumpf 1.26         CIMInstance subscription);
 285 kumpf 1.12 
 286                /**
 287                    Deletes the subscription instance.
 288                    This function is called when a fatal error has occurred in the
 289                    indication provider or indication handler, the subscription can no
 290                    longer be served, and the subscription's policy is Remove.
 291                    The subscription instance is deleted.
 292            
 293 kumpf 1.33         @param   subscription          the subscription instance
 294 kumpf 1.12      */
 295                void _deleteSubscription (
 296 kumpf 1.26         const CIMInstance subscription);
 297 kumpf 1.12 
 298                /**
 299 kumpf 1.5          Determines if it is legal to create an instance. 
 300                    Checks for existence of all key and required properties.  Checks that 
 301                    properties that MUST NOT exist (based on values of other properties), 
 302                    do not exist.  For any property that has a default value, if it does 
 303                    not exist, adds the property with the default value.
 304            
 305                    @param   instance              instance to be created
 306                    @param   nameSpace             namespace for instance to be created
 307            
 308                    @throw   CIM_ERR_INVALID_PARAMETER  if instance is invalid
 309                    @throw   CIM_ERR_NOT_SUPPORTED      if the specified class is not 
 310                                                        supported
 311            
 312                    @return  True if the instance can be created
 313 kumpf 1.10                  Otherwise throws an exception
 314 kumpf 1.5       */
 315                Boolean _canCreate (
 316                    CIMInstance & instance,
 317 kumpf 1.31         const CIMNamespaceName & nameSpace);
 318 kumpf 1.5  
 319 kumpf 1.21     /**
 320                    Validates the specified required property in the instance.
 321                    If the property does not exist, or has a null value, an exceptiuon is 
 322                    thrown, using the specified message.
 323            
 324                    This function is called by the _canCreate function, and is used to 
 325                    validate the  Filter and Handler properties in Subscription instances,
 326                    the Name, CreationClassName, Query and Query Language properties in 
 327                    Filter instances, the Name, CreationClassName, and Destination 
 328                    properties in CIMXML Handler instances, and the Name, CreationClassName,
 329                    Trap Destination, and SNMP Version properties in SNMP Mapper instances.
 330            
 331                    @param   instance              instance to be validated
 332                    @param   propertyName          name of property to be validated
 333                    @param   message               message to be used in exception
 334            
 335                    @throw   CIM_ERR_INVALID_PARAMETER  if required property is missing or 
 336                                                        null
 337                 */
 338 kumpf 1.20     void _checkRequiredProperty (
 339                    CIMInstance & instance,
 340 kumpf 1.31         const CIMName & propertyName,
 341 kumpf 1.20         const String & message);
 342            
 343 kumpf 1.5      /**
 344 kumpf 1.15         Validates the specified property and its corresponding Other___
 345                    property in the instance.
 346                    If the property does not exist, it is added with the default value.
 347                    If the property exists, but its value is NULL, its value is set to
 348                    the default value.
 349                    If the value of the property is Other, but the corresponding Other___
 350                    property either does not exist or has a value of NULL, an exception is 
 351                    thrown.  
 352                    If the value of the property is not Other, but the corresponding
 353                    Other___ property exists and has a non-NULL value, an exception is
 354                    thrown.
 355                    This function is called by the _canCreate function, and is used to 
 356                    validate the following pairs of properties in Subscription or Handler 
 357                    instances: Subscription State, Other Subscription State, Repeat 
 358                    Notification Policy, Other Repeat Notification Policy, On Fatal Error 
 359                    Policy, Other On Fatal Error Policy, Persistence Type, Other 
 360                    Persistence Type.
 361            
 362                    @param   instance              instance to be validated
 363                    @param   propertyName          name of property to be validated
 364                    @param   otherPropertyName     name of Other___ property to be validated
 365 kumpf 1.15         @param   defaultValue          default value for property
 366                    @param   otherValue            "Other" value for property
 367 kumpf 1.19         @param   validValues           set of valid values for property
 368 kumpf 1.15 
 369                    @throw   CIM_ERR_INVALID_PARAMETER  if value of property or Other___ 
 370                                                        property is invalid
 371                 */
 372 kumpf 1.20     void _checkPropertyWithOther (
 373 kumpf 1.15         CIMInstance & instance,
 374 kumpf 1.31         const CIMName & propertyName,
 375                    const CIMName & otherPropertyName,
 376 kumpf 1.15         const Uint16 defaultValue,
 377 kumpf 1.19         const Uint16 otherValue,
 378                    const Array <Uint16> & validValues);
 379 kumpf 1.20 
 380 kumpf 1.21     /**
 381                    Validates the specified property in the instance.
 382                    If the property does not exist, it is added with the default value.
 383                    If the property exists, but its value is NULL, its value is set to
 384                    the default value.
 385                    This function is called by the _canCreate function, and is used to 
 386                    validate the System Name and System Creation Class Name properties in
 387                    Filter and Handler instances, and the Source Namespace property in 
 388                    Filter instances.
 389            
 390                    @param   instance              instance to be validated
 391                    @param   propertyName          name of property to be validated
 392                    @param   defaultValue          default value for property
 393            
 394                    @return  the value of the property
 395            
 396                 */
 397 kumpf 1.20     String _checkPropertyWithDefault (
 398                    CIMInstance & instance,
 399 kumpf 1.31         const CIMName & propertyName,
 400 kumpf 1.20         const String & defaultValue);
 401 kumpf 1.15 
 402                /**
 403 kumpf 1.41         Adds an instance in the repository.  Adds or sets properties as 
 404                    necessary.
 405            
 406                    @param   request               the create instance request message
 407                    @param   instance              instance to be added
 408                    @param   enabled               indicates instance is a subscription 
 409                                                     instance and is enabled
 410            
 411                    @return  the CIMObjectPath for the instance
 412                 */
 413                CIMObjectPath _createInstance (
 414                    CIMCreateInstanceRequestMessage * request,
 415                    CIMInstance instance,
 416                    Boolean enabled);
 417            
 418                /**
 419 kumpf 1.10         Determines if the user is authorized to modify the instance, and if the
 420                    specified modification is supported.  Currently, the only modification 
 421                    supported is of the Subscription State property of the Subscription 
 422                    class.
 423 kumpf 1.5  
 424                    @param   request               modification request
 425                    @param   instance              instance to be modified
 426 kumpf 1.37         @param   modifiedInstance      modified instance
 427 kumpf 1.5  
 428 kumpf 1.10         @throw   CIM_ERR_NOT_SUPPORTED      if the specified modification is 
 429 kumpf 1.5                                              not supported
 430                    @throw   CIM_ERR_ACCESS_DENIED      if the user is not authorized to
 431                                                        modify the instance
 432 kumpf 1.37         @throw   CIM_ERR_INVALID_PARAMETER  if the modifiedInstance is invalid
 433 kumpf 1.5  
 434                    @return  True if the instance can be modified
 435 kumpf 1.10                  Otherwise throws an exception
 436 kumpf 1.5       */
 437                Boolean _canModify (
 438                    const CIMModifyInstanceRequestMessage * request,
 439 kumpf 1.25         const CIMObjectPath & instanceReference,
 440 kumpf 1.37         const CIMInstance & instance,
 441                    CIMInstance & modifiedInstance);
 442 kumpf 1.5  
 443                /**
 444 kumpf 1.10         Determines if the user is authorized to delete the instance, and if it 
 445 kumpf 1.11         is legal to delete the instance.  If authorized, Subscription instances 
 446 kumpf 1.10         may always be deleted.  Filter and non-transient Handler instances may 
 447                    only be deleted if they are not being referenced by any Subscription 
 448                    instances. If the instance to be deleted is a transient Handler, any 
 449                    referencing Subscriptions are also deleted.
 450 kumpf 1.5  
 451                    @param   instanceReference     reference for instance to be deleted
 452                    @param   nameSpace             namespace for instance to be deleted
 453 kumpf 1.10         @param   currentUser           current user
 454            
 455                    @throw   CIM_ERR_ACCESS_DENIED      if the user is not authorized to
 456                                                        delete the instance
 457                    @throw   CIM_ERR_FAILED             if the instance to be deleted is 
 458                                                        referenced by a subscription
 459 kumpf 1.5  
 460                    @return  True if the instance can be deleted
 461 kumpf 1.10                  Otherwise throws an exception
 462 kumpf 1.1       */
 463                Boolean _canDelete (
 464 kumpf 1.25         const CIMObjectPath & instanceReference,
 465 kumpf 1.31         const CIMNamespaceName & nameSpace,
 466 kumpf 1.10         const String & currentUser);
 467 kumpf 1.1  
 468                /**
 469 kumpf 1.33         Retrieves list of enabled subscription instances in all namespaces from
 470                    the repository.
 471            
 472 kumpf 1.37         @param   activeSubscriptions  the returned subscription instances
 473            
 474                    @return  True  if a warning was logged
 475                             False otherwise
 476 kumpf 1.33      */
 477 kumpf 1.37     Boolean _getActiveSubscriptionsFromRepository (
 478                    Array <CIMInstance> & activeSubscriptions) const;
 479 kumpf 1.33 
 480                /**
 481                    Retrieves list of enabled subscription instances in all namespaces from
 482                    the Active Subscriptions table.
 483 kumpf 1.1  
 484 kumpf 1.26         @return   list of CIMInstance subscriptions
 485 kumpf 1.1       */
 486 kumpf 1.45     Array <CIMInstance> _getActiveSubscriptions ();
 487 kumpf 1.1  
 488                /**
 489                    Retrieves list of enabled subscription instances in all namespaces,
 490                    where the subscription indication class matches or is a superclass
 491 kumpf 1.10         of the supported class, and the properties required to process the
 492                    subscription are all contained in the list of supported properties.
 493 kumpf 1.42         If the checkProvider parameter value is True, a subscription is only 
 494                    included in the list returned if the specified provider accepted the 
 495                    subscription.  If the checkProvider parameter value is False, the 
 496                    provider parameter is not used (ignored).
 497 kumpf 1.1  
 498 kumpf 1.10         @param   supportedClass       the supported class
 499                    @param   nameSpaces           the list of supported namespaces
 500                    @param   supportedProperties  the list of supported properties
 501 kumpf 1.42         @param   checkProvider        indicates whether provider acceptance is
 502                                                      checked
 503                    @param   provider             the provider (used if checkProvider True)
 504 kumpf 1.1  
 505 kumpf 1.26         @return   list of CIMInstance subscriptions
 506 kumpf 1.1       */
 507 kumpf 1.26     Array <CIMInstance> _getMatchingSubscriptions (
 508 kumpf 1.31         const CIMName & supportedClass,
 509                    const Array <CIMNamespaceName> nameSpaces,
 510 kumpf 1.42         const CIMPropertyList & supportedProperties,
 511 kumpf 1.43         const Boolean checkProvider = false,
 512 kumpf 1.42         const CIMInstance & provider = CIMInstance ());
 513 kumpf 1.1  
 514                /**
 515                    Retrieves lists of enabled subscription instances in all namespaces
 516                    that are either newly supported or previously supported, based on the
 517 kumpf 1.9          supported class, the supported namespaces before and after modification,
 518                    and the supported properties before and after modification.  For 
 519 kumpf 1.10         subscriptions based on the supported class, the newSubscriptions list 
 520 kumpf 1.9          returned contains the subscriptions for which the properties required 
 521                    to process the subscription are all contained in the new list of 
 522                    supported properties, but are not all contained in the old list of 
 523                    supported properties, and/or the filter source namespace is contained in
 524                    the new list if supported namespaces, but is not contained in the old 
 525                    list of supported namespaces.  The formerSubscriptions list returned 
 526                    contains the subscriptions for which the properties required to process
 527                    the subscription are not all contained in the new list of supported 
 528                    properties, but are all contained in the old list of supported 
 529                    properties, and/or the filter source namespace is not contained in the 
 530                    new list if supported namespaces, but is contained in the old list of 
 531                    supported namespaces.
 532            
 533 kumpf 1.10         @param   supportedClass       the supported class
 534 kumpf 1.9          @param   newNameSpaces        namespaces supported after modification
 535                    @param   oldNameSpaces        namespaces supported before modification
 536                    @param   newProperties        properties supported after modification
 537                    @param   oldProperties        properties supported before modification
 538 kumpf 1.1          @param   newSubscriptions     the list of newly supported subscriptions
 539                    @param   formerSubscriptions  the list of previously supported
 540                                                      subscriptions
 541                 */
 542                void _getModifiedSubscriptions (
 543 kumpf 1.31         const CIMName & supportedClass,
 544                    const Array <CIMNamespaceName> & newNameSpaces,
 545                    const Array <CIMNamespaceName> & oldNameSpaces,
 546 kumpf 1.1          const CIMPropertyList & newProperties,
 547                    const CIMPropertyList & oldProperties,
 548 kumpf 1.26         Array <CIMInstance> & newSubscriptions,
 549                    Array <CIMInstance> & formerSubscriptions);
 550 kumpf 1.1  
 551                /**
 552 kumpf 1.15         Retrieves list of subscriptions in the specified namespace.
 553            
 554                    @param   nameSpace             the namespace
 555            
 556 kumpf 1.33         @return   List of subscription instances
 557 kumpf 1.15      */
 558 kumpf 1.26     Array <CIMInstance> _getSubscriptions (
 559 kumpf 1.31         const CIMNamespaceName & nameSpaceName) const;
 560 kumpf 1.15 
 561                /**
 562 kumpf 1.9          Determines if all of the required properties in the specified list
 563                    are contained in the specified list of supported properties.
 564            
 565                    @param   requiredProperties  the required properties
 566 kumpf 1.10         @param   supportedProperties the supported properties
 567 kumpf 1.9  
 568                    @return   true if all required properties are supported
 569                              false otherwise
 570                 */
 571                Boolean _inPropertyList (
 572                    const CIMPropertyList & requiredProperties,
 573 kumpf 1.10         const CIMPropertyList & supportedProperties);
 574 kumpf 1.9  
 575                /**
 576 kumpf 1.1          Retrieves list of enabled subscription instances in all namespaces,
 577 kumpf 1.33         that are served by the specified provider.  This function is called 
 578                    when a provider is disabled.  In the Active Subscriptions table, the 
 579                    specified provider is removed from the list of providers serving the 
 580                    subscription.  If there are no remaining providers serving the 
 581                    subscription, the subscription is removed from the Active Subscriptions
 582                    table.
 583 kumpf 1.1  
 584 kumpf 1.10         @param   provider          the provider instance
 585 kumpf 1.1  
 586 kumpf 1.26         @return   list of CIMInstance subscriptions
 587 kumpf 1.1       */
 588 kumpf 1.26     Array <CIMInstance> _getProviderSubscriptions (
 589 kumpf 1.10         const CIMInstance & provider);
 590 kumpf 1.1  
 591                /**
 592 kumpf 1.50         Determines if the specified provider is currently in use serving one or
 593                    more subscriptions in the Active Subscriptions table.  This function is
 594 kumpf 1.53         called when a provider is added to or removed from the Active 
 595                    Subscriptions table, to determine if an Enable or Disable Indications 
 596                    request must be sent to the provider.
 597            
 598                    NOTE: The caller must acquire a lock on the Active Subscriptions table 
 599                    before calling.
 600 kumpf 1.50 
 601                    @param   provider          the provider instance
 602            
 603                    @return   True  if the provider is serving one or more active 
 604                                    subscriptions
 605                              False otherwise
 606                 */
 607                Boolean _providerInUse
 608                    (const CIMInstance & provider);
 609            
 610                /**
 611 kumpf 1.10         Retrieves the values of the filter query, source namespace,
 612                    and query language properties for the specified subscription instance.
 613 kumpf 1.1  
 614 kumpf 1.10         @param   subscription      Input subscription instance
 615                    @param   nameSpaceName     Input namespace name
 616                    @param   query             Output query for the filter
 617                    @param   sourceNameSpace   Output source namespace for the filter
 618                                                   subscription
 619                    @param   queryLanguage     Output query language in which the filter
 620                                                   query is expressed
 621 kumpf 1.1       */
 622 kumpf 1.10     void _getFilterProperties (
 623 kumpf 1.1          const CIMInstance & subscription,
 624 kumpf 1.31         const CIMNamespaceName & nameSpaceName,
 625 kumpf 1.10         String & query,
 626 kumpf 1.31         CIMNamespaceName & sourceNameSpace,
 627 kumpf 1.10         String & queryLanguage);
 628 kumpf 1.1  
 629                /**
 630 kumpf 1.10         Retrieves the values of the filter query and source namespace
 631                    properties for the specified subscription instance.
 632 kumpf 1.8  
 633 kumpf 1.10         @param   subscription      Input subscription instance
 634                    @param   nameSpaceName     Input namespace name
 635                    @param   query             Output query for the filter
 636                    @param   sourceNameSpace   Output source namespace for the filter
 637                                                   subscription
 638 kumpf 1.8       */
 639 kumpf 1.10     void _getFilterProperties (
 640 kumpf 1.8          const CIMInstance & subscription,
 641 kumpf 1.31         const CIMNamespaceName & nameSpaceName,
 642 kumpf 1.10         String & query,
 643 kumpf 1.31         CIMNamespaceName & sourceNameSpace);
 644 kumpf 1.8  
 645                /**
 646 kumpf 1.32         Retrieves the value of the filter query property 
 647 kumpf 1.1          for the specified subscription instance.
 648            
 649 kumpf 1.10         @param   subscription      Input subscription instance
 650                    @param   nameSpaceName     Input namespace name
 651                    @param   query             Output query for the filter
 652 kumpf 1.1       */
 653 kumpf 1.10     void _getFilterProperties (
 654 kumpf 1.1          const CIMInstance & subscription,
 655 kumpf 1.31         const CIMNamespaceName & nameSpaceName,
 656 kumpf 1.10         String & query);
 657 kumpf 1.1  
 658                /**
 659                    Parses the filter query string, and returns the corresponding
 660                    WQLSelectStatement object.
 661            
 662                    @param   filterQuery           the filter query string
 663            
 664                    @return  WQLSelectStatement representing the filter query
 665                 */
 666                WQLSelectStatement _getSelectStatement (
 667                    const String & filterQuery) const;
 668            
 669                /**
 670                    Extracts the indication class name from the specified WQL select
 671                    statement, and validates that the name represents a subclass of the
 672                    Indication class.
 673            
 674                    @param   selectStatement       the WQL select statement
 675                    @param   nameSpaceName         the namespace
 676            
 677                    @return  String containing the indication class name
 678 kumpf 1.1       */
 679 kumpf 1.31     CIMName _getIndicationClassName (
 680 kumpf 1.1          const WQLSelectStatement & selectStatement,
 681 kumpf 1.31         const CIMNamespaceName & nameSpaceName) const;
 682 kumpf 1.15 
 683                /**
 684                    Enumerates the subclass names of the specified indication class.
 685            
 686                    @param   nameSpace             the namespace
 687                    @param   indicationClassName   the indication class name
 688            
 689                    @return  List of indication subclass names
 690                 */
 691 kumpf 1.31     Array <CIMName> _getIndicationSubclasses (
 692                    const CIMNamespaceName & nameSpace,
 693                    const CIMName & indicationClassName) const;
 694 kumpf 1.1  
 695                /**
 696                    Retrieves the list of indication providers that serve the specified
 697                    indication subclasses.
 698            
 699                    @param   nameSpaceName         the namespace name
 700                    @param   indicationClassName   the indication class name
 701                    @param   indicationSubclasses  the list of indication subclass names
 702                    @param   requiredPropertyList  the properties required
 703            
 704                    @return  list of ProviderClassList structs
 705                 */
 706 kumpf 1.10     Array <ProviderClassList> _getIndicationProviders (
 707 kumpf 1.31         const CIMNamespaceName & nameSpace,
 708                    const CIMName & indicationClassName,
 709                    const Array <CIMName> & indicationSubclasses,
 710 kumpf 1.1          const CIMPropertyList & requiredPropertyList) const;
 711            
 712                /**
 713                    Retrieves the list of properties referenced by the specified
 714                    filter query select statement.
 715            
 716                    @param   selectStatement       the WQL select statement
 717 kumpf 1.22         @param   nameSpaceName         the namespace
 718                    @param   indicationClassName   the indciation class name
 719 kumpf 1.1  
 720 kumpf 1.22         @return  CIMPropertyList of properties referenced by the filter query 
 721                             select statement
 722 kumpf 1.1       */
 723                CIMPropertyList _getPropertyList (
 724 kumpf 1.11         const WQLSelectStatement & selectStatement,
 725 kumpf 1.31         const CIMNamespaceName & nameSpaceName,
 726                    const CIMName & indicationClassName) const;
 727 kumpf 1.22 
 728                /**
 729                    Checks if the property list includes all properties in the specified 
 730                    class.  If so, a NULL CIMPropertyList is returned.  Otherwise, a
 731 kumpf 1.32         CIMPropertyList containing the properties is returned.
 732 kumpf 1.22 
 733                    @param   propertyList          the list of property names
 734                    @param   nameSpaceName         the namespace
 735                    @param   indicationClassName   the indciation class name
 736            
 737                    @return  CIMPropertyList of properties referenced by the filter query 
 738                             select statement
 739                 */
 740                CIMPropertyList _checkPropertyList (
 741 kumpf 1.29         const Array <CIMName> & propertyList,
 742 kumpf 1.31         const CIMNamespaceName & nameSpaceName,
 743                    const CIMName & indicationClassName) const;
 744 kumpf 1.1  
 745                /**
 746                    Extracts the condition (WHERE Clause) from the specified filter query
 747                    string.
 748            
 749                    @param   filterQuery       the filter query
 750            
 751                    @return  String containing the filter query condition
 752                 */
 753                String _getCondition (
 754                    const String & filterQuery) const;
 755            
 756                /**
 757 kumpf 1.26         Retrieves the Handler CIMInstance representing the handler of the
 758 kumpf 1.1          specified subscription.
 759            
 760 kumpf 1.7          @param   subscription          the subscription
 761 kumpf 1.1  
 762 kumpf 1.26         @return  a Handler CIMInstance for the subscription's handler
 763 kumpf 1.1       */
 764 kumpf 1.26     CIMInstance _getHandler (
 765                    const CIMInstance & subscription) const;
 766 kumpf 1.1  
 767                /**
 768 kumpf 1.4          Determines if specified handler is Transient.
 769            
 770                    @param   nameSpace             the name space
 771                    @param   handler               the handler reference
 772            
 773                    @return  True if the Handler is Transient, 
 774                             False otherwise
 775                 */
 776                Boolean _isTransient (
 777 kumpf 1.31         const CIMNamespaceName & nameSpace,
 778 kumpf 1.25         const CIMObjectPath & handler) const;
 779 kumpf 1.4  
 780                /**
 781                    Deletes subscriptions referencing the specified handler.
 782            
 783                    @param   nameSpace             the name space
 784                    @param   referenceProperty     the name of the reference property in the
 785                                                       subscription instance
 786                    @param   handler               the handler reference
 787                 */
 788                void _deleteReferencingSubscriptions (
 789 kumpf 1.31         const CIMNamespaceName & nameSpace,
 790                    const CIMName & referenceProperty,
 791 kumpf 1.25         const CIMObjectPath & handler);
 792 kumpf 1.4  
 793                /**
 794                    Determines if specified Subscription has expired
 795            
 796                    NOTE: It is assumed that the instance passed to this function is a
 797                    Subscription instance, and that the Subscription Duration and
 798                    Start Time properties exist
 799            
 800                    @param   instance              the subscription instance
 801            
 802                    @return  True if the Subscription has expired, 
 803                             False otherwise
 804                 */
 805                Boolean _isExpired (
 806                    const CIMInstance & instance) const;
 807            
 808                /**
 809 kumpf 1.5          Deletes specified subscription 
 810            
 811                    @param   subscription          the subscription reference
 812                 */
 813                void _deleteExpiredSubscription (
 814 kumpf 1.25         CIMObjectPath & subscription);
 815 kumpf 1.21 
 816                /**
 817                    Gets the Subscription Time Remaining property
 818            
 819                    Calculates time remaining from Subscription Start Time, Subscription 
 820                    Duration, and current date time.  If the subscription has a non-null
 821                    Duration, the Time Remaining is set, and True is returned.  If the 
 822                    subscription does not have a non-null Duration, it has no expiration 
 823                    date, and the time remaining is unlimited.  In this case, the Time 
 824                    Remaining is not set and False is returned.
 825                  
 826                    NOTE: It is assumed that the instance passed to this function is a
 827                    Subscription instance, and that the Start Time property exists and 
 828                    has a value
 829            
 830                    @param   instance              Input the subscription instance
 831                    @param   timeRemaining         Output the time remaining (seconds)
 832            
 833                    @return  True if the subscription has a non-null Duration
 834                             False otherwise
 835                 */
 836 kumpf 1.21     Boolean _getTimeRemaining (
 837                    const CIMInstance & instance,
 838                    Uint64 & timeRemaining) const;
 839 kumpf 1.5  
 840                /**
 841 kumpf 1.4          Sets the Subscription Time Remaining property
 842            
 843                    Calculates time remaining from Subscription Start Time, Subscription 
 844                    Duration, and current date time
 845                  
 846                    NOTE: It is assumed that the instance passed to this function is a
 847                    Subscription instance, and that the Subscription Duration and
 848                    Start Time properties exist
 849            
 850                    @param   instance              the subscription instance
 851                 */
 852                void _setTimeRemaining (
 853                    CIMInstance & instance);
 854            
 855                /**
 856 kumpf 1.23         Gets the parameter values required to Create or Modify the subscription
 857 kumpf 1.10         request.
 858 kumpf 1.5          If no indication providers are found, condition and queryLanguage are 
 859 kumpf 1.3          set to empty string.
 860            
 861 kumpf 1.33         @param   nameSpaceName         Input namespace name (of subscription)
 862                    @param   subscriptionInstance  Input subscription instance
 863                    @param   indicationSubclasses  Output list of subclasses of indication 
 864                                                       class in filter query
 865 kumpf 1.3          @param   indicationProviders   Output list of providers with associated
 866                                                       classes
 867                    @param   propertyList          Output list of properties required by the
 868                                                       subscription
 869 kumpf 1.17         @param   sourceNameSpace       Output source namespace for filter query
 870 kumpf 1.3          @param   condition             Output condition part of the filter query
 871                    @param   queryLanguage         Output query language in which the filter
 872                                                       query is expressed
 873                 */
 874 kumpf 1.23     void _getCreateParams (
 875 kumpf 1.31         const CIMNamespaceName & nameSpaceName,
 876 kumpf 1.3          const CIMInstance & subscriptionInstance,
 877 kumpf 1.33         Array <CIMName> & indicationSubclasses,
 878 kumpf 1.10         Array <ProviderClassList> & indicationProviders,
 879                    CIMPropertyList & propertyList,
 880 kumpf 1.31         CIMNamespaceName & sourceNameSpace,
 881 kumpf 1.10         String & condition,
 882                    String & queryLanguage);
 883            
 884                /**
 885 kumpf 1.23         Gets the parameter values required to Create or Modify the subscription
 886 kumpf 1.10         request.
 887            
 888 kumpf 1.33         @param   nameSpaceName         Input namespace name (of subscription)
 889                    @param   subscriptionInstance  Input subscription instance
 890                    @param   indicationSubclasses  Output list of subclasses of indication 
 891                                                       class in filter query
 892 kumpf 1.10         @param   propertyList          Output list of properties required by the
 893                                                       subscription
 894 kumpf 1.17         @param   sourceNameSpace       Output source namespace for filter query
 895 kumpf 1.10         @param   condition             Output condition part of the filter query
 896                    @param   queryLanguage         Output query language in which the filter
 897                                                       query is expressed
 898                 */
 899 kumpf 1.23     void _getCreateParams (
 900 kumpf 1.31         const CIMNamespaceName & nameSpaceName,
 901 kumpf 1.10         const CIMInstance & subscriptionInstance,
 902 kumpf 1.33         Array <CIMName> & indicationSubclasses,
 903 kumpf 1.3          CIMPropertyList & propertyList,
 904 kumpf 1.31         CIMNamespaceName & sourceNameSpace,
 905 kumpf 1.3          String & condition,
 906                    String & queryLanguage);
 907            
 908                /**
 909 kumpf 1.23         Gets the parameter values required to Delete the subscription request.
 910 kumpf 1.5  
 911 kumpf 1.33         @param   nameSpaceName         Input namespace name
 912                    @param   subscriptionInstance  Input subscription instance
 913                    @param   indicationSubclasses  Output list of subclasses of indication 
 914                                                       class in filter query
 915                    @param   sourceNameSpace       Output source namespace for filter query
 916 kumpf 1.5  
 917 kumpf 1.23         @return  List of providers with associated classes to Delete
 918 kumpf 1.5       */
 919 kumpf 1.23     Array <ProviderClassList> _getDeleteParams (
 920 kumpf 1.31         const CIMNamespaceName & nameSpaceName,
 921 kumpf 1.33         const CIMInstance & subscriptionInstance,
 922                    Array <CIMName> & indicationSubclasses,
 923                    CIMNamespaceName & sourceNameSpace);
 924 mday  1.13 
 925 kumpf 1.5      /**
 926 kumpf 1.23         Sends Create subscription request for the specified subscription
 927 kumpf 1.41         to each provider in the list.  Create Subscription requests must be 
 928                    sent to the indication providers in the following cases: (1) on 
 929                    initialization, for each enabled subscription retrieved from the 
 930                    repository, (2) on creation of an enabled subscription instance, (3) on
 931                    modification of a subscription instance, when the state changes to 
 932                    enabled, and (4) on notification of a provider registration change 
 933                    newly enabling the provider to serve the subscription.  In cases (2) and
 934                    (3), there is an original Create Instance or Modify Instance request to
 935                    which the Indication Service must respond.  In cases (1) and (4), there
 936                    is an original request (Notify Provider Registration Request), but no 
 937                    response is required.
 938 kumpf 1.1  
 939                    @param   indicationProviders   list of providers with associated classes
 940 kumpf 1.44         @param   nameSpace             the nameSpace name of the resource been monitored.
 941                                                    This value is contained in the SourceNamespace
 942                                                    property of the CIM_IndicationFilter
 943                                                    instance for the specified subscription
 944 kumpf 1.1          @param   propertyList          the properties referenced by the
 945                                                       subscription
 946                    @param   condition             the condition part of the filter query
 947                    @param   queryLanguage         the query language in which the filter
 948                                                       query is expressed
 949 kumpf 1.23         @param   subscription          the subscription to be created
 950 chuck 1.35         @param   acceptLangs           the language of the response, and
 951                                                       future indications
 952                    @param   contentLangs          the language of the subscription
 953 kumpf 1.41         @param   origRequest           the original request, if any (e.g. Create
 954                                                       Instance, Modify Instance, Provider 
 955                                                       Registration change)
 956                    @param   indicationSubclasses  the indication subclasses for the 
 957                                                       subscription
 958 kumpf 1.9          @param   userName              the userName for authentication
 959                    @param   authType              the authentication type
 960            
 961 kumpf 1.1       */
 962 kumpf 1.41     void _sendCreateRequests (
 963 kumpf 1.10         const Array <ProviderClassList> & indicationProviders,
 964 kumpf 1.31         const CIMNamespaceName & nameSpace,
 965 kumpf 1.1          const CIMPropertyList & propertyList,
 966                    const String & condition,
 967                    const String & queryLanguage,
 968 kumpf 1.26         const CIMInstance & subscription,
 969 chuck 1.35         const AcceptLanguages & acceptLangs,
 970                    const ContentLanguages & contentLangs,
 971 kumpf 1.41         const CIMRequestMessage * origRequest,
 972                    const Array <CIMName> & indicationSubclasses,
 973 kumpf 1.9          const String & userName,
 974                    const String & authType = String::EMPTY);
 975 mday  1.13 
 976 kumpf 1.1      /**
 977 kumpf 1.23         Sends Modify subscription request for the specified subscription
 978 kumpf 1.41         to each provider in the list.  Modify Subscription requests must be
 979                    sent to the indication providers on notification of a provider 
 980                    registration change, when the provider was formerly serving the 
 981                    subscription, and is still serving the subscription, in the following 
 982                    cases: (1) the provider is newly serving an additional indication 
 983                    subclass specified by the subscription, and (2) the provider is
 984                    no longer serving an indication subclass specified by the subscription 
 985                    (but is still serving at least one of the indication subclasses).
 986                    In cases (1) and (2), there is an original request (Notify Provider 
 987                    Registration Request), but no response is required.
 988 kumpf 1.1  
 989                    @param   indicationProviders   list of providers with associated classes
 990 kumpf 1.44         @param   nameSpace             the nameSpace name of the resource been monitored.
 991                                                    This value is contained in the SourceNamespace
 992                                                    property of the CIM_IndicationFilter
 993                                                    instance for the specified subscription 
 994 kumpf 1.1          @param   propertyList          the properties referenced by the
 995                                                       subscription
 996                    @param   condition             the condition part of the filter query
 997                    @param   queryLanguage         the query language in which the filter
 998                                                       query is expressed
 999                    @param   subscription          the subscription to be modified
1000 chuck 1.35         @param   acceptLangs           the language of the response, and
1001                                                       future indications
1002                    @param   contentLangs          the language of the subscription    
1003 kumpf 1.41         @param   origRequest           the original request (Provider 
1004                                                       Registration change)
1005 kumpf 1.9          @param   userName              the userName for authentication
1006                    @param   authType              the authentication type
1007 kumpf 1.1       */
1008                void _sendModifyRequests (
1009 kumpf 1.10         const Array <ProviderClassList> & indicationProviders,
1010 kumpf 1.31         const CIMNamespaceName & nameSpace,
1011 kumpf 1.1          const CIMPropertyList & propertyList,
1012                    const String & condition,
1013                    const String & queryLanguage,
1014 kumpf 1.26         const CIMInstance & subscription,
1015 chuck 1.35         const AcceptLanguages & acceptLangs,
1016                    const ContentLanguages & contentLangs,  
1017 kumpf 1.41         const CIMRequestMessage * origRequest,
1018 kumpf 1.9          const String & userName,
1019                    const String & authType = String::EMPTY);
1020 kumpf 1.1  
1021                /**
1022 kumpf 1.23         Sends Delete subscription request for the specified subscription
1023 kumpf 1.41         to each provider in the list.  Delete Subscription requests must be
1024                    sent to the indication providers in the following cases: (1) on deletion
1025                    of an enabled subscription instance, (2) on modification of a 
1026                    subscription instance, when the state changes to disabled, and (3) on 
1027                    notification of a provider registration change newly preventing the 
1028                    provider from serving the subscription.  
1029                    In cases (1) and (2), there is an original Delete Instance or Modify 
1030                    Instance request to which the Indication Service must respond.  In case
1031                    (1), there is an original request (Notify Provider Registration 
1032                    Request), but no response is required.
1033 kumpf 1.1  
1034                    @param   indicationProviders   list of providers with associated classes
1035 kumpf 1.44         @param   nameSpace             the nameSpace name of the resource been monitored.
1036                                                    This value is contained in the SourceNamespace
1037                                                    property of the CIM_IndicationFilter
1038                                                    instance for the specified subscription 
1039 kumpf 1.1          @param   subscription          the subscription to be modified
1040 chuck 1.35         @param   acceptLangs           the language of the response
1041                    @param   contentLangs          the language of the subscription    
1042 kumpf 1.41         @param   origRequest           the original request (e.g. Delete
1043                                                       Instance, Modify Instance, Provider 
1044                                                       Registration change)
1045                    @param   indicationSubclasses  the indication subclasses for the 
1046                                                       subscription
1047 kumpf 1.9          @param   userName              the userName for authentication
1048                    @param   authType              the authentication type
1049 kumpf 1.1       */
1050 kumpf 1.23     void _sendDeleteRequests (
1051 kumpf 1.10         const Array <ProviderClassList> & indicationProviders,
1052 kumpf 1.31         const CIMNamespaceName & nameSpace,
1053 kumpf 1.26         const CIMInstance & subscription,
1054 chuck 1.35         const AcceptLanguages & acceptLangs,
1055                    const ContentLanguages & contentLangs,  
1056 kumpf 1.41         const CIMRequestMessage * origRequest,
1057                    const Array <CIMName> & indicationSubclasses,
1058 kumpf 1.9          const String & userName,
1059                    const String & authType = String::EMPTY);
1060 kumpf 1.1  
1061                /**
1062 kumpf 1.41         Collects responses from providers for aggregation as they are received,
1063                    and stores them in the IndicationOperationAggregate instance.  Calls 
1064                    _handleOperationResponseAggregation to process the responses, once all 
1065                    expected responses have been received.
1066            
1067                    @param  operation            shared data structure that controls msg 
1068                                                     processing
1069                    @param  destination          target queue of completion callback
1070                    @param  userParameter        user parameter for callback processing
1071                 */
1072                static void _aggregationCallBack (
1073                    AsyncOpNode * operation,
1074                    MessageQueue * destination,
1075                    void * userParameter);
1076            
1077                /**
1078                    Calls the appropriate function to processes responses from providers, 
1079                    based on the type of request sent to providers, once all responses have
1080                    been received.  
1081            
1082                    @param   operationAggregate    the operation aggregate instance 
1083 kumpf 1.41      */
1084                void _handleOperationResponseAggregation (
1085                    IndicationOperationAggregate * operationAggregate);
1086            
1087                /**
1088                    Processes create subscription responses from providers, once all have 
1089                    been received.  Takes the appropriate action, based on the type of the 
1090                    original request, if any, and the responses received.  Sends the 
1091                    response to the original request, if required.
1092            
1093                    @param   operationAggregate    the operation aggregate instance 
1094                 */
1095                void _handleCreateResponseAggregation (
1096                    IndicationOperationAggregate * operationAggregate);
1097            
1098                /**
1099                    Processes enable indications responses from providers, once all have 
1100                    been received.
1101            
1102                    @param   operationAggregate    the operation aggregate instance 
1103                 */
1104 kumpf 1.41     void _handleEnableResponseAggregation (
1105                    IndicationOperationAggregate * operationAggregate);
1106            
1107                /**
1108                    Processes modify subscription responses from providers, once all have 
1109                    been received.  Updates the subscription hash tables.
1110            
1111                    @param   operationAggregate    the operation aggregate instance 
1112                 */
1113                void _handleModifyResponseAggregation (
1114                    IndicationOperationAggregate * operationAggregate);
1115            
1116                /**
1117                    Processes delete subscription responses from providers, once all have 
1118                    been received.  Updates the subscription hash tables appropriately, 
1119                    based on the type of the original request, if any.  Sends the response 
1120                    to the original request, if required.
1121            
1122                    @param   operationAggregate    the operation aggregate instance 
1123                 */
1124                void _handleDeleteResponseAggregation (
1125 kumpf 1.41         IndicationOperationAggregate * operationAggregate);
1126            
1127                /**
1128 kumpf 1.50         Processes disable indications responses from providers, once all have 
1129                    been received.
1130            
1131                    @param   operationAggregate    the operation aggregate instance 
1132                 */
1133                void _handleDisableResponseAggregation 
1134                    (IndicationOperationAggregate * operationAggregate);
1135            
1136                /**
1137 kumpf 1.33         Generates a unique String key for the Active Subscriptions table from 
1138                    the subscription namespace name and key values.
1139            
1140                    @param   subscription          the subscription instance
1141            
1142                    @return  the generated key
1143                 */
1144                String _generateActiveSubscriptionsKey (
1145                    const CIMObjectPath & subscriptionRef);
1146            
1147                /**
1148 kumpf 1.45         Locks the _subscriptionClassesTableLock for read access and looks
1149 kumpf 1.39         up an entry in the Active Subscriptions table.
1150            
1151                    @param   key                   the hash table key
1152                    @param   tableEntry            the table entry retrieved
1153            
1154                    @return  true if the key is found in the table, false otherwise
1155                 */
1156                Boolean _lockedLookupActiveSubscriptionsEntry (
1157                    const String & key,
1158                    ActiveSubscriptionsTableEntry & tableEntry);
1159            
1160                /**
1161                    Inserts an entry into the Active Subscriptions table.  The caller
1162                    must first lock _activeSubscriptionsTableLock for write access.
1163 kumpf 1.10 
1164 kumpf 1.32         @param   subscription          the subscription instance
1165 kumpf 1.33         @param   providers             the list of providers 
1166                 */
1167                void _insertActiveSubscriptionsEntry (
1168                    const CIMInstance & subscription,
1169                    const Array <ProviderClassList> & providers);
1170            
1171                /**
1172 kumpf 1.39         Removes an entry from the Active Subscriptions table.  The caller
1173                    must first lock _activeSubscriptionsTableLock for write access.
1174            
1175                    @param   key                   the key of the entry to remove
1176                 */
1177                void _removeActiveSubscriptionsEntry (
1178                    const String & key);
1179            
1180                /**
1181 kumpf 1.33         Generates a unique String key for the Subscription Classes table from
1182                    the indication class name and source namespace name.
1183            
1184                    @param   indicationClassName   the indication class name
1185                    @param   sourceNamespaceName   the source namespace name
1186 kumpf 1.10 
1187                    @return  the generated key
1188                 */
1189 kumpf 1.33     String _generateSubscriptionClassesKey (
1190                    const CIMName & indicationClassName,
1191                    const CIMNamespaceName & sourceNamespaceName);
1192            
1193                /**
1194 kumpf 1.39         Locks the _subscriptionClassesTableLock for read access and looks
1195                    up an entry in the Subscription Classes table.
1196            
1197                    @param   key                   the hash table key
1198                    @param   tableEntry            the table entry retrieved
1199            
1200                    @return  true if the key is found in the table, false otherwise
1201                 */
1202                Boolean _lockedLookupSubscriptionClassesEntry (
1203                    const String & key,
1204                    SubscriptionClassesTableEntry & tableEntry);
1205            
1206                /**
1207                    Locks the _subscriptionClassesTableLock for write access and inserts
1208                    an entry into the Subscription Classes table.
1209 kumpf 1.33 
1210                    @param   indicationClassName   the indication class name
1211                    @param   sourceNamespaceName   the source namespace name
1212                    @param   subscriptions         the list of subscription instances
1213                 */
1214 kumpf 1.39     void _lockedInsertSubscriptionClassesEntry (
1215 kumpf 1.33         const CIMName & indicationClassName,
1216                    const CIMNamespaceName & sourceNamespaceName,
1217                    const Array <CIMInstance> & subscriptions);
1218            
1219                /**
1220 kumpf 1.39         Locks the _subscriptionClassesTableLock for write access and removes
1221                    an entry from the Subscription Classes table.
1222            
1223                    @param   key                   the key of the entry to remove
1224                 */
1225                void _lockedRemoveSubscriptionClassesEntry (
1226                    const String & key);
1227            
1228                /**
1229 kumpf 1.33         Inserts entries (or updates existing entries) in the 
1230                    Active Subscriptions and Subscription Classes tables.
1231            
1232                    @param   subscription            the subscription instance
1233                    @param   providers               the list of providers
1234                    @param   indicationSubclassNames the list of indication subclass names
1235                    @param   sourceNamespaceName     the source namespace name
1236 kumpf 1.53 
1237                    @return  list of (0 or more) providers that must be enabled
1238 kumpf 1.33      */
1239 kumpf 1.53     Array <ProviderClassList> _insertToHashTables (
1240 kumpf 1.26         const CIMInstance & subscription,
1241 kumpf 1.33         const Array <ProviderClassList> & providers,
1242                    const Array <CIMName> & indicationSubclassNames,
1243                    const CIMNamespaceName & sourceNamespaceName);
1244 kumpf 1.10 
1245                /**
1246 kumpf 1.53         Updates an entry in the Active Subscriptions table to either add a 
1247                    provider to or remove a provider from the list of providers serving the
1248                    subscription.
1249            
1250                    @param   subscriptionPath        the subscription object path
1251                    @param   provider                the provider
1252                    @param   addProvider             indicates if adding or removing 
1253                                                     provider
1254            
1255                    @return  list of (0 or 1) provider that must be enabled or disabled
1256                 */
1257                Array <ProviderClassList> _updateHashTable (
1258                    const CIMObjectPath & subscriptionPath,
1259                    const ProviderClassList & provider,
1260                    Boolean addProvider);
1261            
1262                /**
1263 kumpf 1.33         Removes entries (or updates entries) in the Active Subscriptions and 
1264                    Subscription Classes tables.
1265 kumpf 1.10 
1266 kumpf 1.33         @param   subscription            the subscription instance
1267                    @param   indicationSubclassNames the list of indication subclass names
1268                    @param   sourceNamespaceName     the source namespace name
1269 kumpf 1.53         @param   providers               the list of providers that had been 
1270                                                     serving the subscription
1271            
1272                    @return  list of (0 or more) providers that must be disabled
1273 kumpf 1.10      */
1274 kumpf 1.53     Array <ProviderClassList> _removeFromHashTables (
1275 kumpf 1.26         const CIMInstance & subscription,
1276 kumpf 1.33         const Array <CIMName> & indicationSubclassNames,
1277 kumpf 1.53         const CIMNamespaceName & sourceNamespaceName,
1278                    const Array <ProviderClassList> & providers);
1279 kumpf 1.10 
1280                /**
1281 kumpf 1.1          Creates an alert instance of the specified class.
1282            
1283                    @param   alertClassName        the alert class name
1284 kumpf 1.7          @param   subscriptions         subscriptions for which alert is to be
1285 kumpf 1.1                                             created
1286            
1287                    @return  the created alert instance
1288                 */
1289                CIMInstance _createAlertInstance (
1290 kumpf 1.31         const CIMName & alertClassName,
1291 kumpf 1.26         const Array <CIMInstance> & subscriptions);
1292 mday  1.14 
1293 kumpf 1.40 #if 0
1294 kumpf 1.33      /** 
1295 mday  1.14 	  Asynchronous completion routine for _sendAlerts
1296                  */
1297            
1298                  static void _sendAlertsCallBack(AsyncOpNode *operation, 
1299            				      MessageQueue *callback_destination, 
1300            				      void *parameter);
1301 kumpf 1.1  
1302                /**
1303                    Sends specified alert to each unique handler instance for the
1304                    specified subscriptions in the list.
1305            
1306 kumpf 1.7          @param   subscriptions         subscriptions for which alert is to be
1307 kumpf 1.1                                             sent
1308                    @param   alertInstance         the alert to be sent
1309                 */
1310                void _sendAlerts (
1311 kumpf 1.26         const Array <CIMInstance> & subscriptions,
1312 kumpf 1.1          /* const */ CIMInstance & alertInstance);
1313 kumpf 1.40 #endif
1314 mday  1.18       
1315 kumpf 1.16     /**
1316 kumpf 1.50         Sends an Enable Indications request to the specified providers.
1317 kumpf 1.16 
1318 kumpf 1.41         @param   enableProviders       the providers to be enabled
1319 kumpf 1.16      */
1320 kumpf 1.23     void _sendEnable (
1321 kumpf 1.41         const Array <ProviderClassList> & enableProviders,
1322                    const CIMRequestMessage * origRequest);
1323 kumpf 1.50 
1324                /**
1325                    Sends a Disable Indications request to the specified providers.
1326            
1327                    @param   disableProviders      the providers to be disabled
1328                 */
1329                void _sendDisable 
1330                    (const Array <ProviderClassList> & disableProviders,
1331                     const CIMRequestMessage * origRequest);
1332 kumpf 1.16 
1333 kumpf 1.1      WQLSimplePropertySource _getPropertySourceFromInstance(
1334                    CIMInstance & indicationInstance);
1335 kumpf 1.5  
1336 kumpf 1.37     /**
1337                    Gets the value of the Creator property from the specified Subscription
1338                    instance.  If this function returns False, the value of the creator 
1339                    parameter is unchanged.
1340            
1341                    @param   instance              subscription instance
1342                    @param   creator               value of Creator property if retrieved
1343            
1344                    @return  True if the value of the Creator property was retrieved
1345                             False if Creator property was missing, null, or of an
1346                                   incorrect type.
1347                 */
1348                Boolean _getCreator (
1349                    const CIMInstance & instance,
1350                    String & creator) const;
1351            
1352                /**
1353                    Gets the value of the SubscriptionState property from the specified 
1354                    Subscription instance.  If this function returns False, the value of 
1355                    the state parameter is unchanged.
1356            
1357 kumpf 1.37         @param   instance              subscription instance
1358                    @param   state                 value of SubscriptionState property if 
1359                                                   retrieved
1360            
1361                    @return  True  if the value of the SubscriptionState property was 
1362                                   retrieved
1363                             False if SubscriptionState property was missing, null, of an
1364                                   incorrect type, or with an invalid value.
1365                 */
1366                Boolean _getState (
1367                    const CIMInstance & instance,
1368                    Uint16 & state) const;
1369            
1370 kumpf 1.46     /**
1371                    This function peforms an authorization test based on the
1372                    value of the enableSubscriptionForNonprivilegedUsers.
1373            
1374                    @param   userName                String
1375            
1376                    @return  True  if authentication is not enabled or the 
1377                                   user is a privileged system user. 
1378                             False if authentication is enabled and the
1379                                   user is not privileged.
1380                 */
1381                void _checkNonprivilegedAuthorization (
1382                    const String & userName);
1383            
1384 kumpf 1.48     /**
1385 kumpf 1.49         Updates the propertyList, in preparation for calling the Repository.
1386                    If the propertyList is not null, the Creator property must be added to 
1387                    the list.  Also, if the request is for the Subscription class, the 
1388                    value of the Time Remaining property need only be calculated if it is 
1389                    requested.  In that case, the Subscription Duration and Start Time 
1390                    properties must be added to the list if not already there. 
1391            
1392                    @param   className             class name for the request
1393                    @param   propertyList          list of properties requested
1394                    @param   setTimeRemaining      indicates whether Time Remaining property
1395                                                   was requested
1396                    @param   startTimeAdded        indicates whether Start Time property was
1397                                                   added to the list
1398                    @param   durationAdded         indicates whether Duration property was
1399                                                   added to the list
1400                 */
1401                void _updatePropertyList
1402                    (CIMName & className,
1403                     CIMPropertyList & propertyList,
1404                     Boolean & setTimeRemaining,
1405                     Boolean & startTimeAdded,
1406 kumpf 1.49          Boolean & durationAdded);
1407            
1408                /**
1409 kumpf 1.48         Gets a String containing the comma-separated Subscription Filter Name 
1410                    and Handler Name, for use in a log message to identify the subscription.
1411            
1412                    @param   subscription          subscription instance
1413            
1414                    @return  String containing the comma-separated Subscription Filter Name
1415                             and Handler Name
1416                 */
1417                String _getSubscriptionLogString
1418                    (CIMInstance & subscription);
1419            
1420                /**
1421                    Gets a String containing the Provider Name, for use in a log message to
1422                    identify the provider.
1423            
1424                    @param   provider              provider instance
1425            
1426                    @return  String containing the Provider Name
1427                 */
1428                String _getProviderLogString
1429                    (CIMInstance & provider);
1430 kumpf 1.51 
1431                /**
1432                    Determines whether two instances are the same, based on the key values.
1433            
1434                    @param   instance1             one instance
1435                    @param   instance2             the other instance
1436                    @param   theClass              the class to which the instances belong
1437            
1438                    @return  True  if the instances are the same
1439                             False otherwise
1440                 */
1441                Boolean _sameInstance
1442                    (const CIMInstance & instance1,
1443                     const CIMInstance & instance2,
1444                     const CIMClass & theClass) const;
1445 kumpf 1.48 
1446 kumpf 1.6      CIMRepository * _repository;
1447            
1448 kumpf 1.8      /**
1449                    Handle to Provider Registration Manager
1450                 */
1451                ProviderRegistrationManager * _providerRegManager;
1452 kumpf 1.5  
1453                /**
1454                    Integer representing queue ID for accessing Provider Manager Service
1455                 */
1456                Uint32 _providerManager;
1457            
1458                /**
1459                    Integer representing queue ID for accessing Handler Manager Service
1460                 */
1461                Uint32 _handlerService;
1462            
1463                /**
1464 kumpf 1.32         FUTURE: Integer representing queue ID for accessing Repository Service
1465 kumpf 1.5       */
1466                //Uint32 _repository;
1467            
1468                /**
1469 kumpf 1.46         Boolean indicating that the CIM Server has been configured to
1470                    allow non-privileged users read and write access to the
1471                    Subscription classes.
1472                 */
1473                Boolean _enableSubscriptionsForNonprivilegedUsers;
1474            
1475                /**
1476 kumpf 1.39         Active Subscriptions information table.  Access to this table is
1477                    controlled by the _activeSubscriptionsTableLock.
1478 kumpf 1.33      */
1479                ActiveSubscriptionsTable _activeSubscriptionsTable;
1480 kumpf 1.39     /**
1481                    A lock to control access to the _activeSubscriptionsTable.  Before
1482                    accessing the _activeSubscriptionsTable, one must first lock this for
1483                    read access.  Before updating the _activeSubscriptionsTable, one must
1484                    first lock this for write access.
1485                 */
1486                ReadWriteSem _activeSubscriptionsTableLock;
1487 kumpf 1.33 
1488                /**
1489 kumpf 1.39         Subscription Classes information table.  Access to this table is
1490                    controlled by the _subscriptionClassesTableLock.
1491 kumpf 1.10      */
1492 kumpf 1.33     SubscriptionClassesTable _subscriptionClassesTable;
1493 kumpf 1.39     /**
1494                    A lock to control access to the _subscriptionClassesTable.  Before
1495                    accessing the _subscriptionClassesTable, one must first lock this for
1496                    read access.  Before updating the _subscriptionClassesTable, one must
1497                    first lock this for write access.
1498                 */
1499                ReadWriteSem _subscriptionClassesTableLock;
1500 kumpf 1.10 
1501 kumpf 1.19     Array <Uint16> _validStates;
1502                Array <Uint16> _validRepeatPolicies;
1503                Array <Uint16> _validErrorPolicies;
1504                Array <Uint16> _validPersistenceTypes;
1505                
1506 kumpf 1.10     /**
1507 kumpf 1.5          Values for the Subscription State property of the Subscription class,
1508                    as defined in the CIM Events MOF
1509                 */
1510                enum SubscriptionState {_STATE_UNKNOWN = 0, _STATE_OTHER = 1, 
1511                     _STATE_ENABLED = 2, _STATE_ENABLEDDEGRADED = 3, _STATE_DISABLED = 4};
1512            
1513                /**
1514                    Values for the Repeat Notification Policy property of the Subscription 
1515                    class, as defined in the CIM Events MOF
1516                 */
1517                enum RepeatNotificationPolicy {_POLICY_UNKNOWN = 0, _POLICY_OTHER = 1,
1518                     _POLICY_NONE = 2, _POLICY_SUPPRESS = 3, _POLICY_DELAY = 4};
1519            
1520                /**
1521                    Values for the On Fatal Error Policy property of the Subscription 
1522                    class, as defined in the CIM Events MOF
1523                 */
1524                enum OnFatalErrorPolicy {_ERRORPOLICY_OTHER = 1, _ERRORPOLICY_IGNORE = 2, 
1525                    _ERRORPOLICY_DISABLE = 3, _ERRORPOLICY_REMOVE = 4};
1526            
1527                /**
1528 kumpf 1.5          Values for the Persistence Type property of the Handler class, 
1529                    as defined in the CIM Events MOF
1530                 */
1531                enum PersistenceType {_PERSISTENCE_OTHER = 1, _PERSISTENCE_PERMANENT = 2, 
1532                    _PERSISTENCE_TRANSIENT = 3};
1533            
1534                /**
1535                    Values for the Perceived Severity property of the Alert Indication 
1536                    class, as defined in the CIM Events MOF
1537                 */
1538                enum PerceivedSeverity {_SEVERITY_UNKNOWN = 0, _SEVERITY_OTHER = 1, 
1539                     _SEVERITY_INFORMATION = 2, _SEVERITY_WARNING = 3, _SEVERITY_MINOR = 4,
1540                     _SEVERITY_MAJOR = 5, _SEVERITY_CRITICAL = 6, _SEVERITY_FATAL = 7};
1541            
1542                /**
1543                    Values for the Probable Cause property of the Alert Indication 
1544                    class, as defined in the CIM Events MOF
1545                    Note: not all possible values have been included
1546                 */
1547                enum ProbableCause {_CAUSE_UNKNOWN = 0, _CAUSE_OTHER = 1};
1548            
1549 kumpf 1.5      /**
1550                    Values for the Alert Type property of the Alert Indication class, 
1551                    as defined in the CIM Events MOF
1552                 */
1553                enum AlertType {_TYPE_OTHER = 1, _TYPE_COMMUNICATIONS = 2, _TYPE_QOS = 3,
1554                     _TYPE_PROCESSING = 4, _TYPE_DEVICE = 5, _TYPE_ENVIRONMENTAL = 6,
1555                     _TYPE_MODELCHANGE = 7, _TYPE_SECURITY = 8};
1556 kumpf 1.1  
1557 kumpf 1.3      //
1558                //  Class names
1559                //
1560            
1561 kumpf 1.1      /**
1562                    The name of the CIMOM Shutdown alert indication class
1563                 */
1564 kumpf 1.31     static const CIMName   _CLASS_CIMOM_SHUTDOWN_ALERT;
1565 kumpf 1.1  
1566                /**
1567                    The name of the No Provider alert indication class
1568                 */
1569 kumpf 1.31     static const CIMName   _CLASS_NO_PROVIDER_ALERT;
1570 kumpf 1.1  
1571                /**
1572                    The name of the CIMOM shutdown alert indication class
1573                 */
1574 kumpf 1.31     static const CIMName   _CLASS_PROVIDER_TERMINATED_ALERT;
1575 kumpf 1.1  
1576            
1577 kumpf 1.3      //
1578                //  Property names
1579                //
1580            
1581 kumpf 1.1      /**
1582                    The name of the Subscription State property for Indication Subscription
1583                    class
1584                 */
1585 kumpf 1.31     static const CIMName   _PROPERTY_STATE;
1586 kumpf 1.1  
1587                /**
1588                    The name of the Other Subscription State property for Indication
1589                    Subscription class
1590                 */
1591 kumpf 1.31     static const CIMName   _PROPERTY_OTHERSTATE;
1592 kumpf 1.1  
1593                /**
1594                    The name of the repeat notification policy property for indication
1595                    subscription class
1596                 */
1597 kumpf 1.31     static const CIMName   _PROPERTY_REPEATNOTIFICATIONPOLICY;
1598 kumpf 1.1  
1599                /**
1600                    The name of the other repeat notification policy property for
1601                    indication subscription class
1602                 */
1603 kumpf 1.31     static const CIMName   _PROPERTY_OTHERREPEATNOTIFICATIONPOLICY;
1604 kumpf 1.1  
1605                /**
1606                    The name of the repeat notification interval property for indication
1607                    subscription class
1608                 */
1609 kumpf 1.31     static const CIMName   _PROPERTY_REPEATNOTIFICATIONINTERVAL;
1610 kumpf 1.1  
1611                /**
1612                    The name of the repeat notification gap property for indication
1613                    subscription class
1614                 */
1615 kumpf 1.31     static const CIMName   _PROPERTY_REPEATNOTIFICATIONGAP;
1616 kumpf 1.1  
1617                /**
1618                    The name of the repeat notification count property for indication
1619                    subscription class
1620                 */
1621 kumpf 1.31     static const CIMName   _PROPERTY_REPEATNOTIFICATIONCOUNT;
1622 kumpf 1.1  
1623                /**
1624                    The name of the On Fatal Error Policy property for Indication 
1625                    Subscription class
1626                 */
1627 kumpf 1.31     static const CIMName   _PROPERTY_ONFATALERRORPOLICY;
1628 kumpf 1.1  
1629                /**
1630                    The name of the Other On Fatal Error Policy property for Indication
1631                    Subscription class
1632                 */
1633 kumpf 1.31     static const CIMName   _PROPERTY_OTHERONFATALERRORPOLICY;
1634 kumpf 1.1  
1635                /**
1636 kumpf 1.4          The name of the Time Of Last State Change property for Indication 
1637                    Subscription class
1638                 */
1639 kumpf 1.31     static const CIMName   _PROPERTY_LASTCHANGE;
1640 kumpf 1.4  
1641                /**
1642                    The name of the Subscription Start Time property for Indication 
1643                    Subscription class
1644                 */
1645 kumpf 1.31     static const CIMName   _PROPERTY_STARTTIME;
1646 kumpf 1.4  
1647                /**
1648                    The name of the Subscription Duration property for Indication 
1649                    Subscription class
1650                 */
1651 kumpf 1.31     static const CIMName   _PROPERTY_DURATION;
1652 kumpf 1.4  
1653                /**
1654                    The name of the Subscription Time Remaining property for Indication 
1655                    Subscription class
1656                 */
1657 kumpf 1.31     static const CIMName   _PROPERTY_TIMEREMAINING;
1658 kumpf 1.4  
1659                /**
1660 kumpf 1.1          The name of the filter reference property for indication subscription
1661                    class
1662                 */
1663 kumpf 1.31     static const CIMName   _PROPERTY_FILTER;
1664 kumpf 1.1  
1665                /**
1666                    The name of the handler reference property for indication subscription
1667                    class
1668                 */
1669 kumpf 1.31     static const CIMName   _PROPERTY_HANDLER;
1670 kumpf 1.1  
1671                /**
1672                    The name of the query property for indication filter class
1673                 */
1674 kumpf 1.31     static const CIMName   _PROPERTY_QUERY;
1675 kumpf 1.1  
1676                /**
1677                    The name of the query language property for indication filter class
1678                 */
1679 kumpf 1.31     static const CIMName   _PROPERTY_QUERYLANGUAGE;
1680 kumpf 1.1  
1681                /**
1682                    The name of the Source Namespace property for indication filter class
1683                 */
1684 kumpf 1.31     static const CIMName   _PROPERTY_SOURCENAMESPACE;
1685 kumpf 1.1  
1686                /**
1687                    The name of the name property for indication filter and indication
1688                    handler classes
1689                 */
1690 kumpf 1.31     static const CIMName   _PROPERTY_NAME;
1691 kumpf 1.1  
1692                /**
1693                    The name of the creation class name property for indication filter and
1694                    indication handler classes
1695                 */
1696 kumpf 1.31     static const CIMName   _PROPERTY_CREATIONCLASSNAME;
1697 kumpf 1.1  
1698                /**
1699                    The name of the system name property for indication filter and
1700                    indication handler classes
1701                 */
1702 kumpf 1.31     static const CIMName   _PROPERTY_SYSTEMNAME;
1703 kumpf 1.1  
1704                /**
1705                    The name of the system creation class name property for indication
1706                    filter and indication handler classes
1707                 */
1708 kumpf 1.31     static const CIMName   _PROPERTY_SYSTEMCREATIONCLASSNAME;
1709 kumpf 1.1  
1710                /**
1711                    The name of the Persistence Type property for Indication Handler class
1712                 */
1713 kumpf 1.31     static const CIMName   _PROPERTY_PERSISTENCETYPE;
1714 kumpf 1.1  
1715                /**
1716                    The name of the Other Persistence Type property for Indication Handler
1717                    class
1718                 */
1719 kumpf 1.31     static const CIMName   _PROPERTY_OTHERPERSISTENCETYPE;
1720 kumpf 1.1  
1721                /**
1722 kumpf 1.7          The name of the Destination property for CIM XML Indication Handler 
1723                    subclass
1724 kumpf 1.1       */
1725 kumpf 1.31     static const CIMName   _PROPERTY_DESTINATION;
1726 kumpf 1.7  
1727                /**
1728 kumpf 1.34         The name of the TargetHost property for SNMP Mapper Indication
1729 kumpf 1.7          Handler subclass
1730                 */
1731 kumpf 1.34     static const CIMName   _PROPERTY_TARGETHOST;
1732 kumpf 1.1  
1733                /**
1734 kumpf 1.34         The name of the TargetHostFormat property for SNMP Indication Handler subclass
1735 kumpf 1.1       */
1736 kumpf 1.34     static const CIMName   _PROPERTY_TARGETHOSTFORMAT;
1737            
1738                /**
1739                    The name of the SNMP Version property for SNMP Indication Handler subclass
1740                  */
1741                static const CIMName   _PROPERTY_SNMPVERSION;
1742 kumpf 1.1  
1743                /**
1744                    The name of the Alert Type property for Alert Indication class
1745                 */
1746 kumpf 1.31     static const CIMName   _PROPERTY_ALERTTYPE;
1747 kumpf 1.1  
1748                /**
1749                    The name of the Other Alert Type property for Alert Indication class
1750                 */
1751 kumpf 1.31     static const CIMName   _PROPERTY_OTHERALERTTYPE;
1752 kumpf 1.1  
1753                /**
1754                    The name of the Perceived Severity property for Alert Indication class
1755                 */
1756 kumpf 1.31     static const CIMName   _PROPERTY_PERCEIVEDSEVERITY;
1757 kumpf 1.1  
1758                /**
1759                    The name of the Probable Cause property for Alert Indication class
1760                 */
1761 kumpf 1.31     static const CIMName   _PROPERTY_PROBABLECAUSE;
1762 kumpf 1.1  
1763                /**
1764 kumpf 1.10         The name of the Provider Name property for Provider class
1765 kumpf 1.1       */
1766 kumpf 1.31     static const CIMName   _PROPERTY_PROVIDERNAME;
1767 kumpf 1.1  
1768                /**
1769 kumpf 1.10         The name of the Provider Module Name property for Provider class
1770 kumpf 1.1       */
1771 kumpf 1.31     static const CIMName   _PROPERTY_PROVIDERMODULENAME;
1772 kumpf 1.1  
1773 kumpf 1.9  
1774                //
1775                //  Qualifier names
1776                //
1777            
1778                /**
1779                    The name of the Indication qualifier for classes
1780                 */
1781 kumpf 1.31     static const CIMName   _QUALIFIER_INDICATION;
1782 kumpf 1.9  
1783 kumpf 1.4  
1784                //
1785                //  Other literal values
1786                //
1787 kumpf 1.1  
1788                /**
1789 kumpf 1.4          The WHERE keyword in WQL
1790 kumpf 1.1       */
1791 kumpf 1.4      static const char   _QUERY_WHERE [];
1792 kumpf 1.1  
1793                /**
1794 kumpf 1.4          The string representing the asterisk all properties symbol in WQL
1795 kumpf 1.1       */
1796 kumpf 1.4      static const char   _QUERY_ALLPROPERTIES [];
1797 kumpf 1.3  
1798 kumpf 1.30     /**
1799                    A zero value CIMDateTime interval
1800                 */
1801                static const char _ZERO_INTERVAL_STRING [];
1802            
1803            
1804 kumpf 1.3      //
1805                //  Message substrings used in exception messages
1806                //
1807            
1808 humberto 1.36     // l10n
1809               
1810                   // this one is tricky because it is used in _checkRequiredProperty with the two below
1811 kumpf    1.3      static const char _MSG_MISSING_REQUIRED [];
1812               
1813                   static const char _MSG_KEY_PROPERTY [];
1814 humberto 1.36     static const char _MSG_KEY_PROPERTY_KEY [];
1815 kumpf    1.3  
1816                   static const char _MSG_PROPERTY [];
1817 humberto 1.36     static const char _MSG_PROPERTY_KEY [];
1818 kumpf    1.3  
1819                   static const char _MSG_PROPERTY_PRESENT [];
1820                   static const char _MSG_VALUE_NOT [];
1821 humberto 1.36     static const char _MSG_PROPERTY_PRESENT_BUT_VALUE_NOT_KEY [];
1822 kumpf    1.3  
1823                   static const char _MSG_NO_PROVIDERS [];
1824 humberto 1.36     static const char _MSG_NO_PROVIDERS_KEY[];
1825 kumpf    1.3  
1826 kumpf    1.9      static const char _MSG_NOT_ACCEPTED [];
1827 humberto 1.36     static const char _MSG_NOT_ACCEPTED_KEY [];
1828 kumpf    1.9  
1829 kumpf    1.3      static const char _MSG_INVALID_CLASSNAME [];
1830               
1831                   static const char _MSG_IN_FROM [];
1832 kumpf    1.4  
1833 humberto 1.36     static const char _MSG_INVALID_CLASSNAME_IN_FROM_PROPERTY_KEY [];
1834               
1835 kumpf    1.4      static const char _MSG_EXPIRED [];
1836 humberto 1.36     static const char _MSG_EXPIRED_KEY [];
1837 kumpf    1.9  
1838                   static const char _MSG_REFERENCED [];
1839 humberto 1.36     static const char _MSG_REFERENCED_KEY [];
1840 kumpf    1.19 
1841                   static const char _MSG_INVALID_VALUE [];
1842               
1843 kumpf    1.37     static const char _MSG_INVALID_TYPE [];
1844               
1845 kumpf    1.19     static const char _MSG_FOR_PROPERTY [];
1846 kumpf    1.23 
1847 kumpf    1.37     static const char _MSG_ARRAY_OF [];
1848               
1849 humberto 1.36     static const char _MSG_INVALID_VALUE_FOR_PROPERTY_KEY [];
1850               
1851 kumpf    1.23     static const char _MSG_CLASS_NOT_SERVED [];
1852 kumpf    1.37 
1853 humberto 1.36     static const char _MSG_CLASS_NOT_SERVED_KEY [];
1854 kumpf    1.37 
1855                   static const char _MSG_INVALID_INSTANCES [];
1856 humberto 1.38     
1857                   static const char _MSG_INVALID_INSTANCES_KEY [];
1858 kumpf    1.40 
1859                   static const char _MSG_PROVIDER_NO_LONGER_SERVING [];
1860 kumpf    1.41     
1861 kumpf    1.40     static const char _MSG_PROVIDER_NO_LONGER_SERVING_KEY [];
1862               
1863                   static const char _MSG_PROVIDER_NOW_SERVING [];
1864 kumpf    1.41     
1865 kumpf    1.40     static const char _MSG_PROVIDER_NOW_SERVING_KEY [];
1866               
1867                   static const char _MSG_NO_PROVIDER [];
1868 kumpf    1.41     
1869 kumpf    1.40     static const char _MSG_NO_PROVIDER_KEY [];
1870 kumpf    1.46 
1871                   static const char _MSG_NON_PRIVILEGED_ACCESS_DISABLED [];
1872                
1873                   static const char _MSG_NON_PRIVILEGED_ACCESS_DISABLED_KEY [];
1874 kumpf    1.1  };
1875               
1876               PEGASUS_NAMESPACE_END
1877               
1878 kumpf    1.41 #endif  /* Pegasus_IndicationService_h */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2