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 #ifndef OW_INSTANCEREPOSITORY_HPP_INCLUDE_GUARD_
00031 #define OW_INSTANCEREPOSITORY_HPP_INCLUDE_GUARD_
00032 #include "OW_config.h"
00033 #include "OW_CIMFwd.hpp"
00034 #include "OW_ResultHandlerIFC.hpp"
00035 #include "OW_WBEMFlags.hpp"
00036 #include "OW_ServiceEnvironmentIFC.hpp"
00037 #include "OW_dbDatabase.hpp"
00038
00039 #include <db.h>
00040
00041 namespace OW_NAMESPACE
00042 {
00043
00044 class InstanceRepository2
00045 {
00046 public:
00050 InstanceRepository2(const ServiceEnvironmentIFCRef& env)
00051 {}
00052
00053 ~InstanceRepository2();
00054
00055 void open(::DB_ENV* env, ::DB_TXN* txn);
00056 void close();
00057
00058 void getCIMInstances(
00059 const String& ns,
00060 const String& className,
00061 const CIMClass& requestedClass,
00062 const CIMClass& theClass,
00063 CIMInstanceResultHandlerIFC& result,
00064 WBEMFlags::EDeepFlag deep, WBEMFlags::ELocalOnlyFlag localOnly, WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00065 const StringArray* propertyList=NULL);
00066
00067 void getInstanceNames(const String& ns, const CIMClass& theClass,
00068 CIMObjectPathResultHandlerIFC& result);
00080 CIMInstance getCIMInstance(const String& ns,
00081 const CIMObjectPath& instanceName,
00082 const CIMClass& theClass, WBEMFlags::ELocalOnlyFlag localOnly,
00083 WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00084 const StringArray* propertyList);
00085 #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00086
00095 void deleteInstance(const String& ns, const CIMObjectPath& cop,
00096 const CIMClass& theClass);
00108 void createInstance(const String& ns, const CIMClass& theClass,
00109 const CIMInstance& ci);
00120 void modifyInstance(const String& ns, const CIMObjectPath& cop,
00121 const CIMClass& theClass, const CIMInstance& ci,
00122 const CIMInstance& oldInst,
00123 WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00124 const StringArray* propertyList);
00130 bool classHasInstances(const CIMObjectPath& classPath);
00131 #endif // #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00132
00133 private:
00134 String makeClassKey(const String& ns, const String& className);
00135 String makeInstanceKey(const String& ns, const CIMObjectPath& cop,
00136 const CIMClass& theClass);
00137 #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00138 void _removeDuplicatedQualifiers(CIMInstance& inst, const CIMClass& theClass);
00139 #endif
00140
00141 dbDatabase m_instanceNameLists;
00142 dbDatabase m_instances;
00143 };
00144
00145 }
00146
00147 #endif