⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interopproviderutils.h

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 H
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// 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// 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.////==============================================================================#ifndef InteropProviderUtils_h#define InteropProviderUtils_h#include <Pegasus/Common/Array.h>#include <Pegasus/Common/CIMClass.h>#include <Pegasus/Common/CIMInstance.h>#include <Pegasus/Common/CIMObjectPath.h>#include <Pegasus/Common/CIMPropertyList.h>#include <Pegasus/Common/String.h>PEGASUS_NAMESPACE_BEGIN// Enum for class selection for instance operations.enum TARGET_CLASS {        PG_NAMESPACE,        PG_OBJECTMANAGER,        PG_CIMXMLCOMMUNICATIONMECHANISM,        PG_NAMESPACEINMANAGER,        PG_COMMMECHANISMFORMANAGER,        PG_REGISTEREDPROFILE,        PG_REGISTEREDSUBPROFILE,        PG_REFERENCEDPROFILE,        PG_ELEMENTCONFORMSTOPROFILE,        PG_SUBPROFILEREQUIRESPROFILE,        PG_SOFTWAREIDENTITY,        PG_ELEMENTSOFTWAREIDENTITY,        PG_INSTALLEDSOFTWAREIDENTITY,        PG_COMPUTERSYSTEM,        PG_HOSTEDOBJECTMANAGER,        PG_HOSTEDACCESSPOINT};/*************************************************************** *                                                             * *               Provider Utility Functions                    * *                                                             * ***************************************************************/const char * boolToString(Boolean x);//// Utility function used to produce trace/logging statements//String propertyListToString(const CIMPropertyList& pl);//// Helper function that constructs an the InstanceId property out of its// constituent pieces.//String buildProfileInstanceId(    const String & organization,    const String & name,    const String & version);//// function that creates an object path given a class definition, an// instance of that class, the host name, and the namespace.//CIMObjectPath buildInstancePath(    const CIMClass & cimClass,    const String & hostName,    const CIMNamespaceName & nameSpace,    const CIMInstance & instance);//// Template function that retrieves the value of a property. The template// type determines the type that should be contained within the CIMValue object// of the property (specified by the propName parameter) in the supplied// instance. This is used particularly for Required properties, so if the// property is not found or is NULL, an exception will be thrown.//template <class RetClass>RetClass getRequiredValue(const CIMInstance & instance,                          const CIMName & propName){    RetClass retVal;    Uint32 index = instance.findProperty(propName);    if(index == PEG_NOT_FOUND)    {        throw CIMOperationFailedException("Instance " +            instance.getPath().toString() +            " missing expected property " + propName.getString());    }    const CIMValue & tmpVal = instance.getProperty(index).getValue();    if(tmpVal.isNull())    {        throw CIMOperationFailedException("Instance " +            instance.getPath().toString() +            " has unexpected NULL value for property " + propName.getString());    }    tmpVal.get(retVal);    return retVal;}//// Determines if the namespace is allowable for this operation.// This provider is designed to accept either all namespaces or// limit itself to just one for operations.  In all cases, it// will provide the required answers and use the correct namespace// for any persistent information.  However, it may be configured// to either accept input operations from any namespace or simply// from one (normally the interop namespace).// @ objectReference for the operation.  This must include the// namespace and class name for the operation.// @return Returns normally if the namespace test is passed. Otherwise// it generates a CIMException (CIM_ERR_NOT_SUPPORTED)// @exception CIMException(CIM_ERR_NOT_SUPPORTED)//// NOTE:This function is commented out because the routing tables will always// do the right thing and that's the only way requests get here. If this// changes, then this function should be reinstated along with the various// locations where calls to the function are also commented out.///*bool namespaceSupported(const CIMObjectPath & path);*///// Normalize the instance by setting the complete path for the instance and// executing the instance filter to set the qualifiers, classorigin, and// property list in accordance with the input.  Note that this can only remove// characteristics, except for the path completion, so that it expects// instances with qualifiers, class origin, and a complete set of properties// already present in the instance.//void normalizeInstance(CIMInstance& instance, const CIMObjectPath& path,                       Boolean includeQualifiers, Boolean includeClassOrigin,                       const CIMPropertyList& propertyList);//// Get one string property from an instance. Note that these functions simply// return the default value if the property cannot be found or is of the wrong// type.// @param instance CIMInstance from which we get property value// @param propertyName String name of the property containing the value// @param default String optional parameter that is substituted if the property// does not exist or is NULL.// @return String value found or defaultValue.//String getPropertyValue(const CIMInstance & instance,    const CIMName & propertyName, const String & defaultValue);//// Overload of getPropertyValue for boolean type//Boolean getPropertyValue(const CIMInstance & instance,    const CIMName & propertyName, const Boolean defaultValue);//// Get Host IP address from host name. If the host name is not provided,// uses internal function. If everything fails, gets the definition normally// used for localhost (127.0.0.1).//// @param hostName String with the name of the host. Allows String:EMPTY and//     in that case, gets it directly from system.// @param namespaceType - Uint32 representing the access protocol for this//     request.  This is exactly the definition in the//     PG_CIMXMLCommunicationMechanism mof for the property//     namespaceAccessProtocol.// @param port String defining the port to be used.  If String::EMPTY, it is//     not valid and the defaultPortNumber is inserted instead.// @param defaultPortNumber Uint32 defining a default port number to be used//     if port string is not provided.//// @return String with the IP address to be used. This must be the complete//     address sufficient to access the IP address. Therefore, it includes the//     port number.//String getHostAddress(const String & hostName, Uint32 namespaceType,    const String & port, Uint32 defaultPortNumber);//// Validate that the property exists, is string type and optionally the value// itself. NOTE: This function processes only String properties.//// @param Instance to search for property.// @param CIMName containing property Name// @param String containing value. If not String::EMPTY, compare to value//     in the property// @return True if passes all tests//Boolean validateRequiredProperty(    const CIMInstance & instance,    const CIMName & propertyName,    const String & value);//// Same as above, overloaded to check key properties in CIMObjectPath objects// against a string value.//Boolean validateRequiredProperty(    const CIMObjectPath & objectPath,    const CIMName & propertyName,    const String & value);//// Verify that this is one of the legal classnames for instance operations and// return an indicator as to which one it is.// @param - Classname// @return - Enum value indicating type// @Exceptions - throws CIMNotSupportedException if invalid class.//TARGET_CLASS translateClassInput(const CIMName& className);//// Same as method above, but used specifically for association classes.//TARGET_CLASS translateAssocClassInput(const CIMName & className);//// Set the value of a property defined by property name in the instance// provided. If the property cannot be found, it simply returns.//// @param instance CIMInstance in which to set property value// @param propertyName CIMName of property in which value will be set.// @param value CIMValue value to set into property//// @return true if property value was set, false if the property was not found//void setPropertyValue(CIMInstance& instance, const CIMName& propertyName,    const CIMValue & value);//// Sets the correct values to the common keys defined for all of the classes.// This is SystemCreationClassName and SystemName. Note that if the properties// do not exist, we simply ignore them.//void setCommonKeys(CIMInstance& instance);//// Retrieves the key binding given by the keyName parameter from the supplied// object path.//String getKeyValue(const CIMObjectPath& instanceName, const CIMName& keyName);//// Retrieves the key binding given by the keyName parameter from the supplied// instance.//String getKeyValue(const CIMInstance& instance, const CIMName& keyName);//// The following method is used to translate a string based on the// Value/ValueMap qualifiers of a property. Note that the method is written// in such a way that the translation could be done in either direction// (from Value value to ValueMap value or vice versa) or with another pair// of qualifiers with a relationship similar to the Value/ValueMap pair.//String translateValue(    const String & value,    const CIMName & propName,    const CIMName & sourceQualifier,    const CIMName & targetQualifier,    const CIMClass & classDef);//// Same as above, but converts an integral value into a string first so that// it can be found when searching the Values qualifier (or some similar// qualifier).//String translateValue(Uint16 value, const CIMName & propName,    const CIMName & sourceQualifier, const CIMName & targetQualifier,    const CIMClass & classDef);//// helper function for building a reference ObjectPath for an instance// of CIM_Dependency.//CIMObjectPath buildDependencyReference(    const String & hostName,    const String & instanceId,    const CIMName & instanceClass);//// helper function for building an instance of CIM_Dependency given// the antecedent and dependent references and the concrete subclass for which// the instance will be created.//CIMInstance buildDependencyInstanceFromPaths(    const CIMObjectPath & antecedent,    const CIMObjectPath & dependent,    const CIMClass & dependencyClass);//// Given an instance of PG_ProviderProfileCapabilities, this method retrieves// the values necessary for constructing instances of PG_RegisteredProfile,// PG_RegisteredSubProfile, and all of their associations.// NOTE: This function is implemented in RegisteredProfile.cpp but declared//       here so that it can be accessed by ElementConformsToProfile.cpp and//       Software.cpp.//String extractProfileInfo(    const CIMInstance & profileCapabilities,    const CIMClass & capabilitiesClass,    const CIMClass & profileClass,    String & name,    String & version,    Uint16 & organization,    String & organizationName,    Array<String> & subprofileNames,    Array<String> & subprofileVersions,    Array<Uint16> & subprofileOrganizations,    Array<String> & subprofileOrganizationNames,    bool noSubProfileInfo = true);PEGASUS_NAMESPACE_END#endif // InteropProviderUtils_h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -