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

Diff for /pegasus/src/Pegasus/Common/ResponseHandler.h between version 1.9 and 1.25

version 1.9, 2002/09/19 17:02:26 version 1.25, 2006/01/30 16:17:07
Line 1 
Line 1 
 //%/////////////////////////////////////////////////////////////////////////////  //%2006////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // The Open Group, Tivoli Systems  // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
   // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation, The Open Group.
   // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; Symantec Corporation; The Open Group.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 21 
Line 29 
 // //
 //============================================================================== //==============================================================================
 // //
 // Author: Chip Vincent (cvincent@us.ibm.com)  
 //  
 // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)  
 //  
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #ifndef Pegasus_ResponseHandler_h #ifndef Pegasus_ResponseHandler_h
Line 43 
Line 47 
 #include <Pegasus/Common/CIMClass.h> #include <Pegasus/Common/CIMClass.h>
 #include <Pegasus/Common/OperationContext.h> #include <Pegasus/Common/OperationContext.h>
  
   
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 /** /**
 Callback to deliver results to the CIMOM.  
   
 <p>The <tt>ResponseHandler</tt> class allows a provider <p>The <tt>ResponseHandler</tt> class allows a provider
 to report operation progress and results to the CIMOM.  to report operation progress and results to the CIM Server.
 Subclasses are defined for each of the types of object Subclasses are defined for each of the types of object
 that a provider can deliver to the CIMOM.  that a provider can deliver to the CIM Server.
 A <tt>ResponseHandler</tt> object of the appropriate type A <tt>ResponseHandler</tt> object of the appropriate type
 is passed to provider is passed to provider
 functions that are invoked to process client requests (it functions that are invoked to process client requests (it
 is not passed to the <tt>{@link initialize initialize}</tt> is not passed to the <tt>{@link initialize initialize}</tt>
 or <tt>{@link terminate terminate}</tt> functions). It or <tt>{@link terminate terminate}</tt> functions). It
 contains the following public member functions that contains the following public member functions that
 may be used to deliver results to the CIMOM:</p>  may be used to deliver results to the CIM Server:</p>
 <ul> <ul>
 <li><tt>{@link processing processing}</tt> - inform the CIMOM  <li><tt>{@link processing processing}</tt> - inform the CIM Server
 that delivery of results is beginning</li>  that delivery of results is beginning.</li>
 <li><tt>{@link deliver deliver}</tt> - deliver an incremental <li><tt>{@link deliver deliver}</tt> - deliver an incremental
 result to the CIMOM; the CIMOM accumulates results as  result to the CIM Server; the CIM Server accumulates results as
 they are received from the provider</li>  they are received from the provider.</li>
 <li><tt>{@link complete complete}</tt> - inform the CIMOM that  <li><tt>{@link complete complete}</tt> - inform the CIM Server that
 process of the request is complete and that no further process of the request is complete and that no further
 results will be delivered</li>  results will be delivered.</li>
 </ul> </ul>
 */ */
  
