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

   1 karl  1.65 //%2005////////////////////////////////////////////////////////////////////////
   2 kumpf 1.1  //
   3 karl  1.63 // 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 karl  1.47 // IBM Corp.; EMC Corporation, The Open Group.
   7 karl  1.63 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   8            // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   9 karl  1.65 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
  10            // EMC Corporation; VERITAS Software Corporation; The Open Group.
  11 kumpf 1.1  //
  12            // Permission is hereby granted, free of charge, to any person obtaining a copy
  13            // of this software and associated documentation files (the "Software"), to
  14            // deal in the Software without restriction, including without limitation the
  15            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  16            // sell copies of the Software, and to permit persons to whom the Software is
  17            // furnished to do so, subject to the following conditions:
  18 kumpf 1.27 // 
  19 kumpf 1.1  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
  20            // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
  21            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  22            // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  23            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  24            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  25            // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  26            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  27            //
  28            //==============================================================================
  29            //
  30            // Author: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com)
  31            //
  32            // Modified By:  Carol Ann Krug Graves, Hewlett-Packard Company
  33 kumpf 1.39 //                   (carolann_graves@hp.com)
  34            //               Ben Heilbronn, Hewlett-Packard Company (ben_heilbronn@hp.com)
  35            //               Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
  36 kumpf 1.1  //
  37            //%/////////////////////////////////////////////////////////////////////////////
  38            
  39            #ifndef Pegasus_IndicationService_h
  40            #define Pegasus_IndicationService_h
  41            
  42            #include <Pegasus/Common/Config.h>
  43            #include <Pegasus/Common/MessageQueueService.h>
  44            #include <Pegasus/Common/CIMMessage.h>
  45 kumpf 1.24 #include <Pegasus/Common/IPC.h>
  46 carolann.graves 1.74 #include <Pegasus/Common/AcceptLanguages.h> // l10n
  47 kumpf           1.54 #include <Pegasus/Common/ContentLanguages.h> // l10n
  48 kumpf           1.6  #include <Pegasus/Server/ProviderRegistrationManager/ProviderRegistrationManager.h>
  49 kumpf           1.54 #include <Pegasus/Server/Linkage.h>
  50 chuck           1.64 #include <Pegasus/Query/QueryExpression/QueryExpression.h>
  51 kumpf           1.1  
  52 kumpf           1.41 #include "ProviderClassList.h"
  53                      #include "IndicationOperationAggregate.h"
  54                      
  55 kumpf           1.1  PEGASUS_NAMESPACE_BEGIN
  56                      
  57 kumpf           1.54 class SubscriptionRepository;
  58                      class SubscriptionTable;
  59 kumpf           1.1  
  60                      /**
  61                      
  62 kumpf           1.5      IndicationService class is the service that serves the
  63 kumpf           1.10     Indication Subscription, Indication Filter, and Indication Handler
  64 kumpf           1.5      classes, and processes indications.
  65 kumpf           1.1  
  66                          @author  Hewlett-Packard Company
  67                      
  68                       */
  69                      
  70                      class PEGASUS_SERVER_LINKAGE IndicationService : public MessageQueueService
  71                      {
  72                      public:
  73                      
  74                          /**
  75                              Constructs an IndicationSubscription instance and initializes instance
  76                              variables.
  77                           */
  78 kumpf           1.6      IndicationService (
  79                              CIMRepository * repository,
  80 kumpf           1.8          ProviderRegistrationManager * providerRegManager);
  81 kumpf           1.1  
  82                          virtual ~IndicationService(void);
  83                      
  84 mday            1.2      void handleEnqueue(Message* message);
  85 kumpf           1.1  
  86 carolann.graves 1.74     virtual void handleEnqueue(void);
  87 kumpf           1.1  
  88                          virtual void _handle_async_request(AsyncRequest *req);
  89                      
  90 kumpf           1.54     /**
  91                              Gets a String containing the Provider Name, for use in a log message to
  92                              identify the provider.
  93                      
  94                              @param   provider              provider instance
  95                      
  96                              @return  String containing the Provider Name
  97                           */
  98                          static String getProviderLogString
  99                              (CIMInstance & provider);
 100                      
 101 kumpf           1.1      AtomicInt dienow;
 102                      
 103                          /**
 104 kumpf           1.5          Operation types for the NotifyProviderRegistration message
 105 kumpf           1.1       */
 106 kumpf           1.5      enum Operation {OP_CREATE = 1, OP_DELETE = 2, OP_MODIFY = 3};
 107 kumpf           1.24 
 108                          static Mutex _mutex;
 109 kumpf           1.1  
 110 kumpf           1.5  private:
 111 kumpf           1.1  
 112                          void _initialize (void);
 113                      
 114                          void _terminate (void);
 115                      
 116                          void _handleGetInstanceRequest(const Message * message);
 117                      
 118                          void _handleEnumerateInstancesRequest(const Message * message);
 119                      
 120                          void _handleEnumerateInstanceNamesRequest(const Message * message);
 121                      
 122                          void _handleCreateInstanceRequest(const Message * message);
 123                      
 124                          void _handleModifyInstanceRequest(const Message * message);
 125                      
 126                          void _handleDeleteInstanceRequest(const Message * message);
 127                      
 128                          void _handleProcessIndicationRequest(const Message * message);
 129                      
 130                          /**
 131 kumpf           1.57         Asynchronous callback function for _handleProcessIndicationRequest.
 132                              The response from the Handler is checked, and if it is not success, the
 133 carolann.graves 1.74         subscription's On Fatal Error Policy is implemented.
 134 kumpf           1.57 
 135                              @param  operation            shared data structure that controls message
 136                                                               processing
 137                              @param  destination          target queue of completion callback
 138                              @param  userParameter        user parameter for callback processing
 139                           */
 140                          static void _handleIndicationCallBack (
 141                              AsyncOpNode * operation,
 142                              MessageQueue * destination,
 143                              void * userParameter);
 144                      
 145                          /**
 146 kumpf           1.1  	Notifies the Indication Service that a change in provider registration
 147                      	has occurred.  The Indication Service retrieves the subscriptions
 148 kumpf           1.23 	affected by the registration change, sends the appropriate Create,
 149 carolann.graves 1.74         Modify, and/or Delete requests to the provider, and sends an alert to
 150                              handler instances of subscriptions that are no longer served by the
 151 kumpf           1.10         provider.
 152 kumpf           1.1      */
 153                          void _handleNotifyProviderRegistrationRequest(const Message * message);
 154                      
 155                          /**
 156 carolann.graves 1.74         Notifies the Indication Service that a provider has been disabled.
 157 kumpf           1.51         The Indication Service retrieves the subscriptions served by the
 158 carolann.graves 1.74         disabled provider, and logs a message for each subscription that is no
 159 kumpf           1.51         longer served by the provider.
 160 kumpf           1.1       */
 161                          void _handleNotifyProviderTerminationRequest(const Message * message);
 162                      
 163                          /**
 164 carolann.graves 1.74         Notifies the Indication Service that a provider has been enabled.
 165                              The Indication Service retrieves the subscriptions that can be served
 166                              by the enabled provider, sends Create Subscription and Enable
 167                              Indications requests to the provider, and logs a message for each
 168 kumpf           1.51         subscription that is now served by the provider.
 169                           */
 170                          void _handleNotifyProviderEnableRequest (const Message * message);
 171                      
 172                          /**
 173 carolann.graves 1.74         Determines if it is legal to create an instance.
 174                              Checks for existence of all key and required properties.  Checks that
 175                              properties that MUST NOT exist (based on values of other properties),
 176                              do not exist.  For any property that has a default value, if it does
 177 kumpf           1.5          not exist, adds the property with the default value.
 178                      
 179                              @param   instance              instance to be created
 180                              @param   nameSpace             namespace for instance to be created
 181                      
 182 carolann.graves 1.73         @exception   CIM_ERR_INVALID_PARAMETER  if instance is invalid
 183 carolann.graves 1.74         @exception   CIM_ERR_NOT_SUPPORTED      if the specified class is not
 184 carolann.graves 1.73                                                 supported
 185 kumpf           1.5  
 186 kumpf           1.54         @return  True, if the instance can be created;
 187 kumpf           1.10                  Otherwise throws an exception
 188 kumpf           1.5       */
 189                          Boolean _canCreate (
 190                              CIMInstance & instance,
 191 kumpf           1.31         const CIMNamespaceName & nameSpace);
 192 kumpf           1.5  
 193 kumpf           1.21     /**
 194                              Validates the specified required property in the instance.
 195 carolann.graves 1.74         If the property does not exist, or has a null value, or is not of the
 196 kumpf           1.56         expected type, an exception is thrown, using the specified message.
 197 kumpf           1.21 
 198 carolann.graves 1.74         This function is called by the _canCreate function, and is used to
 199 kumpf           1.21         validate the  Filter and Handler properties in Subscription instances,
 200 carolann.graves 1.74         the Name, Query and Query Language properties in
 201                              Filter instances, the Name and Destination
 202                              properties in CIMXML Handler instances, and the Name,
 203 kumpf           1.21         Trap Destination, and SNMP Version properties in SNMP Mapper instances.
 204                      
 205                              @param   instance              instance to be validated
 206                              @param   propertyName          name of property to be validated
 207 kumpf           1.56         @param   expectedType          expected CIMType of property value
 208 kumpf           1.21         @param   message               message to be used in exception
 209 yi.zhou         1.70 	@param   isArray               indicates whether the validated
 210                      				       property is array
 211 kumpf           1.21 
 212 carolann.graves 1.73         @exception   CIM_ERR_INVALID_PARAMETER  if required property is missing
 213                                                                      or null
 214 kumpf           1.21      */
 215 kumpf           1.20     void _checkRequiredProperty (
 216                              CIMInstance & instance,
 217 kumpf           1.31         const CIMName & propertyName,
 218 kumpf           1.56         const CIMType expectedType,
 219 yi.zhou         1.70         const String & message,
 220                      	const Boolean isArray = false);
 221 kumpf           1.20 
 222 kumpf           1.5      /**
 223 carolann.graves 1.74         Validates the specified Uint16 (non-array) property and its
 224 carolann.graves 1.69         corresponding String (non-array) Other___ property in the instance.
 225 kumpf           1.15         If the property does not exist, it is added with the default value.
 226                              If the property exists, but its value is NULL, its value is set to
 227                              the default value.
 228                              If the value of the property is Other, but the corresponding Other___
 229 kumpf           1.56         property either does not exist, has a value of NULL, or is not of the
 230 carolann.graves 1.74         correct type, an exception is thrown.
 231 kumpf           1.15         If the value of the property is not Other, but the corresponding
 232                              Other___ property exists and has a non-NULL value, an exception is
 233                              thrown.
 234 carolann.graves 1.74         If the value of the property is not a supported value, an exception is
 235 kumpf           1.56         thrown.
 236 carolann.graves 1.74         This function is called by the _canCreate function, and is used to
 237                              validate the following pairs of properties in Subscription or Handler
 238                              instances: Subscription State, Other Subscription State, Repeat
 239                              Notification Policy, Other Repeat Notification Policy, On Fatal Error
 240                              Policy, Other On Fatal Error Policy, Persistence Type, Other
 241 kumpf           1.15         Persistence Type.
 242                      
 243                              @param   instance              instance to be validated
 244                              @param   propertyName          name of property to be validated
 245                              @param   otherPropertyName     name of Other___ property to be validated
 246                              @param   defaultValue          default value for property
 247                              @param   otherValue            "Other" value for property
 248 kumpf           1.19         @param   validValues           set of valid values for property
 249 kumpf           1.55         @param   supportedValues       set of supported values for property
 250 kumpf           1.15 
 251 carolann.graves 1.73         @exception   CIM_ERR_INVALID_PARAMETER  if value of property or Other___
 252                                                                      property is invalid
 253 kumpf           1.15      */
 254 kumpf           1.20     void _checkPropertyWithOther (
 255 kumpf           1.15         CIMInstance & instance,
 256 kumpf           1.31         const CIMName & propertyName,
 257                              const CIMName & otherPropertyName,
 258 kumpf           1.15         const Uint16 defaultValue,
 259 kumpf           1.19         const Uint16 otherValue,
 260 kumpf           1.55         const Array <Uint16> & validValues,
 261                              const Array <Uint16> & supportedValues);
 262 kumpf           1.20 
 263 kumpf           1.21     /**
 264                              Validates the specified property in the instance.
 265                              If the property does not exist, it is added with the default value.
 266                              If the property exists, but its value is NULL, its value is set to
 267                              the default value.
 268 carolann.graves 1.74         This function is called by the _canCreate function, and is used to
 269 carolann.graves 1.62         validate the Source Namespace property in Filter instances.
 270 carolann.graves 1.74         This function is also called by the _initOrValidateStringProperty
 271                              function to validate the CreationClassName, SystemName, and
 272 carolann.graves 1.69         SystemCreationClassName key properties in Filter and Handler instances.
 273 kumpf           1.21 
 274 kumpf           1.56         Note: currently all properties validated by this function are of type
 275 carolann.graves 1.74         String.  To use this function in the future with properties of other
 276                              types, a type parameter would need to be added, and the default value
 277 kumpf           1.56         would need to be passed as a CIMValue instead of a String.
 278                      
 279 carolann.graves 1.69         Note: currently all properties validated by this function are non-array
 280                              properties.  To use this function in the future with both array and
 281 carolann.graves 1.74         non-array properties, a Boolean isArray parameter would need to be
 282 carolann.graves 1.69         added.
 283                      
 284 kumpf           1.21         @param   instance              instance to be validated
 285                              @param   propertyName          name of property to be validated
 286                              @param   defaultValue          default value for property
 287                      
 288                              @return  the value of the property
 289                           */
 290 kumpf           1.20     String _checkPropertyWithDefault (
 291                              CIMInstance & instance,
 292 kumpf           1.31         const CIMName & propertyName,
 293 kumpf           1.20         const String & defaultValue);
 294 kumpf           1.56 
 295                          /**
 296                              Validates the specified property in the instance.
 297 carolann.graves 1.62         If the property does not exist, it is added with the default value.
 298                              If the property exists, but its value is NULL, its value is set to
 299                              the default value.
 300 carolann.graves 1.74         If the property exists and has a non-NULL value, its value is validated
 301                              against the default (expected) value.  If the value is invalid, an
 302 carolann.graves 1.62         exception is thrown.
 303 carolann.graves 1.74         This function is called by the _canCreate function, and is used to
 304 carolann.graves 1.62         validate the Creation Class Name, System Name and System Creation Class
 305                              Name properties in Filter and Handler instances.
 306                      
 307                              Note: currently all properties validated by this function are of type
 308 carolann.graves 1.74         String.  To use this function in the future with properties of other
 309                              types, a type parameter would need to be added, and the default value
 310 carolann.graves 1.62         would need to be passed as a CIMValue instead of a String.
 311                      
 312 carolann.graves 1.69         Note: currently all properties validated by this function are non-array
 313                              properties.  To use this function in the future with both array and
 314 carolann.graves 1.74         non-array properties, a Boolean isArray parameter would need to be
 315 carolann.graves 1.69         added.
 316                      
 317 carolann.graves 1.62         @param   instance              instance to be validated
 318                              @param   propertyName          name of property to be validated
 319                              @param   defaultValue          default value for property
 320                      
 321                              @return  the value of the property
 322                           */
 323                          String _initOrValidateStringProperty (
 324                              CIMInstance & instance,
 325                              const CIMName & propertyName,
 326                              const String & defaultValue);
 327                      
 328                          /**
 329                              Validates the specified property in the instance.
 330 kumpf           1.56         If the property exists and its value is not NULL, but it is not of
 331                              the correct type, an exception is thrown.
 332 carolann.graves 1.74         This function is called by the _canCreate function.  It is used to
 333                              validate the FailureTriggerTimeInterval, TimeOfLastStateChange,
 334 kumpf           1.56         SubscriptionDuration, SubscriptionStartTime, SubscriptionTimeRemaining,
 335                              RepeatNotificationInterval, RepeatNotificationGap, and
 336                              RepeatNotificationCount properties in Subscription instances, the Owner
 337 carolann.graves 1.74         property in Handler instances, and the PortNumber, SNMPSecurityName,
 338 kumpf           1.56         and SNMPEngineID properties in SNMP Mapper Handler instances.
 339                      
 340 carolann.graves 1.69         Note: currently all properties validated by this function are non-array
 341                              properties.  To use this function in the future with both array and
 342 carolann.graves 1.74         non-array properties, a Boolean isArray parameter would need to be
 343 carolann.graves 1.69         added.
 344                      
 345 kumpf           1.56         @param   instance              instance to be validated
 346                              @param   propertyName          name of property to be validated
 347                              @param   expectedType          expected CIMType for property
 348                      
 349 carolann.graves 1.73         @exception   CIM_ERR_INVALID_PARAMETER  if property exists and is not
 350                                                                      null but is not of the correct
 351                                                                      type
 352 kumpf           1.56      */
 353                          void _checkProperty (
 354                              CIMInstance & instance,
 355                              const CIMName & propertyName,
 356                              const CIMType expectedType);
 357 kumpf           1.15 
 358                          /**
 359 kumpf           1.10         Determines if the user is authorized to modify the instance, and if the
 360 carolann.graves 1.74         specified modification is supported.  Currently, the only modification
 361                              supported is of the Subscription State property of the Subscription
 362 kumpf           1.10         class.
 363 kumpf           1.5  
 364                              @param   request               modification request
 365                              @param   instance              instance to be modified
 366 kumpf           1.37         @param   modifiedInstance      modified instance
 367 kumpf           1.5  
 368 carolann.graves 1.73         @exception   CIM_ERR_NOT_SUPPORTED      if the specified modification is
 369                                                                      not supported
 370                              @exception   CIM_ERR_ACCESS_DENIED      if the user is not authorized to
 371                                                                      modify the instance
 372                              @exception   CIM_ERR_INVALID_PARAMETER  if the modifiedInstance is
 373                                                                      invalid
 374 kumpf           1.5  
 375 kumpf           1.54         @return  True, if the instance can be modified;
 376 kumpf           1.10                  Otherwise throws an exception
 377 kumpf           1.5       */
 378                          Boolean _canModify (
 379                              const CIMModifyInstanceRequestMessage * request,
 380 kumpf           1.25         const CIMObjectPath & instanceReference,
 381 kumpf           1.37         const CIMInstance & instance,
 382                              CIMInstance & modifiedInstance);
 383 kumpf           1.5  
 384                          /**
 385 carolann.graves 1.74         Determines if the user is authorized to delete the instance, and if it
 386                              is legal to delete the instance.  If authorized, Subscription instances
 387                              may always be deleted.  Filter and non-transient Handler instances may
 388                              only be deleted if they are not being referenced by any Subscription
 389                              instances. If the instance to be deleted is a transient Handler, any
 390 kumpf           1.10         referencing Subscriptions are also deleted.
 391 kumpf           1.5  
 392                              @param   instanceReference     reference for instance to be deleted
 393                              @param   nameSpace             namespace for instance to be deleted
 394 kumpf           1.10         @param   currentUser           current user
 395                      
 396 carolann.graves 1.73         @exception   CIM_ERR_ACCESS_DENIED      if the user is not authorized to
 397                                                                      delete the instance
 398                              @exception   CIM_ERR_FAILED             if the instance to be deleted is
 399                                                                      referenced by a subscription
 400 kumpf           1.5  
 401 kumpf           1.54         @return  True, if the instance can be deleted;
 402 kumpf           1.10                  Otherwise throws an exception
 403 kumpf           1.1       */
 404                          Boolean _canDelete (
 405 kumpf           1.25         const CIMObjectPath & instanceReference,
 406 kumpf           1.31         const CIMNamespaceName & nameSpace,
 407 kumpf           1.10         const String & currentUser);
 408 kumpf           1.1  
 409                          /**
 410                              Retrieves list of enabled subscription instances in all namespaces,
 411                              where the subscription indication class matches or is a superclass
 412 kumpf           1.10         of the supported class, and the properties required to process the
 413                              subscription are all contained in the list of supported properties.
 414 carolann.graves 1.74         If the checkProvider parameter value is True, a subscription is only
 415                              included in the list returned if the specified provider accepted the
 416                              subscription.  If the checkProvider parameter value is False, the
 417 kumpf           1.42         provider parameter is not used (ignored).
 418 kumpf           1.1  
 419 kumpf           1.10         @param   supportedClass       the supported class
 420                              @param   nameSpaces           the list of supported namespaces
 421                              @param   supportedProperties  the list of supported properties
 422 kumpf           1.42         @param   checkProvider        indicates whether provider acceptance is
 423                                                                checked
 424                              @param   provider             the provider (used if checkProvider True)
 425 kumpf           1.1  
 426 kumpf           1.26         @return   list of CIMInstance subscriptions
 427 kumpf           1.1       */
 428 kumpf           1.26     Array <CIMInstance> _getMatchingSubscriptions (
 429 kumpf           1.31         const CIMName & supportedClass,
 430                              const Array <CIMNamespaceName> nameSpaces,
 431 kumpf           1.42         const CIMPropertyList & supportedProperties,
 432 kumpf           1.43         const Boolean checkProvider = false,
 433 kumpf           1.42         const CIMInstance & provider = CIMInstance ());
 434 kumpf           1.1  
 435                          /**
 436                              Retrieves lists of enabled subscription instances in all namespaces
 437                              that are either newly supported or previously supported, based on the
 438 kumpf           1.9          supported class, the supported namespaces before and after modification,
 439 carolann.graves 1.74         and the supported properties before and after modification.  For
 440                              subscriptions based on the supported class, the newSubscriptions list
 441                              returned contains the subscriptions for which the properties required
 442                              to process the subscription are all contained in the new list of
 443                              supported properties, but are not all contained in the old list of
 444 kumpf           1.9          supported properties, and/or the filter source namespace is contained in
 445 carolann.graves 1.74         the new list if supported namespaces, but is not contained in the old
 446                              list of supported namespaces.  The formerSubscriptions list returned
 447 kumpf           1.9          contains the subscriptions for which the properties required to process
 448 carolann.graves 1.74         the subscription are not all contained in the new list of supported
 449                              properties, but are all contained in the old list of supported
 450                              properties, and/or the filter source namespace is not contained in the
 451                              new list if supported namespaces, but is contained in the old list of
 452 kumpf           1.9          supported namespaces.
 453                      
 454 kumpf           1.10         @param   supportedClass       the supported class
 455 kumpf           1.9          @param   newNameSpaces        namespaces supported after modification
 456                              @param   oldNameSpaces        namespaces supported before modification
 457                              @param   newProperties        properties supported after modification
 458                              @param   oldProperties        properties supported before modification
 459 kumpf           1.1          @param   newSubscriptions     the list of newly supported subscriptions
 460                              @param   formerSubscriptions  the list of previously supported
 461                                                                subscriptions
 462                           */
 463                          void _getModifiedSubscriptions (
 464 kumpf           1.31         const CIMName & supportedClass,
 465                              const Array <CIMNamespaceName> & newNameSpaces,
 466                              const Array <CIMNamespaceName> & oldNameSpaces,
 467 kumpf           1.1          const CIMPropertyList & newProperties,
 468                              const CIMPropertyList & oldProperties,
 469 kumpf           1.26         Array <CIMInstance> & newSubscriptions,
 470                              Array <CIMInstance> & formerSubscriptions);
 471 kumpf           1.1  
 472                          /**
 473 kumpf           1.9          Determines if all of the required properties in the specified list
 474                              are contained in the specified list of supported properties.
 475                      
 476                              @param   requiredProperties  the required properties
 477 kumpf           1.10         @param   supportedProperties the supported properties
 478 kumpf           1.9  
 479 kumpf           1.54         @return   true, if all required properties are supported;
 480 kumpf           1.9                    false otherwise
 481                           */
 482                          Boolean _inPropertyList (
 483                              const CIMPropertyList & requiredProperties,
 484 kumpf           1.10         const CIMPropertyList & supportedProperties);
 485 kumpf           1.9  
 486                          /**
 487 chuck           1.64         Builds a QueryExpression from the filter query string,
 488                              the query language name, and the namespace in which the query
 489                              is to be run.
 490 kumpf           1.1  
 491                              @param   filterQuery           the filter query string
 492 chuck           1.64         @param   queryLanguage         the query language name
 493                              @param   ns                    query namespace
 494 kumpf           1.1  
 495 chuck           1.64         @return  QueryExpression representing the filter query
 496 kumpf           1.1       */
 497 chuck           1.64     QueryExpression _getQueryExpression (const String& filterQuery,
 498                                                               const String& queryLanguage,
 499                                                               const CIMNamespaceName ns) const;
 500 kumpf           1.1  
 501                          /**
 502 chuck           1.64         Extracts the indication class name from the specified query expression
 503                              (WQL or CQL), and validates that the name represents a subclass of the
 504 kumpf           1.1          Indication class.
 505                      
 506 chuck           1.64         @param   queryExpression       the query expression
 507 kumpf           1.1          @param   nameSpaceName         the namespace
 508                      
 509                              @return  String containing the indication class name
 510                           */
 511 kumpf           1.31     CIMName _getIndicationClassName (
 512 chuck           1.64         const QueryExpression & queryExpression,
 513 kumpf           1.31         const CIMNamespaceName & nameSpaceName) const;
 514 kumpf           1.15 
 515                          /**
 516 kumpf           1.1          Retrieves the list of indication providers that serve the specified
 517                              indication subclasses.
 518                      
 519 chuck           1.64         @param   queryExpression       the query expression
 520                              @param   nameSpace             the namespace name
 521 kumpf           1.1          @param   indicationClassName   the indication class name
 522                              @param   indicationSubclasses  the list of indication subclass names
 523                      
 524                              @return  list of ProviderClassList structs
 525                           */
 526 kumpf           1.10     Array <ProviderClassList> _getIndicationProviders (
 527 carolann.graves 1.74         const QueryExpression & queryExpression,
 528 kumpf           1.31         const CIMNamespaceName & nameSpace,
 529                              const CIMName & indicationClassName,
 530 chuck           1.64         const Array <CIMName> & indicationSubclasses) const;
 531 kumpf           1.1  
 532                          /**
 533 carolann.graves 1.74         Retrieves the list of required properties (all the properties
 534                              referenced in the WHERE clause) for the specified filter query
 535 carolann.graves 1.72         expression.
 536 kumpf           1.1  
 537 chuck           1.64         @param   queryExpression       the query expression
 538 kumpf           1.22         @param   nameSpaceName         the namespace
 539 chuck           1.64         @param   indicationClassName   the indication class name
 540 kumpf           1.1  
 541 carolann.graves 1.74         @return  CIMPropertyList of required properties for the filter query
 542 chuck           1.64                  expression
 543 kumpf           1.1       */
 544                          CIMPropertyList _getPropertyList (
 545 chuck           1.64         const QueryExpression & queryExpression,
 546 kumpf           1.31         const CIMNamespaceName & nameSpaceName,
 547                              const CIMName & indicationClassName) const;
 548 kumpf           1.22 
 549                          /**
 550 carolann.graves 1.74         Checks if the property list includes all properties in the specified
 551 kumpf           1.22         class.  If so, a NULL CIMPropertyList is returned.  Otherwise, a
 552 carolann.graves 1.74         CIMPropertyList containing the properties is returned.  The list of
 553                              property names in the specified indication class is also returned in
 554                              the indicationClassProperties parameter.
 555 carolann.graves 1.60 
 556                              @param   propertyList                the list of property names
 557                              @param   nameSpaceName               the namespace
 558                              @param   indicationClassName         the indication class name
 559                              @param   indicationClassProperties   the list of property names in the
 560                                                                     specified indication class
 561 kumpf           1.22 
 562 carolann.graves 1.74         @return  CIMPropertyList of properties referenced by the filter query
 563 kumpf           1.22                  select statement
 564                           */
 565                          CIMPropertyList _checkPropertyList (
 566 kumpf           1.29         const Array <CIMName> & propertyList,
 567 kumpf           1.31         const CIMNamespaceName & nameSpaceName,
 568 carolann.graves 1.60         const CIMName & indicationClassName,
 569                              Array <CIMName> & indicationClassProperties) const;
 570 kumpf           1.1  
 571                          /**
 572                              Extracts the condition (WHERE Clause) from the specified filter query
 573                              string.
 574                      
 575                              @param   filterQuery       the filter query
 576                      
 577                              @return  String containing the filter query condition
 578                           */
 579                          String _getCondition (
 580                              const String & filterQuery) const;
 581                      
 582                          /**
 583 carolann.graves 1.74         Deletes subscriptions referencing the specified handler.  All namespaces
 584                              are searched for subscriptions that reference the handler to be deleted.
 585 kumpf           1.4  
 586 carolann.graves 1.74         @param   nameSpace             the name space of the handler being
 587                                                                 deleted
 588 kumpf           1.4          @param   referenceProperty     the name of the reference property in the
 589                                                                 subscription instance
 590                              @param   handler               the handler reference
 591                           */
 592                          void _deleteReferencingSubscriptions (
 593 kumpf           1.31         const CIMNamespaceName & nameSpace,
 594                              const CIMName & referenceProperty,
 595 kumpf           1.25         const CIMObjectPath & handler);
 596 kumpf           1.4  
 597                          /**
 598                              Determines if specified Subscription has expired
 599                      
 600                              NOTE: It is assumed that the instance passed to this function is a
 601                              Subscription instance, and that the Subscription Duration and
 602                              Start Time properties exist
 603                      
 604                              @param   instance              the subscription instance
 605                      
 606 kumpf           1.54         @return  True, if the Subscription has expired;
 607 kumpf           1.4                   False otherwise
 608                           */
 609                          Boolean _isExpired (
 610                              const CIMInstance & instance) const;
 611                      
 612                          /**
 613 carolann.graves 1.74         Deletes specified subscription
 614 kumpf           1.5  
 615                              @param   subscription          the subscription reference
 616                           */
 617                          void _deleteExpiredSubscription (
 618 kumpf           1.25         CIMObjectPath & subscription);
 619 kumpf           1.21 
 620                          /**
 621                              Gets the Subscription Time Remaining property
 622                      
 623 carolann.graves 1.74         Calculates time remaining from Subscription Start Time, Subscription
 624 kumpf           1.21         Duration, and current date time.  If the subscription has a non-null
 625 carolann.graves 1.74         Duration, the Time Remaining is set, and True is returned.  If the
 626                              subscription does not have a non-null Duration, it has no expiration
 627                              date, and the time remaining is unlimited.  In this case, the Time
 628 kumpf           1.21         Remaining is not set and False is returned.
 629 carolann.graves 1.74 
 630 kumpf           1.21         NOTE: It is assumed that the instance passed to this function is a
 631 carolann.graves 1.74         Subscription instance, and that the Start Time property exists and
 632 kumpf           1.21         has a value
 633                      
 634                              @param   instance              Input the subscription instance
 635                              @param   timeRemaining         Output the time remaining (seconds)
 636                      
 637 kumpf           1.54         @return  True, if the subscription has a non-null Duration;
 638 kumpf           1.21                  False otherwise
 639                           */
 640                          Boolean _getTimeRemaining (
 641                              const CIMInstance & instance,
 642                              Uint64 & timeRemaining) const;
 643 kumpf           1.5  
 644                          /**
 645 kumpf           1.4          Sets the Subscription Time Remaining property
 646                      
 647 carolann.graves 1.74         Calculates time remaining from Subscription Start Time, Subscription
 648 kumpf           1.4          Duration, and current date time
 649 carolann.graves 1.74 
 650 kumpf           1.4          NOTE: It is assumed that the instance passed to this function is a
 651                              Subscription instance, and that the Subscription Duration and
 652                              Start Time properties exist
 653                      
 654                              @param   instance              the subscription instance
 655                           */
 656                          void _setTimeRemaining (
 657                              CIMInstance & instance);
 658                      
 659                          /**
 660 kumpf           1.23         Gets the parameter values required to Create or Modify the subscription
 661 kumpf           1.10         request.
 662 carolann.graves 1.74         If no indication providers are found, condition and queryLanguage are
 663 kumpf           1.3          set to empty string.
 664                      
 665 kumpf           1.33         @param   subscriptionInstance  Input subscription instance
 666 carolann.graves 1.74         @param   indicationSubclasses  Output list of subclasses of indication
 667 kumpf           1.33                                            class in filter query
 668 kumpf           1.3          @param   indicationProviders   Output list of providers with associated
 669                                                                 classes
 670                              @param   propertyList          Output list of properties required by the
 671                                                                 subscription
 672 kumpf           1.17         @param   sourceNameSpace       Output source namespace for filter query
 673 kumpf           1.3          @param   condition             Output condition part of the filter query
 674 kumpf           1.58         @param   query                 Output filter query
 675 kumpf           1.3          @param   queryLanguage         Output query language in which the filter
 676                                                                 query is expressed
 677                           */
 678 kumpf           1.23     void _getCreateParams (
 679 kumpf           1.3          const CIMInstance & subscriptionInstance,
 680 kumpf           1.33         Array <CIMName> & indicationSubclasses,
 681 kumpf           1.10         Array <ProviderClassList> & indicationProviders,
 682                              CIMPropertyList & propertyList,
 683 kumpf           1.31         CIMNamespaceName & sourceNameSpace,
 684 kumpf           1.10         String & condition,
 685 kumpf           1.58         String & query,
 686 kumpf           1.10         String & queryLanguage);
 687                      
 688                          /**
 689 kumpf           1.23         Gets the parameter values required to Create or Modify the subscription
 690 kumpf           1.10         request.
 691                      
 692 kumpf           1.33         @param   subscriptionInstance  Input subscription instance
 693 carolann.graves 1.74         @param   indicationSubclasses  Output list of subclasses of indication
 694 kumpf           1.33                                            class in filter query
 695 kumpf           1.10         @param   propertyList          Output list of properties required by the
 696                                                                 subscription
 697 kumpf           1.17         @param   sourceNameSpace       Output source namespace for filter query
 698 kumpf           1.10         @param   condition             Output condition part of the filter query
 699 kumpf           1.58         @param   query                 Output filter query
 700 kumpf           1.10         @param   queryLanguage         Output query language in which the filter
 701                                                                 query is expressed
 702                           */
 703 kumpf           1.23     void _getCreateParams (
 704 kumpf           1.10         const CIMInstance & subscriptionInstance,
 705 kumpf           1.33         Array <CIMName> & indicationSubclasses,
 706 kumpf           1.3          CIMPropertyList & propertyList,
 707 kumpf           1.31         CIMNamespaceName & sourceNameSpace,
 708 kumpf           1.3          String & condition,
 709 kumpf           1.58         String & query,
 710 kumpf           1.3          String & queryLanguage);
 711                      
 712                          /**
 713 kumpf           1.23         Gets the parameter values required to Delete the subscription request.
 714 kumpf           1.5  
 715 kumpf           1.33         @param   subscriptionInstance  Input subscription instance
 716 carolann.graves 1.74         @param   indicationSubclasses  Output list of subclasses of indication
 717 kumpf           1.33                                            class in filter query
 718                              @param   sourceNameSpace       Output source namespace for filter query
 719 kumpf           1.5  
 720 kumpf           1.23         @return  List of providers with associated classes to Delete
 721 kumpf           1.5       */
 722 kumpf           1.23     Array <ProviderClassList> _getDeleteParams (
 723 kumpf           1.33         const CIMInstance & subscriptionInstance,
 724                              Array <CIMName> & indicationSubclasses,
 725                              CIMNamespaceName & sourceNameSpace);
 726 mday            1.13 
 727 kumpf           1.5      /**
 728 kumpf           1.23         Sends Create subscription request for the specified subscription
 729 carolann.graves 1.68         to each provider in the list.  The requests are sent using SendAsync,
 730 carolann.graves 1.74         and the responses are aggregated in the callback methods.  Create
 731                              Subscription requests are sent to the indication providers using
 732                              SendAsync in the following cases: (1) on creation of an enabled
 733                              subscription instance, and (2) on modification of a subscription
 734                              instance, when the state changes to enabled.  In cases (1) and (2),
 735                              there is an original Create Instance or Modify Instance request to
 736 carolann.graves 1.71         which the Indication Service must respond.
 737 kumpf           1.1  
 738                              @param   indicationProviders   list of providers with associated classes
 739 kumpf           1.54         @param   nameSpace             the nameSpace name of the resource being
 740 carolann.graves 1.74                                            monitored, from the SourceNamespace
 741                                                                 property of the CIM_IndicationFilter
 742                                                                 instance for the specified
 743 kumpf           1.54                                            subscription
 744 kumpf           1.1          @param   propertyList          the properties referenced by the
 745                                                                 subscription
 746                              @param   condition             the condition part of the filter query
 747 kumpf           1.58         @param   query                 the filter query
 748 kumpf           1.1          @param   queryLanguage         the query language in which the filter
 749                                                                 query is expressed
 750 kumpf           1.23         @param   subscription          the subscription to be created
 751 chuck           1.35         @param   acceptLangs           the language of the response, and
 752                                                                 future indications
 753                              @param   contentLangs          the language of the subscription
 754 carolann.graves 1.71         @param   origRequest           the original request (Create
 755 carolann.graves 1.68                                            Instance, Modify Instance)
 756 carolann.graves 1.74         @param   indicationSubclasses  the indication subclasses for the
 757 kumpf           1.41                                            subscription
 758 kumpf           1.9          @param   userName              the userName for authentication
 759                              @param   authType              the authentication type
 760                      
 761 kumpf           1.1       */
 762 carolann.graves 1.68     void _sendAsyncCreateRequests (
 763 kumpf           1.10         const Array <ProviderClassList> & indicationProviders,
 764 kumpf           1.31         const CIMNamespaceName & nameSpace,
 765 kumpf           1.1          const CIMPropertyList & propertyList,
 766                              const String & condition,
 767 kumpf           1.58         const String & query,
 768 kumpf           1.1          const String & queryLanguage,
 769 kumpf           1.26         const CIMInstance & subscription,
 770 chuck           1.35         const AcceptLanguages & acceptLangs,
 771                              const ContentLanguages & contentLangs,
 772 kumpf           1.41         const CIMRequestMessage * origRequest,
 773                              const Array <CIMName> & indicationSubclasses,
 774 kumpf           1.9          const String & userName,
 775                              const String & authType = String::EMPTY);
 776 mday            1.13 
 777 kumpf           1.1      /**
 778 carolann.graves 1.68         Sends Create subscription request for the specified subscription
 779                              to each provider in the list.  The requests are sent using SendWait,
 780                              so no callback methods are required.  Create Subscription requests are
 781                              sent to the indication providers using SendWait in the following cases:
 782 carolann.graves 1.74         (1) on notification of a provider registration change newly enabling
 783                              the provider to serve the subscription, (2) on notification that a
 784                              provider has been enabled and may now serve the subscription, and
 785 carolann.graves 1.71         (3) on initialization, for each enabled subscription retrieved from the
 786                              repository.  In cases (1) and (2), there is an original Notify Provider
 787 carolann.graves 1.74         Registration or Notify Provider Enable request to which the Indication
 788 carolann.graves 1.71         Service must respond.  In case (3), there is no original request and no
 789                              response is required.
 790 carolann.graves 1.68 
 791                              @param   indicationProviders   list of providers with associated classes
 792                              @param   nameSpace             the nameSpace name of the resource being
 793                                                                 monitored, from the SourceNamespace
 794                                                                 property of the CIM_IndicationFilter
 795                                                                 instance for the specified
 796                                                                 subscription
 797                              @param   propertyList          the properties referenced by the
 798                                                                 subscription
 799                              @param   condition             the condition part of the filter query
 800                              @param   query                 the filter query
 801                              @param   queryLanguage         the query language in which the filter
 802                                                                 query is expressed
 803                              @param   subscription          the subscription to be created
 804                              @param   acceptLangs           the language of the response, and
 805                                                                 future indications
 806                              @param   contentLangs          the language of the subscription
 807                              @param   userName              the userName for authentication
 808                              @param   authType              the authentication type
 809                      
 810 carolann.graves 1.71         @return  List of providers that accepted subscription
 811 carolann.graves 1.68      */
 812 carolann.graves 1.71     Array <ProviderClassList> _sendWaitCreateRequests (
 813 carolann.graves 1.68         const Array <ProviderClassList> & indicationProviders,
 814                              const CIMNamespaceName & nameSpace,
 815                              const CIMPropertyList & propertyList,
 816                              const String & condition,
 817                              const String & query,
 818                              const String & queryLanguage,
 819                              const CIMInstance & subscription,
 820                              const AcceptLanguages & acceptLangs,
 821                              const ContentLanguages & contentLangs,
 822                              const String & userName,
 823                              const String & authType = String::EMPTY);
 824                      
 825                          /**
 826 kumpf           1.23         Sends Modify subscription request for the specified subscription
 827 carolann.graves 1.68         to each provider in the list.   The requests are sent using SendWait,
 828                              so no callback methods are required.  Modify Subscription requests must
 829 carolann.graves 1.74         be sent to the indication providers on notification of a provider
 830                              registration change, when the provider was formerly serving the
 831                              subscription, and is still serving the subscription, in the following
 832                              cases: (1) the provider is newly serving an additional indication
 833 carolann.graves 1.68         subclass specified by the subscription, or (2) the provider is
 834 carolann.graves 1.74         no longer serving an indication subclass specified by the subscription
 835 kumpf           1.41         (but is still serving at least one of the indication subclasses).
 836 carolann.graves 1.68         In cases (1) and (2), there is an original Notify Provider Registration
 837                              request to which the Indication Service must respond.
 838 kumpf           1.1  
 839                              @param   indicationProviders   list of providers with associated classes
 840 kumpf           1.54         @param   nameSpace             the nameSpace name of the resource being
 841                                                                 monitored, from the SourceNamespace
 842                                                                 property of the CIM_IndicationFilter
 843 carolann.graves 1.74                                            instance for the specified
 844                                                                 subscription
 845 kumpf           1.1          @param   propertyList          the properties referenced by the
 846                                                                 subscription
 847                              @param   condition             the condition part of the filter query
 848 kumpf           1.58         @param   query                 the filter query
 849 kumpf           1.1          @param   queryLanguage         the query language in which the filter
 850                                                                 query is expressed
 851                              @param   subscription          the subscription to be modified
 852 chuck           1.35         @param   acceptLangs           the language of the response, and
 853                                                                 future indications
 854 carolann.graves 1.74         @param   contentLangs          the language of the subscription
 855 kumpf           1.9          @param   userName              the userName for authentication
 856                              @param   authType              the authentication type
 857 kumpf           1.1       */
 858 carolann.graves 1.68     void _sendWaitModifyRequests (
 859 kumpf           1.10         const Array <ProviderClassList> & indicationProviders,
 860 kumpf           1.31         const CIMNamespaceName & nameSpace,
 861 kumpf           1.1          const CIMPropertyList & propertyList,
 862                              const String & condition,
 863 kumpf           1.58         const String & query,
 864 kumpf           1.1          const String & queryLanguage,
 865 kumpf           1.26         const CIMInstance & subscription,
 866 chuck           1.35         const AcceptLanguages & acceptLangs,
 867 carolann.graves 1.74         const ContentLanguages & contentLangs,
 868 kumpf           1.9          const String & userName,
 869                              const String & authType = String::EMPTY);
 870 kumpf           1.1  
 871                          /**
 872 kumpf           1.23         Sends Delete subscription request for the specified subscription
 873 carolann.graves 1.68         to each provider in the list.  The requests are sent using SendAsync,
 874 carolann.graves 1.74         and the responses are aggregated in the callback methods.  Delete
 875                              Subscription requests are sent to the indication providers using
 876                              SendAsync in the following cases: (1) on deletion of an enabled
 877                              subscription instance, (2) on modification of a subscription instance,
 878                              when the state changes to disabled, (3) on deletion of an expired
 879                              subscription, and (4) on deletion of a subscription referencing a
 880                              deleted transient handler.  In cases (1) and (2), there is an original
 881                              Delete Instance or Modify Instance request to which the Indication
 882 carolann.graves 1.68         Service must respond.  In cases (3) and (4), there is no orginal request
 883                              and no response is required.
 884 kumpf           1.1  
 885                              @param   indicationProviders   list of providers with associated classes
 886 carolann.graves 1.74         @param   nameSpace             the nameSpace name of the resource being
 887 kumpf           1.54                                            monitored, from the SourceNamespace
 888                                                                 property of the CIM_IndicationFilter
 889 carolann.graves 1.74                                            instance for the specified
 890                                                                 subscription
 891 kumpf           1.1          @param   subscription          the subscription to be modified
 892 chuck           1.35         @param   acceptLangs           the language of the response
 893 carolann.graves 1.74         @param   contentLangs          the language of the subscription
 894                              @param   origRequest           the original request (Delete Instance,
 895 carolann.graves 1.68                                            Modify Instance)
 896 carolann.graves 1.74         @param   indicationSubclasses  the indication subclasses for the
 897 kumpf           1.41                                            subscription
 898 kumpf           1.9          @param   userName              the userName for authentication
 899                              @param   authType              the authentication type
 900 kumpf           1.1       */
 901 carolann.graves 1.68     void _sendAsyncDeleteRequests (
 902 kumpf           1.10         const Array <ProviderClassList> & indicationProviders,
 903 kumpf           1.31         const CIMNamespaceName & nameSpace,
 904 kumpf           1.26         const CIMInstance & subscription,
 905 chuck           1.35         const AcceptLanguages & acceptLangs,
 906 carolann.graves 1.74         const ContentLanguages & contentLangs,
 907 kumpf           1.41         const CIMRequestMessage * origRequest,
 908                              const Array <CIMName> & indicationSubclasses,
 909 kumpf           1.9          const String & userName,
 910                              const String & authType = String::EMPTY);
 911 kumpf           1.1  
 912                          /**
 913 carolann.graves 1.68         Sends Delete subscription request for the specified subscription
 914                              to each provider in the list.  The requests are sent using SendWait,
 915                              so no callback methods are required.  Delete Subscription requests are
 916 carolann.graves 1.74         sent to the indication providers using SendWait in the following case:
 917                              (1) on notification of a provider registration change newly preventing
 918                              the provider from serving the subscription.  In case (1), there is an
 919                              original Notify Provider Registration request to which the Indication
 920                              Service must respond.
 921 carolann.graves 1.68 
 922                              @param   indicationProviders   list of providers with associated classes
 923                              @param   nameSpace             the nameSpace name of the resource being
 924                                                                 monitored, from the SourceNamespace
 925                                                                 property of the CIM_IndicationFilter
 926                                                                 instance for the specified
 927                                                                 subscription
 928                              @param   subscription          the subscription to be modified
 929                              @param   acceptLangs           the language of the response
 930                              @param   contentLangs          the language of the subscription
 931                              @param   userName              the userName for authentication
 932                              @param   authType              the authentication type
 933                           */
 934                          void _sendWaitDeleteRequests (
 935                              const Array <ProviderClassList> & indicationProviders,
 936                              const CIMNamespaceName & nameSpace,
 937                              const CIMInstance & subscription,
 938                              const AcceptLanguages & acceptLangs,
 939                              const ContentLanguages & contentLangs,
 940                              const String & userName,
 941                              const String & authType = String::EMPTY);
 942 carolann.graves 1.68 
 943                          /**
 944 kumpf           1.41         Collects responses from providers for aggregation as they are received,
 945 carolann.graves 1.74         and stores them in the IndicationOperationAggregate instance.  Calls
 946                              _handleOperationResponseAggregation to process the responses, once all
 947 kumpf           1.41         expected responses have been received.
 948                      
 949 kumpf           1.57         @param  operation            shared data structure that controls message
 950 kumpf           1.41                                          processing
 951                              @param  destination          target queue of completion callback
 952                              @param  userParameter        user parameter for callback processing
 953                           */
 954                          static void _aggregationCallBack (
 955                              AsyncOpNode * operation,
 956                              MessageQueue * destination,
 957                              void * userParameter);
 958                      
 959                          /**
 960 carolann.graves 1.74         Calls the appropriate function to processes responses from providers,
 961 kumpf           1.41         based on the type of request sent to providers, once all responses have
 962 carolann.graves 1.74         been received.
 963 kumpf           1.41 
 964 carolann.graves 1.74         @param   operationAggregate    the operation aggregate instance
 965 kumpf           1.41      */
 966                          void _handleOperationResponseAggregation (
 967                              IndicationOperationAggregate * operationAggregate);
 968                      
 969                          /**
 970 carolann.graves 1.74         Processes create subscription responses from providers, once all have
 971                              been received.  Takes the appropriate action, based on the type of the
 972                              original request, if any, and the responses received.  Sends the
 973 kumpf           1.41         response to the original request, if required.
 974                      
 975 carolann.graves 1.74         @param   operationAggregate    the operation aggregate instance
 976 kumpf           1.41      */
 977                          void _handleCreateResponseAggregation (
 978                              IndicationOperationAggregate * operationAggregate);
 979                      
 980                          /**
 981 carolann.graves 1.74         Processes modify subscription responses from providers, once all have
 982 kumpf           1.41         been received.  Updates the subscription hash tables.
 983                      
 984 carolann.graves 1.74         @param   operationAggregate    the operation aggregate instance
 985 kumpf           1.41      */
 986                          void _handleModifyResponseAggregation (
 987                              IndicationOperationAggregate * operationAggregate);
 988                      
 989                          /**
 990 carolann.graves 1.74         Processes delete subscription responses from providers, once all have
 991                              been received.  Updates the subscription hash tables appropriately,
 992                              based on the type of the original request, if any.  Sends the response
 993 kumpf           1.41         to the original request, if required.
 994                      
 995 carolann.graves 1.74         @param   operationAggregate    the operation aggregate instance
 996 kumpf           1.41      */
 997                          void _handleDeleteResponseAggregation (
 998                              IndicationOperationAggregate * operationAggregate);
 999                      
1000                          /**
1001 kumpf           1.1          Creates an alert instance of the specified class.
1002                      
1003                              @param   alertClassName        the alert class name
1004 kumpf           1.7          @param   subscriptions         subscriptions for which alert is to be
1005 kumpf           1.1                                             created
1006                      
1007                              @return  the created alert instance
1008                           */
1009                          CIMInstance _createAlertInstance (
1010 kumpf           1.31         const CIMName & alertClassName,
1011 kumpf           1.26         const Array <CIMInstance> & subscriptions);
1012 mday            1.14 
1013 kumpf           1.40 #if 0
1014 carolann.graves 1.74      /**
1015 mday            1.14 	  Asynchronous completion routine for _sendAlerts
1016                            */
1017                      
1018 carolann.graves 1.74       static void _sendAlertsCallBack(AsyncOpNode *operation,
1019                      				      MessageQueue *callback_destination,
1020 mday            1.14 				      void *parameter);
1021 kumpf           1.1  
1022                          /**
1023                              Sends specified alert to each unique handler instance for the
1024                              specified subscriptions in the list.
1025                      
1026 kumpf           1.7          @param   subscriptions         subscriptions for which alert is to be
1027 kumpf           1.1                                             sent
1028                              @param   alertInstance         the alert to be sent
1029                           */
1030                          void _sendAlerts (
1031 kumpf           1.26         const Array <CIMInstance> & subscriptions,
1032 kumpf           1.1          /* const */ CIMInstance & alertInstance);
1033 kumpf           1.40 #endif
1034 carolann.graves 1.74 
1035 kumpf           1.16     /**
1036 carolann.graves 1.74         Sends a Subscription Init Complete request to the Provider
1037 carolann.graves 1.67         Manager Service.
1038                           */
1039                          void _sendSubscriptionInitComplete ();
1040 kumpf           1.16 
1041 kumpf           1.37     /**
1042                              Gets the value of the Creator property from the specified Subscription
1043 carolann.graves 1.74         instance.  If this function returns False, the value of the creator
1044 kumpf           1.37         parameter is unchanged.
1045                      
1046                              @param   instance              subscription instance
1047                              @param   creator               value of Creator property if retrieved
1048                      
1049 kumpf           1.54         @return  True, if the value of the Creator property was retrieved;
1050 kumpf           1.37                  False if Creator property was missing, null, or of an
1051 kumpf           1.54                        incorrect type
1052 kumpf           1.37      */
1053                          Boolean _getCreator (
1054                              const CIMInstance & instance,
1055                              String & creator) const;
1056                      
1057                          /**
1058 kumpf           1.54         Validates the specified SubscriptionState property value.
1059 kumpf           1.37 
1060 kumpf           1.54         @param   state                 SubscriptionState property value
1061 kumpf           1.37 
1062 kumpf           1.54         @return  True, if the SubscriptionState property value is valid;
1063                                       False otherwise
1064 kumpf           1.37      */
1065 kumpf           1.54     Boolean _validateState (
1066                              const Uint16 state) const;
1067 kumpf           1.37 
1068 kumpf           1.46     /**
1069                              This function peforms an authorization test based on the
1070                              value of the enableSubscriptionForNonprivilegedUsers.
1071                      
1072                              @param   userName                String
1073                      
1074 carolann.graves 1.74         @return  True, if authentication is not enabled or the
1075 kumpf           1.54                        user is a privileged system user;
1076                                       False, if authentication is enabled and the
1077                                             user is not privileged
1078 kumpf           1.46      */
1079                          void _checkNonprivilegedAuthorization (
1080                              const String & userName);
1081                      
1082 kumpf           1.48     /**
1083 kumpf           1.49         Updates the propertyList, in preparation for calling the Repository.
1084 carolann.graves 1.74         If the propertyList is not null, the Creator property must be added to
1085                              the list.  Also, if the request is for the Subscription class, the
1086                              value of the Time Remaining property need only be calculated if it is
1087                              requested.  In that case, the Subscription Duration and Start Time
1088                              properties must be added to the list if not already there.
1089 kumpf           1.49 
1090                              @param   className             class name for the request
1091                              @param   propertyList          list of properties requested
1092                              @param   setTimeRemaining      indicates whether Time Remaining property
1093                                                             was requested
1094                              @param   startTimeAdded        indicates whether Start Time property was
1095                                                             added to the list
1096                              @param   durationAdded         indicates whether Duration property was
1097                                                             added to the list
1098                           */
1099                          void _updatePropertyList
1100                              (CIMName & className,
1101                               CIMPropertyList & propertyList,
1102                               Boolean & setTimeRemaining,
1103                               Boolean & startTimeAdded,
1104                               Boolean & durationAdded);
1105                      
1106                          /**
1107 carolann.graves 1.74         Gets a String containing the comma-separated Subscription Filter Name
1108 kumpf           1.48         and Handler Name, for use in a log message to identify the subscription.
1109                      
1110                              @param   subscription          subscription instance
1111                      
1112                              @return  String containing the comma-separated Subscription Filter Name
1113                                       and Handler Name
1114                           */
1115                          String _getSubscriptionLogString
1116                              (CIMInstance & subscription);
1117                      
1118 kumpf           1.54     SubscriptionRepository* _subscriptionRepository;
1119 kumpf           1.51 
1120 kumpf           1.54     SubscriptionTable * _subscriptionTable;
1121 kumpf           1.6  
1122 kumpf           1.8      /**
1123                              Handle to Provider Registration Manager
1124                           */
1125                          ProviderRegistrationManager * _providerRegManager;
1126 kumpf           1.5  
1127 carolann.graves 1.74     /**
1128 chuck           1.64         Pointer to CIMRepository, for use in building QueryExpression.
1129                           */
1130                          CIMRepository* _cimRepository;
1131                      
1132 kumpf           1.5      /**
1133                              Integer representing queue ID for accessing Provider Manager Service
1134                           */
1135                          Uint32 _providerManager;
1136                      
1137                          /**
1138                              Integer representing queue ID for accessing Handler Manager Service
1139                           */
1140                          Uint32 _handlerService;
1141                      
1142                          /**
1143 kumpf           1.46         Boolean indicating that the CIM Server has been configured to
1144                              allow non-privileged users read and write access to the
1145                              Subscription classes.
1146                           */
1147                          Boolean _enableSubscriptionsForNonprivilegedUsers;
1148                      
1149 kumpf           1.55     /**
1150 carolann.graves 1.74 	Gets the indication class specified by the subscription filter query.
1151 yi.zhou         1.66 
1152                      	@param instance     the subscription instance
1153                      
1154                      	@return CIMClass object for the indication class
1155                          */
1156                          CIMClass _getIndicationClass(
1157                      	const CIMInstance & instance);
1158                      
1159                          /**
1160 kumpf           1.55         Arrays of valid and supported property values
1161                      
1162 carolann.graves 1.74         Notes:
1163 kumpf           1.55         Valid values are defined by the CIM Event Schema MOF
1164                              Supported values are a subset of the valid values
1165                              Some valid values, as defined in the MOF, are not currently supported
1166                                  by the Pegasus IndicationService
1167                      
1168 carolann.graves 1.74         Supported Values
1169 kumpf           1.55         SubscriptionState: Enabled, Disabled
1170                              RepeatNotificationPolicy: Unknown, Other, None, Suppress, Delay
1171                              OnFatalErrorPolicy: Ignore, Disable, Remove
1172                              PersistenceType: Permanent, Transient
1173                           */
1174 kumpf           1.19     Array <Uint16> _validStates;
1175                          Array <Uint16> _validRepeatPolicies;
1176                          Array <Uint16> _validErrorPolicies;
1177                          Array <Uint16> _validPersistenceTypes;
1178 kumpf           1.55     Array <Uint16> _supportedStates;
1179                          Array <Uint16> _supportedRepeatPolicies;
1180                          Array <Uint16> _supportedErrorPolicies;
1181                          Array <Uint16> _supportedPersistenceTypes;
1182 yi.zhou         1.66 
1183 kumpf           1.1  };
1184                      
1185                      PEGASUS_NAMESPACE_END
1186                      
1187 kumpf           1.41 #endif  /* Pegasus_IndicationService_h */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2