/scratch/rpmbuild.5425.Bj5455/pegasus/src/Pegasus/Client/CIMClient.h

00001 //%LICENSE////////////////////////////////////////////////////////////////
00002 //
00003 // Licensed to The Open Group (TOG) under one or more contributor license
00004 // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
00005 // this work for additional information regarding copyright ownership.
00006 // Each contributor licenses this file to you under the OpenPegasus Open
00007 // Source License; you may not use this file except in compliance with the
00008 // License.
00009 //
00010 // Permission is hereby granted, free of charge, to any person obtaining a
00011 // copy of this software and associated documentation files (the "Software"),
00012 // to deal in the Software without restriction, including without limitation
00013 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
00014 // and/or sell copies of the Software, and to permit persons to whom the
00015 // Software is furnished to do so, subject to the following conditions:
00016 //
00017 // The above copyright notice and this permission notice shall be included
00018 // in all copies or substantial portions of the Software.
00019 //
00020 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00021 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00022 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00023 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
00024 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
00025 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
00026 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00027 //
00029 //
00030 //%/////////////////////////////////////////////////////////////////////////////
00031 
00032 #ifndef Pegasus_Client_h
00033 #define Pegasus_Client_h
00034 
00035 #include <Pegasus/Common/Config.h>
00036 #include <Pegasus/Common/String.h>
00037 #include <Pegasus/Common/CIMName.h>
00038 #include <Pegasus/Common/SSLContext.h>
00039 #include <Pegasus/Common/CIMObject.h>
00040 #include <Pegasus/Common/CIMClass.h>
00041 #include <Pegasus/Common/CIMInstance.h>
00042 #include <Pegasus/Common/CIMObjectPath.h>
00043 #include <Pegasus/Common/CIMValue.h>
00044 #include <Pegasus/Common/CIMParamValue.h>
00045 #include <Pegasus/Common/CIMPropertyList.h>
00046 #include <Pegasus/Common/CIMQualifierDecl.h>
00047 #include <Pegasus/Common/Exception.h>
00048 #include <Pegasus/Client/CIMClientException.h>
00049 #include <Pegasus/Client/Linkage.h>
00050 #include <Pegasus/Common/AcceptLanguageList.h>
00051 #include <Pegasus/Common/ContentLanguageList.h>
00052 #include <Pegasus/Client/ClientOpPerformanceDataHandler.h>
00053 
00054 
00055 PEGASUS_NAMESPACE_BEGIN
00056 
00057 class CIMClientInterface;
00058 
00069 class PEGASUS_CLIENT_LINKAGE CIMClient
00070 {
00071 public:
00072 
00076     CIMClient();
00077 
00081     ~CIMClient();
00082 
00088     Uint32 getTimeout() const;
00089 
00098     void setTimeout(Uint32 timeoutMilliseconds);
00099 
00132     void connect(
00133         const String& host,
00134         const Uint32 portNumber,
00135         const String& userName,
00136         const String& password);
00137 
00156     void connect(
00157         const String& host,
00158         const Uint32 portNumber,
00159         const SSLContext& sslContext,
00160         const String& userName,
00161         const String& password);
00162 
00175     void connectLocal();
00176 
00182     void disconnect();
00183 
00191     void setRequestAcceptLanguages(const AcceptLanguageList& langs);
00192 
00199     AcceptLanguageList getRequestAcceptLanguages() const;
00200 
00208     void setRequestContentLanguages(const ContentLanguageList& langs);
00209 
00217     ContentLanguageList getRequestContentLanguages() const;
00218 
00226     ContentLanguageList getResponseContentLanguages() const;
00227 
00228 #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES
00229 
00231     void setRequestDefaultLanguages();
00232 #endif // PEGASUS_USE_EXPERIMENTAL_INTERFACES
00233 
00271     CIMClass getClass(
00272         const CIMNamespaceName& nameSpace,
00273         const CIMName& className,
00274         Boolean localOnly = true,
00275         Boolean includeQualifiers = true,
00276         Boolean includeClassOrigin = false,
00277         const CIMPropertyList& propertyList = CIMPropertyList());
00278 
00316     CIMInstance getInstance(
00317         const CIMNamespaceName& nameSpace,
00318         const CIMObjectPath& instanceName,
00319         Boolean localOnly = true,
00320         Boolean includeQualifiers = false,
00321         Boolean includeClassOrigin = false,
00322         const CIMPropertyList& propertyList = CIMPropertyList());
00323 
00336     void deleteClass(
00337         const CIMNamespaceName& nameSpace,
00338         const CIMName& className);
00339 
00353     void deleteInstance(
00354         const CIMNamespaceName& nameSpace,
00355         const CIMObjectPath& instanceName);
00356 
00370     void createClass(
00371         const CIMNamespaceName& nameSpace,
00372         const CIMClass& newClass);
00373 
00390     CIMObjectPath createInstance(
00391         const CIMNamespaceName& nameSpace,
00392         const CIMInstance& newInstance);
00393 
00407     void modifyClass(
00408         const CIMNamespaceName& nameSpace,
00409         const CIMClass& modifiedClass);
00410 
00435     void modifyInstance(
00436         const CIMNamespaceName& nameSpace,
00437         const CIMInstance& modifiedInstance,
00438         Boolean includeQualifiers = true,
00439         const CIMPropertyList& propertyList = CIMPropertyList());
00440 
00477     Array<CIMClass> enumerateClasses(
00478         const CIMNamespaceName& nameSpace,
00479         const CIMName& className = CIMName(),
00480         Boolean deepInheritance = false,
00481         Boolean localOnly = true,
00482         Boolean includeQualifiers = true,
00483         Boolean includeClassOrigin = false);
00484 
00507     Array<CIMName> enumerateClassNames(
00508         const CIMNamespaceName& nameSpace,
00509         const CIMName& className = CIMName(),
00510         Boolean deepInheritance = false);
00511 
00556     Array<CIMInstance> enumerateInstances(
00557         const CIMNamespaceName& nameSpace,
00558         const CIMName& className,
00559         Boolean deepInheritance = true,
00560         Boolean localOnly = true,
00561         Boolean includeQualifiers = false,
00562         Boolean includeClassOrigin = false,
00563         const CIMPropertyList& propertyList = CIMPropertyList());
00564 
00583     Array<CIMObjectPath> enumerateInstanceNames(
00584         const CIMNamespaceName& nameSpace,
00585         const CIMName& className);
00586 
00604     Array<CIMObject> execQuery(
00605         const CIMNamespaceName& nameSpace,
00606         const String& queryLanguage,
00607         const String& query);
00608 
00662     Array<CIMObject> associators(
00663         const CIMNamespaceName& nameSpace,
00664         const CIMObjectPath& objectName,
00665         const CIMName& assocClass = CIMName(),
00666         const CIMName& resultClass = CIMName(),
00667         const String& role = String::EMPTY,
00668         const String& resultRole = String::EMPTY,
00669         Boolean includeQualifiers = false,
00670         Boolean includeClassOrigin = false,
00671         const CIMPropertyList& propertyList = CIMPropertyList());
00672 
00711     Array<CIMObjectPath> associatorNames(
00712         const CIMNamespaceName& nameSpace,
00713         const CIMObjectPath& objectName,
00714         const CIMName& assocClass = CIMName(),
00715         const CIMName& resultClass = CIMName(),
00716         const String& role = String::EMPTY,
00717         const String& resultRole = String::EMPTY);
00718 
00761     Array<CIMObject> references(
00762         const CIMNamespaceName& nameSpace,
00763         const CIMObjectPath& objectName,
00764         const CIMName& resultClass = CIMName(),
00765         const String& role = String::EMPTY,
00766         Boolean includeQualifiers = false,
00767         Boolean includeClassOrigin = false,
00768         const CIMPropertyList& propertyList = CIMPropertyList());
00769 
00796     Array<CIMObjectPath> referenceNames(
00797         const CIMNamespaceName& nameSpace,
00798         const CIMObjectPath& objectName,
00799         const CIMName& resultClass = CIMName(),
00800         const String& role = String::EMPTY);
00801 
00819     CIMValue getProperty(
00820         const CIMNamespaceName& nameSpace,
00821         const CIMObjectPath& instanceName,
00822         const CIMName& propertyName);
00823 
00841     void setProperty(
00842         const CIMNamespaceName& nameSpace,
00843         const CIMObjectPath& instanceName,
00844         const CIMName& propertyName,
00845         const CIMValue& newValue = CIMValue());
00846 
00863     CIMQualifierDecl getQualifier(
00864         const CIMNamespaceName& nameSpace,
00865         const CIMName& qualifierName);
00866 
00881     void setQualifier(
00882         const CIMNamespaceName& nameSpace,
00883         const CIMQualifierDecl& qualifierDeclaration);
00884 
00898     void deleteQualifier(
00899         const CIMNamespaceName& nameSpace,
00900         const CIMName& qualifierName);
00901 
00915     Array<CIMQualifierDecl> enumerateQualifiers(
00916         const CIMNamespaceName& nameSpace);
00917 
00939     CIMValue invokeMethod(
00940         const CIMNamespaceName& nameSpace,
00941         const CIMObjectPath& instanceName,
00942         const CIMName& methodName,
00943         const Array<CIMParamValue>& inParameters,
00944         Array<CIMParamValue>& outParameters);
00945 
00954     void registerClientOpPerformanceDataHandler(
00955         ClientOpPerformanceDataHandler & handler);
00956 
00960     void deregisterClientOpPerformanceDataHandler();
00961 
00962 private:
00963 
00967     CIMClient(const CIMClient&);
00968 
00972     CIMClient& operator=(const CIMClient&);
00973 
00974     CIMClientInterface* _rep;
00975 };
00976 
00977 PEGASUS_NAMESPACE_END
00978 
00979 #endif /* Pegasus_Client_h */