Line 76 
Line 79 
 public: public:
  
     /**     /**
     Destructor.      ResponseHandler destructor.
     */     */
     virtual ~ResponseHandler(void);     virtual ~ResponseHandler(void);
  
     /**      // This method is defined in subclasses, specialized for
     Deliver a possibly partial result to CIMOM.      // the appropriate data type.
     <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);     //virtual void deliver(const T & object);
  
     /**      // This method is defined in subclasses, specialized for
     Deliver a set of results to CIMOM.      // the appropriate data type.
     <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);     //virtual void deliver(const Array<T> & objects);
  
     /**     /**
     Inform the CIMOM that delivery of results will begin.      Inform the CIM server that delivery of results will begin.
     <p>The provider must call <tt>processing</tt> before     <p>The provider must call <tt>processing</tt> before
     attempting to call <tt>deliver</tt>.     attempting to call <tt>deliver</tt>.
     */     */
     virtual void processing(void) = 0;     virtual void processing(void) = 0;
  
     /**     /**
     Inform the CIMOM that delivery of results is complete.      Inform the CIM server that delivery of results is complete.
     <p>The provider must call <tt>complete</tt> when all     <p>The provider must call <tt>complete</tt> when all
     results have been delivered. It must not call <tt>deliver</tt>      results have been delivered. The provider must not call <tt>deliver</tt>
     after calling <tt>complete</tt>.</p>     after calling <tt>complete</tt>.</p>
     */     */
     virtual void complete(void) = 0;     virtual void complete(void) = 0;
   
   #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES
       /** <I><B>Experimental Interface</B></I><BR>
       Set the context for the results delivered to the CIM Server.
       <p>The <tt>setContext</tt> function is used by providers to
       set a context for the response, in the form of an OperationContext
       object.  The context of the response contains the settings that
       apply to all the results delivered to the CIM Server.  An example
       context is the language of the response, in the form of a
       ContentLanguageListContainer in the OperationContext.</p>
       <p>This method may be called at any point in the response
       processing before <tt>complete</tt> is called.</p>
       <p>Currently supported OperationContext containers:
       <li>
       ContentLanguageListContainer: used to set the ContentLanguageList of the
       results.
       </li>
       </p>
       <p>Implementation Note:  This method is concrete to preserve
       binary compatibility with previous releases of the CIMServer</p>
       */
   #ifdef PEGASUS_OS_OS400
   virtual
   #endif
       void setContext(const OperationContext & context);
   #endif  // PEGASUS_USE_EXPERIMENTAL_INTERFACES
   
   protected:
   
       ResponseHandler();
   
       ResponseHandler(const ResponseHandler& handler);
   
       ResponseHandler& operator=(const ResponseHandler& handler);
   
       /**
       Gets the context for the results delivered to the CIM server.
       */
       OperationContext getContext(void) const;
 }; };
  
  
 //  /**
 // InstanceResponseHandler  The InstanceResponseHandler class is a subclass to the ResponseHandler class.
 //  The InstanceResponseHandler class contains functions that are specific to an
   instance of the ResponseHandler class.
   */
 class PEGASUS_COMMON_LINKAGE InstanceResponseHandler : virtual public ResponseHandler class PEGASUS_COMMON_LINKAGE InstanceResponseHandler : virtual public ResponseHandler
 { {
 public: public:
       /** <p>The <tt>deliver</tt> function is used by providers to
           deliver results to the CIM Server. 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 CIMInstance & instance) = 0;     virtual void deliver(const CIMInstance & instance) = 0;
  
       /** <p>This form of the <tt>deliver</tt> function may be used
           to return a set of elements to the CIM Server. 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<CIMInstance> & instances) = 0;     virtual void deliver(const Array<CIMInstance> & instances) = 0;
 }; };
  
  
 // //
 // ObjectPathResponseHandler // ObjectPathResponseHandler
 //  ///
 class PEGASUS_COMMON_LINKAGE ObjectPathResponseHandler : virtual public ResponseHandler class PEGASUS_COMMON_LINKAGE ObjectPathResponseHandler : virtual public ResponseHandler
 { {
 public: public:
       /** <p>The <tt>deliver</tt> function is used by providers to
           deliver results to the CIM Server. 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 CIMObjectPath & objectPath) = 0;     virtual void deliver(const CIMObjectPath & objectPath) = 0;
  
       /** <p>This form of the <tt>deliver</tt> function may be used
           to return a set of elements to the CIM Server. 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<CIMObjectPath> & objectPaths) = 0;     virtual void deliver(const Array<CIMObjectPath> & objectPaths) = 0;
 }; };
  
  
 //  /**
 // MethodResultResponseHandler  The MethodResultResponseHandler class is a subclass to the ResponseHandler class.
 //  */
 class PEGASUS_COMMON_LINKAGE MethodResultResponseHandler : virtual public ResponseHandler class PEGASUS_COMMON_LINKAGE MethodResultResponseHandler : virtual public ResponseHandler
 { {
 public: public:
       /**
           Add documentation here.
           */
     virtual void deliverParamValue(const CIMParamValue & outParamValue) = 0;     virtual void deliverParamValue(const CIMParamValue & outParamValue) = 0;
  
       /**
           Add documentation here.
           */
     virtual void deliverParamValue(const Array<CIMParamValue> & outParamValues) = 0;     virtual void deliverParamValue(const Array<CIMParamValue> & outParamValues) = 0;
  
       /**
           Add documentation here.
           */
     virtual void deliver(const CIMValue & returnValue) = 0;     virtual void deliver(const CIMValue & returnValue) = 0;
 }; };
  
  
 //  /**
 // IndicationResponseHandler  The IndicationResponseHandler class is a subclass to the ResponseHandler class.
 //  <p> NOTE: This class definition should not be considered complete until indication
 // NOTE: This class definition should not be considered complete until  support has been completed in Pegasus.  Implementation of indication support may
 // indication support has been completed in Pegasus.  Implementation of  reveal a need for API changes in this class.</p>
 // indication support may reveal a need for API changes in this class.  */
 class PEGASUS_COMMON_LINKAGE IndicationResponseHandler : virtual public ResponseHandler class PEGASUS_COMMON_LINKAGE IndicationResponseHandler : virtual public ResponseHandler
 { {
 public: public:
       /**
           Add documentation here.
           */
     virtual void deliver(const CIMIndication & indication) = 0;     virtual void deliver(const CIMIndication & indication) = 0;
  
           /**
           Add documentation here.
           */
     virtual void deliver(const Array<CIMIndication> & indications) = 0;     virtual void deliver(const Array<CIMIndication> & indications) = 0;
  
           /**
           Add documentation here.
           */
     virtual void deliver(     virtual void deliver(
         const OperationContext & context,         const OperationContext & context,
         const CIMIndication & indication) = 0;         const CIMIndication & indication) = 0;
  
           /**
           Add documentation here.
           */
     virtual void deliver(     virtual void deliver(
         const OperationContext & context,         const OperationContext & context,
         const Array<CIMIndication> & indications) = 0;         const Array<CIMIndication> & indications) = 0;
Line 191 
Line 273 
 // in Pegasus, as those are the only APIs that use this response handler // in Pegasus, as those are the only APIs that use this response handler
 // type.  Implementation of support for those provider types may reveal // type.  Implementation of support for those provider types may reveal
 // a need for API changes in this class. // a need for API changes in this class.
   ///
 class PEGASUS_COMMON_LINKAGE ObjectResponseHandler : virtual public ResponseHandler class PEGASUS_COMMON_LINKAGE ObjectResponseHandler : virtual public ResponseHandler
 { {
 public: public:
       /** <p>The <tt>deliver</tt> function is used by providers to
           deliver results to the CIM Server. 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 CIMObject & object) = 0;     virtual void deliver(const CIMObject & object) = 0;
  
       /** <p>This form of the <tt>deliver</tt> function may be used
           to return a set of elements to the CIM Server. 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<CIMObject> & objects) = 0;     virtual void deliver(const Array<CIMObject> & objects) = 0;
 }; };
  
   
 #ifdef PEGASUS_INTERNALONLY  
 // This type is used in CIMPropertyProvider which Pegasus does not support  
 //  
 // ValueResponseHandler  
 //  
 class PEGASUS_COMMON_LINKAGE ValueResponseHandler : virtual public ResponseHandler  
 {  
 public:  
     virtual void deliver(const CIMValue & value) = 0;  
   
     virtual void deliver(const Array<CIMValue> & values) = 0;  
 };  
 #endif  
   
   
 #ifdef PEGASUS_INTERNALONLY  
 // This type is used in CIMClassProvider which Pegasus does not support  
 //  
 // ClassResponseHandler  
 //  
 class PEGASUS_COMMON_LINKAGE ClassResponseHandler : virtual public ResponseHandler  
 {  
 public:  
     virtual void deliver(const CIMClass & classObj) = 0;  
   
     virtual void deliver(const Array<CIMClass> & classObjs) = 0;  
 };  
 #endif  
   
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
  
 #endif #endif


Legend:
Removed from v.1.9  
changed lines
  Added in v.1.25

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2