OW_CIMXMLCIMOMHandle.hpp

Go to the documentation of this file.
00001 /*******************************************************************************
00002 * Copyright (C) 2001-2004 Vintela, Inc. All rights reserved.
00003 *
00004 * Redistribution and use in source and binary forms, with or without
00005 * modification, are permitted provided that the following conditions are met:
00006 *
00007 *  - Redistributions of source code must retain the above copyright notice,
00008 *    this list of conditions and the following disclaimer.
00009 *
00010 *  - Redistributions in binary form must reproduce the above copyright notice,
00011 *    this list of conditions and the following disclaimer in the documentation
00012 *    and/or other materials provided with the distribution.
00013 *
00014 *  - Neither the name of Vintela, Inc. nor the names of its
00015 *    contributors may be used to endorse or promote products derived from this
00016 *    software without specific prior written permission.
00017 *
00018 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
00019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021 * ARE DISCLAIMED. IN NO EVENT SHALL Vintela, Inc. OR THE CONTRIBUTORS
00022 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00023 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00024 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00025 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00026 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00027 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00028 * POSSIBILITY OF SUCH DAMAGE.
00029 *******************************************************************************/
00030 
00037 #ifndef OW_CIMXMLCIMOMHANDLE_HPP_
00038 #define OW_CIMXMLCIMOMHANDLE_HPP_
00039 #include "OW_config.h"
00040 #include "OW_Types.hpp"
00041 #include "OW_ClientCIMOMHandle.hpp"
00042 #include "OW_CIMProtocolIFC.hpp"
00043 #include "OW_XMLQualifier.hpp"
00044 #include "OW_Param.hpp"
00045 #include "OW_Map.hpp"
00046 
00047 namespace OW_NAMESPACE
00048 {
00049 
00059 class OW_CLIENT_API CIMXMLCIMOMHandle : public ClientCIMOMHandle
00060 {
00061 public:
00074    CIMXMLCIMOMHandle( const CIMProtocolIFCRef& prot );
00075    
00079    virtual CIMProtocolIFCRef getWBEMProtocolHandler() const;
00080 
00085    virtual void close();
00086 
00103    virtual void enumClass(
00104       const String& ns,
00105       const String& className,
00106       CIMClassResultHandlerIFC& result,
00107       WBEMFlags::EDeepFlag deep = WBEMFlags::E_SHALLOW, 
00108       WBEMFlags::ELocalOnlyFlag localOnly = WBEMFlags::E_NOT_LOCAL_ONLY,
00109       WBEMFlags::EIncludeQualifiersFlag includeQualifiers = WBEMFlags::E_INCLUDE_QUALIFIERS,
00110       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin = WBEMFlags::E_INCLUDE_CLASS_ORIGIN);
00111    
00123    virtual void enumClassNames(
00124       const String& ns,
00125       const String& className,
00126       StringResultHandlerIFC& result,
00127       WBEMFlags::EDeepFlag deep=WBEMFlags::E_DEEP);
00153    virtual CIMInstance getInstance(
00154       const String& ns,
00155       const CIMObjectPath& instanceName,
00156       WBEMFlags::ELocalOnlyFlag localOnly = WBEMFlags::E_NOT_LOCAL_ONLY, 
00157       WBEMFlags::EIncludeQualifiersFlag includeQualifiers = WBEMFlags::E_EXCLUDE_QUALIFIERS,
00158       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin = WBEMFlags::E_EXCLUDE_CLASS_ORIGIN,
00159       const StringArray* propertyList=0);
00191    virtual void enumInstances(
00192       const String& ns,
00193       const String& className,
00194       CIMInstanceResultHandlerIFC& result,
00195       WBEMFlags::EDeepFlag deep = WBEMFlags::E_DEEP, 
00196       WBEMFlags::ELocalOnlyFlag localOnly = WBEMFlags::E_NOT_LOCAL_ONLY,
00197       WBEMFlags::EIncludeQualifiersFlag includeQualifiers = WBEMFlags::E_EXCLUDE_QUALIFIERS, 
00198       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin = WBEMFlags::E_EXCLUDE_CLASS_ORIGIN,
00199       const StringArray* propertyList=0);
00206    virtual CIMQualifierType getQualifierType(const String& ns,
00207       const String& qualifierName);
00217    virtual void enumInstanceNames(
00218       const String& ns,
00219       const String& className,
00220       CIMObjectPathResultHandlerIFC& result);
00239    virtual CIMClass getClass(
00240       const String& ns,
00241       const String& className,
00242       WBEMFlags::ELocalOnlyFlag localOnly = WBEMFlags::E_NOT_LOCAL_ONLY,
00243       WBEMFlags::EIncludeQualifiersFlag includeQualifiers = WBEMFlags::E_INCLUDE_QUALIFIERS,
00244       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin = WBEMFlags::E_INCLUDE_CLASS_ORIGIN,
00245       const StringArray* propertyList=NULL);
00257    virtual CIMValue invokeMethod(
00258       const String& ns,
00259       const CIMObjectPath& path,
00260       const String &methodName, const CIMParamValueArray &inParams,
00261       CIMParamValueArray &outParams);
00262 #ifndef OW_DISABLE_SCHEMA_MANIPULATION
00263 
00270    virtual void createClass(const String& ns,
00271       const CIMClass &cc);
00279    virtual void modifyClass(const String &ns, const CIMClass &cc);
00285    virtual void deleteClass(const String& ns, const String& className);
00286 #endif // #ifndef OW_DISABLE_SCHEMA_MANIPULATION
00287 #ifndef OW_DISABLE_QUALIFIER_DECLARATION
00288 
00297    virtual void setQualifierType(const String& ns,
00298       const CIMQualifierType &qt);
00306    virtual void enumQualifierTypes(
00307       const String& ns,
00308       CIMQualifierTypeResultHandlerIFC& result);
00314    virtual void deleteQualifierType(const String& ns, const String& qualName);
00315 #endif // #ifndef OW_DISABLE_QUALIFIER_DECLARATION
00316 #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00317 
00326    virtual CIMObjectPath createInstance(const String& ns,
00327       const CIMInstance &ci);
00336    virtual void modifyInstance(
00337       const String& ns,
00338       const CIMInstance& modifiedInstance,
00339       WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00340       const StringArray* propertyList);
00349    virtual void deleteInstance(const String& ns, const CIMObjectPath &path);
00350 #if !defined(OW_DISABLE_PROPERTY_OPERATIONS)
00351 
00359    virtual void setProperty(
00360       const String& ns,
00361       const CIMObjectPath &name,
00362       const String &propertyName, const CIMValue &cv);
00363 #endif // #if !defined(OW_DISABLE_PROPERTY_OPERATIONS)
00364 #endif // #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00365 
00366 #if !defined(OW_DISABLE_PROPERTY_OPERATIONS)
00367 
00375    virtual CIMValue getProperty(
00376       const String& ns,
00377       const CIMObjectPath &name,
00378       const String &propertyName);
00379 #endif // #if !defined(OW_DISABLE_PROPERTY_OPERATIONS)
00380 
00381 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00382 
00456    virtual void associators(
00457       const String& ns,
00458       const CIMObjectPath &path,
00459       CIMInstanceResultHandlerIFC& result,
00460       const String &assocClass, const String &resultClass,
00461       const String &role, const String &resultRole,
00462       WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00463       const StringArray* propertyList);
00464    virtual void associatorsClasses(
00465       const String& ns,
00466       const CIMObjectPath& path,
00467       CIMClassResultHandlerIFC& result,
00468       const String& assocClass=String(),
00469       const String& resultClass=String(),
00470       const String& role=String(),
00471       const String& resultRole=String(),
00472       WBEMFlags::EIncludeQualifiersFlag includeQualifiers=WBEMFlags::E_EXCLUDE_QUALIFIERS,
00473       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin=WBEMFlags::E_EXCLUDE_CLASS_ORIGIN,
00474       const StringArray* propertyList=0);
00505    virtual void references(
00506       const String& ns,
00507       const CIMObjectPath &path,
00508       CIMInstanceResultHandlerIFC& result,
00509       const String &resultClass, const String &role,
00510       WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00511       const StringArray* propertyList);
00512    virtual void referencesClasses(
00513       const String& ns,
00514       const CIMObjectPath &path,
00515       CIMClassResultHandlerIFC& result,
00516       const String &resultClass, const String &role,
00517       WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00518       const StringArray* propertyList);
00558    virtual void associatorNames(
00559       const String& ns,
00560       const CIMObjectPath &path,
00561       CIMObjectPathResultHandlerIFC& result,
00562       const String &assocClass,
00563       const String &resultClass, const String &role,
00564       const String &resultRole);
00565    
00579    virtual void referenceNames(
00580       const String& ns,
00581       const CIMObjectPath &path,
00582       CIMObjectPathResultHandlerIFC& result,
00583       const String &resultClass,
00584       const String &role);
00585 #endif // #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00586 
00610    CIMInstanceEnumeration execQuery(
00611       const String& ns,
00612       const String &query, int wqlLevel);
00633    virtual void execQuery(
00634       const String& ns,
00635       CIMInstanceResultHandlerIFC& result,
00636       const String& query, const String& queryLanguage);
00637    virtual CIMFeatures getServerFeatures();
00638 
00646    virtual bool setHTTPRequestHeader(const String& hdrName,
00647       const String& hdrValue);
00648 
00658    virtual bool getHTTPResponseHeader(const String& hdrName,
00659       String& valueOut) const;
00660 
00661    class ClientOperation
00662    {
00663    public:
00664       virtual ~ClientOperation();
00665       virtual void operator()(CIMXMLParser& parser) = 0;
00666    };
00667 
00668 private:
00669    void sendCommonXMLHeader(std::ostream& ostr, const String& cimProtocolVersion);
00670    void sendIntrinsicXMLHeader(const String &, const String& ns,
00671       std::ostream& ostr, const String& cimProtocolVersion);
00672    void sendExtrinsicXMLHeader(const String &, const String& ns,
00673       const CIMObjectPath& path,
00674       std::ostream& ostr, const String& cimProtocolVersion);
00675    void sendXMLTrailer(std::ostream& ostr, bool intrinsic = true);
00676 
00677    void doSendRequest(const Reference<std::iostream>& ostr,
00678       const String& methodName, const String& cimObject,
00679       bool isIntrinsic,
00680       ClientOperation& op, 
00681       const String& cimProtocolVersion);
00682    // throws a CIMException
00683    void checkNodeForCIMError(CIMXMLParser& reply,
00684       const String& operation, bool isIntrinsic);
00685    void intrinsicMethod(
00686       const String& ns, const String& operation,
00687       ClientOperation& op,
00688       const String& cimProtocolVersion,
00689       const Array<Param>& params = Array<Param>(),
00690       const String& extra = String());
00691    
00692 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00693    void associatorsCommon(
00694       const String& ns,
00695       const CIMObjectPath& path,
00696       CIMInstanceResultHandlerIFC* iresult,
00697       CIMClassResultHandlerIFC* cresult,
00698       const String& assocClass, const String& resultClass,
00699       const String& role, const String& resultRole,
00700       WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00701       const StringArray* propertyList);
00702    void referencesCommon(
00703       const String& ns,
00704       const CIMObjectPath& path,
00705       CIMInstanceResultHandlerIFC* iresult,
00706       CIMClassResultHandlerIFC* cresult,
00707       const String& resultClass,
00708       const String& role,
00709       WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00710       const StringArray* propertyList);
00711 #endif
00712 
00713 #ifdef OW_WIN32
00714 #pragma warning (push)
00715 #pragma warning (disable: 4251)
00716 #endif
00717    
00718    CIMProtocolIFCRef m_protocol;
00719 
00720 #ifdef OW_WIN32
00721 #pragma warning (pop)
00722 #endif
00723 
00724    UInt32 m_iMessageID;
00725    bool m_performStrictChecks;
00726 
00727    // non-copyable, unimplemented
00728    CIMXMLCIMOMHandle(const CIMXMLCIMOMHandle&);
00729    CIMXMLCIMOMHandle& operator=(const CIMXMLCIMOMHandle&);
00730 };
00731 
00732 } // end namespace OW_NAMESPACE
00733 
00734 #endif

Generated on Thu Feb 9 08:47:56 2006 for openwbem by  doxygen 1.4.6