00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
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
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
00728 CIMXMLCIMOMHandle(const CIMXMLCIMOMHandle&);
00729 CIMXMLCIMOMHandle& operator=(const CIMXMLCIMOMHandle&);
00730 };
00731
00732 }
00733
00734 #endif