![]() ![]() |
![]() |
File: [Pegasus] / pegasus / src / Pegasus / Common / ResponseHandler.h
(download)
Revision: 1.4, Wed Sep 4 19:41:49 2002 UTC (21 years, 10 months ago) by kumpf Branch: MAIN Changes since 1.3: +170 -40 lines HP-RK API Review: Rework ResponseHandler classes. |
//%///////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM, // The Open Group, Tivoli Systems // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //============================================================================== // // Author: Chip Vincent (cvincent@us.ibm.com) // // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) // //%///////////////////////////////////////////////////////////////////////////// #ifndef Pegasus_ResponseHandler_h #define Pegasus_ResponseHandler_h #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Array.h> #include <Pegasus/Provider/Linkage.h> #include <Pegasus/Common/CIMInstance.h> #include <Pegasus/Common/CIMObjectPath.h> #include <Pegasus/Common/CIMParamValue.h> #include <Pegasus/Common/CIMValue.h> #include <Pegasus/Common/CIMIndication.h> #include <Pegasus/Common/CIMObject.h> #include <Pegasus/Common/CIMClass.h> PEGASUS_NAMESPACE_BEGIN /** Callback to deliver results to the CIMOM. <p>The <tt>ResponseHandler</tt> class allows a provider to report operation progress and results to the CIMOM. Subclasses are defined for each of the types of object that a provider can deliver to the CIMOM. A <tt>ResponseHandler</tt> object of the appropriate type is passed to provider functions that are invoked to process client requests (it is not passed to the <tt>{@link initialize initialize}</tt> or <tt>{@link terminate terminate}</tt> functions). It contains the following public member functions that may be used to deliver results to the CIMOM:</p> <ul> <li><tt>{@link processing processing}</tt> - inform the CIMOM that delivery of results is beginning</li> <li><tt>{@link deliver deliver}</tt> - deliver an incremental result to the CIMOM; the CIMOM accumulates results as they are received from the provider</li> <li><tt>{@link complete complete}</tt> - inform the CIMOM that process of the request is complete and that no further results will be delivered</li> </ul> */ class PEGASUS_PROVIDER_LINKAGE ResponseHandler { public: /** Destructor. */ virtual ~ResponseHandler(void); /** Deliver a possibly partial result to CIMOM. <p>The <tt>deliver</tt> function is used by providers to deliver results to the CIMOM. For operations that require a single element result (<tt>getInstance</tt>, for example), <tt>deliver</tt> should be called only once to deliver the entire result. For operations that involve enumeration, the single-element form shown here may be used, each iteration delivering an incremental element of the total result. The Array form below may be used to deliver a larger set of result elements.</p> */ //virtual void deliver(const T & object); /** Deliver a set of results to CIMOM. <p>This form of the <tt>deliver</tt> function may be used to return a set of elements to the CIMOM. The set is not required to be complete, and the provider may invoke this function multiple times, if necessary. This form should only be used when the operation requires a result consisting of more than one element, such as an enumeration.</p> */ //virtual void deliver(const Array<T> & objects); /** Inform the CIMOM that delivery of results will begin. <p>The provider must call <tt>processing</tt> before attempting to call <tt>deliver</tt>. */ virtual void processing(void) = 0; /** Inform the CIMOM that delivery of results is complete. <p>The provider must call <tt>complete</tt> when all results have been delivered. It must not call <tt>deliver</tt> after calling <tt>complete</tt>.</p> */ virtual void complete(void) = 0; }; // // InstanceResponseHandler // class PEGASUS_PROVIDER_LINKAGE InstanceResponseHandler : virtual public ResponseHandler { public: virtual void deliver(const CIMInstance & instance) = 0; virtual void deliver(const Array<CIMInstance> & instances) = 0; }; // // ObjectPathResponseHandler // class PEGASUS_PROVIDER_LINKAGE ObjectPathResponseHandler : virtual public ResponseHandler { public: virtual void deliver(const CIMObjectPath & objectPath) = 0; virtual void deliver(const Array<CIMObjectPath> & objectPaths) = 0; }; // // MethodResultResponseHandler // class PEGASUS_PROVIDER_LINKAGE MethodResultResponseHandler : virtual public ResponseHandler { public: virtual void deliverParamValue(const CIMParamValue & outParamValue) = 0; virtual void deliverParamValue(const Array<CIMParamValue> & outParamValues) = 0; virtual void deliver(const CIMValue & returnValue) = 0; }; // // IndicationResponseHandler // class PEGASUS_PROVIDER_LINKAGE IndicationResponseHandler : virtual public ResponseHandler { public: virtual void deliver(const CIMIndication & indication) = 0; virtual void deliver(const Array<CIMIndication> & indications) = 0; }; // // ObjectResponseHandler // class PEGASUS_PROVIDER_LINKAGE ObjectResponseHandler : virtual public ResponseHandler { public: virtual void deliver(const CIMObject & object) = 0; virtual void deliver(const Array<CIMObject> & objects) = 0; }; // // ValueResponseHandler // class PEGASUS_PROVIDER_LINKAGE ValueResponseHandler : virtual public ResponseHandler { public: virtual void deliver(const CIMValue & value) = 0; virtual void deliver(const Array<CIMValue> & values) = 0; }; // // ClassResponseHandler // class PEGASUS_PROVIDER_LINKAGE ClassResponseHandler : virtual public ResponseHandler { public: virtual void deliver(const CIMClass & classObj) = 0; virtual void deliver(const Array<CIMClass> & classObjs) = 0; }; PEGASUS_NAMESPACE_END #endif
No CVS admin address has been configured |
Powered by ViewCVS 0.9.2 |