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