PEP #: 17
TITLE: Merge-local: Add containers for indication subscription and delivery parameters
Version : 1.1
Authors: Carol Ann Krug Graves
State: Accepted
Approvals Required: Architecture Team
Type: Design
Created: 3 February 2003
Version History:
Version | Date | Authors | Reason |
1.0 | 3 February 2003 | Carol Ann Krug Graves | Initial proposal |
1.1 | 13 February 2003 | Carol Ann Krug Graves | Updated status |
Abstract: This PEP proposes the addition of new OperationContext container classes (SubscriptionInstanceContainer, SubscriptionFilterConditionContainer, and SubscriptionInstanceNamesContainer) for indication subscription and delivery parameters. These changes would make possible the future development of more sophisticated Indication providers that could, for example, make use of the subscription filter condition to optimize indication generation, make use of subscription repeat notification parameters to tailor the reporting of repeating occurrences of events to the subscriber's specifications, and generate indications for specific subscription instances.
Problem:
Pegasus currently has no OperationContext container classes to allow passing the Subscription instance and Subscription filter condition to an Indication Provider when a subscription is created. Similarly, there is no OperationContext container class to allow the Indication provider to pass a list of Subscription instance names back to the Indication Processor when an indication is generated.
Solution:
This PEP proposes the addition of new OperationContext container classes, SubscriptionInstanceContainer, SubscriptionFilterConditionContainer, and SubscriptionInstanceNamesContainer, for indication subscription and delivery parameters, with accompanying new test cases. This proposal would also require changes to the ProviderManagerService, OperationResponseHandler, and IndicationService to make use of the new classes.
The proposed new classes are as follows:
class SubscriptionInstanceContainerRep; class PEGASUS_COMMON_LINKAGE SubscriptionInstanceContainer : virtual public OperationContext::Container { public: static const String NAME; SubscriptionInstanceContainer (const OperationContext::Container & container); SubscriptionInstanceContainer (const SubscriptionInstanceContainer & container); SubscriptionInstanceContainer(const CIMInstance & subscriptionInstance); virtual ~SubscriptionInstanceContainer(void); SubscriptionInstanceContainer & operator= (const SubscriptionInstanceContainer & container); virtual String getName(void) const; virtual OperationContext::Container * clone(void) const; virtual void destroy(void); CIMInstance getInstance(void) const; protected: SubscriptionInstanceContainerRep* _rep; }; class SubscriptionFilterConditionContainerRep; class PEGASUS_COMMON_LINKAGE SubscriptionFilterConditionContainer : virtual public OperationContext::Container { public: static const String NAME; SubscriptionFilterConditionContainer (const OperationContext::Container & container); SubscriptionFilterConditionContainer (const SubscriptionFilterConditionContainer & container); SubscriptionFilterConditionContainer (const String & filterCondition, const String & queryLanguage); virtual ~SubscriptionFilterConditionContainer(void); SubscriptionFilterConditionContainer & operator= (const SubscriptionFilterConditionContainer & container); virtual String getName(void) const; virtual OperationContext::Container * clone(void) const; virtual void destroy(void); String getFilterCondition(void) const; String getQueryLanguage(void) const; protected: SubscriptionFilterConditionContainerRep* _rep; }; class SubscriptionInstanceNamesContainerRep; class PEGASUS_COMMON_LINKAGE SubscriptionInstanceNamesContainer : virtual public OperationContext::Container { public: static const String NAME; SubscriptionInstanceNamesContainer (const OperationContext::Container & container); SubscriptionInstanceNamesContainer (const SubscriptionInstanceNamesContainer & container); SubscriptionInstanceNamesContainer (const Array<CIMObjectPath> & subscriptionInstanceNames); virtual ~SubscriptionInstanceNamesContainer(void); SubscriptionInstanceNamesContainer & operator= (const SubscriptionInstanceNamesContainer & container); virtual String getName(void) const; virtual OperationContext::Container * clone(void) const; virtual void destroy(void); Array<CIMObjectPath> getInstanceNames(void) const; protected: SubscriptionInstanceNamesContainerRep* _rep; };
Schedule:
Action | Planned | Actual | Comment |
PEP Submitted | 3 February 2003 | 3 February 2003 | |
PEP Reviewed | 7 February 2003 | 7 February 2003 | |
PEP Approved | 7 February 2003 | 11 February 2003 | |
Code Committed | 14 February 2003 | 12 February 2003 |
Addendum:
This change has been implemented and submitted to the "local" branch. Following is the original COMMIT message associated with the submittal.
From: "Carol Ann Krug Graves" <carolann@hpgssl.cup.hp.com> Date: Mon, 13 Jan 2003 13:32:16 -0800 Subject: COMMIT-local: Added containers for indication subscription and delivery parameters This change affects only the Pegasus "local" branch. New OperationContext container classes, SubscriptionInstanceContainer, SubscriptionFilterConditionContainer, and SubscriptionInstanceNamesContainer, were added for indication subscription and delivery parameters. New test cases were added. Modified Files: pegasus/src/Pegasus/Common/CIMMessage.h pegasus/src/Pegasus/Common/OperationContext.cpp pegasus/src/Pegasus/Common/OperationContext.h pegasus/src/Pegasus/Common/tests/OperationContext/TestOperationContext.cpp pegasus/src/Pegasus/IndicationService/IndicationService.cpp pegasus/src/Pegasus/ProviderManager/OperationResponseHandler.h pegasus/src/Pegasus/ProviderManager/ProviderManagerService.cpp The changes have been tested successfully on HP-UX and Windows. Please let me know if you have any questions or problems related to these changes. Thanks, Carol Ann -- Carol Ann Krug Graves carolann.graves@hp.com Hewlett-Packard Company 408-447-5208