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
00031
00032
00033 #ifndef OW_CMPIPROVIDERIFC_HPP_
00034 #define OW_CMPIPROVIDERIFC_HPP_
00035 #include "OW_config.h"
00036 #include "OW_SharedLibrary.hpp"
00037 #include "OW_ProviderIFCBaseIFC.hpp"
00038 #include "OW_Map.hpp"
00039 #include "OW_MutexLock.hpp"
00040 #include "OW_FTABLERef.hpp"
00041 #include "cmpisrv.h"
00042 #include "cmpidt.h"
00043 #include "cmpift.h"
00044
00045 namespace OW_NAMESPACE
00046 {
00047
00052
00053 class CMPIProviderIFC : public ProviderIFCBaseIFC
00054 {
00055 public:
00056 static const char * const CREATIONFUNC;
00057 CMPIProviderIFC();
00058 ~CMPIProviderIFC();
00059
00060 protected:
00061
00062 virtual const char* getName() const { return "cmpi"; }
00063 virtual void doInit(const ProviderEnvironmentIFCRef& env,
00064 InstanceProviderInfoArray& i,
00065 SecondaryInstanceProviderInfoArray& si,
00066 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00067 AssociatorProviderInfoArray& a,
00068 #endif
00069 MethodProviderInfoArray& m,
00070 IndicationProviderInfoArray& ind);
00071 virtual InstanceProviderIFCRef doGetInstanceProvider(
00072 const ProviderEnvironmentIFCRef& env,
00073 const char* provIdString);
00074 virtual MethodProviderIFCRef doGetMethodProvider(
00075 const ProviderEnvironmentIFCRef& env,
00076 const char* provIdString);
00077 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00078 virtual AssociatorProviderIFCRef doGetAssociatorProvider(
00079 const ProviderEnvironmentIFCRef& env,
00080 const char* provIdString);
00081 #endif
00082 virtual IndicationProviderIFCRef doGetIndicationProvider(
00083 const ProviderEnvironmentIFCRef& env,
00084 const char* provIdString);
00085 virtual IndicationExportProviderIFCRefArray doGetIndicationExportProviders(
00086 const ProviderEnvironmentIFCRef& env
00087 );
00088 virtual PolledProviderIFCRefArray doGetPolledProviders(
00089 const ProviderEnvironmentIFCRef& env
00090 );
00091 virtual void doUnloadProviders(const ProviderEnvironmentIFCRef& env);
00092 private:
00093 typedef Map<String, CMPIFTABLERef> ProviderMap;
00094
00095 typedef Array<CMPIFTABLERef > LoadedProviderArray;
00096 CMPIFTABLERef getProvider(const ProviderEnvironmentIFCRef& env,
00097 const char* provIdString);
00098 void loadNoIdProviders(const ProviderEnvironmentIFCRef& env);
00099 ProviderMap m_provs;
00100 Mutex m_guard;
00101 LoadedProviderArray m_noidProviders;
00102 bool m_loadDone;
00103
00104 MIs miVector;
00105 ::CMPI_Broker _broker;
00106 };
00107 typedef SharedLibraryReference<Reference<CMPIProviderIFC> > CMPIProviderIFCRef;
00108
00109 }
00110
00111 #endif