(file) Return to ProviderAdapter.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager / Attic

Diff for /pegasus/src/Pegasus/ProviderManager/Attic/ProviderAdapter.cpp between version 1.6 and 1.7

version 1.6, 2002/09/16 22:21:39 version 1.7, 2003/05/19 15:01:21
Line 23 
Line 23 
 // //
 // Author: Markus Mueller (sedgewick_de@yahoo.de) // Author: Markus Mueller (sedgewick_de@yahoo.de)
 // //
 // Modified By:  // Modified By: Adrian Schuur - schuur@de.ibm.com
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 38 
Line 38 
 #include <Pegasus/Provider/CIMOMHandle.h> #include <Pegasus/Provider/CIMOMHandle.h>
 #include "ProviderAdapter.h" #include "ProviderAdapter.h"
 #include <Pegasus/Config/ConfigManager.h> #include <Pegasus/Config/ConfigManager.h>
 #define PROVIDERADAPTER_DEBUG(X)  //X  
  
   #define PROVIDERADAPTER_DEBUG(X) X
   
   PEGASUS_USING_STD;
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
Line 51 
Line 53 
 // //
  
 ProviderAdapter::ProviderAdapter(const String & adapterName, ProviderAdapter::ProviderAdapter(const String & adapterName,
                                  const String & providerName,                                   const String & providerLocation,
                                  const String & className) :                                   const String & providerName) :
     _adapterName(adapterName), _providerName(providerName),      _adapterName(adapterName), _providerLocation(providerLocation),
     _className(className)      _providerName(providerName)
 { {
 PROVIDERADAPTER_DEBUG( cerr << "ProviderAdapter::ProviderAdapter\n"; )  PROVIDERADAPTER_DEBUG( cerr << "ProviderAdapter::ProviderAdapter "<<
        _adapterName<<" "<<_providerLocation<<"\n"; )
 } }
  
 ProviderAdapter::~ProviderAdapter() ProviderAdapter::~ProviderAdapter()
Line 66 
Line 69 
 } }
  
 const String & ProviderAdapter::getAdapterName() const {return _adapterName;} const String & ProviderAdapter::getAdapterName() const {return _adapterName;}
 const String & ProviderAdapter::getProviderName() const {return _providerName;}  const String & ProviderAdapter::getProviderName() const {return _providerLocation;}
 CIMProvider * ProviderAdapter::getProvider(void) const {return _adapter;} CIMProvider * ProviderAdapter::getProvider(void) const {return _adapter;}
  
 // //
Line 104 
Line 107 
 ProviderAdapter * ProviderAdapterManager::addAdapter( ProviderAdapter * ProviderAdapterManager::addAdapter(
                                  const String & adapterName,                                  const String & adapterName,
                                  const String & adapterFileName,                                  const String & adapterFileName,
                                  const String & providerName,                                   const String & providerLocation,
                                  const String & className)                                   const String & providerName)
 { {
 PROVIDERADAPTER_DEBUG( cerr << "ProviderAdapterManager::addAdapter()\n"; )  PROVIDERADAPTER_DEBUG( cerr << "ProviderAdapterManager::addAdapter(): "
          <<adapterName<<" "<<providerLocation<<" "<<providerName<<"\n"; )
  
    _listMutex.lock(pegasus_thread_self());    _listMutex.lock(pegasus_thread_self());
    ProviderAdapter * pad = NULL;    ProviderAdapter * pad = NULL;
    DynamicLibraryHandle library;     DynamicLibraryHandle adapter;
  
    // lookup adapterName    // lookup adapterName
    Uint32 n = _listOfAdapterNames.size();    Uint32 n = _listOfAdapterNames.size();
  
    if (n == 0)     if (n == 0) {
    {         PROVIDERADAPTER_DEBUG (
        PROVIDERADAPTER_DEBUG (cerr << "No entries -> load adapter\n";)            cerr<<"ProviderAdapterManager::addAdapter(): No entries -> load adapter\n";)
        try {        try {
            library = _loadlibrary(adapterName, adapterFileName);             adapter=loadAdapter(adapterName, adapterFileName);
            pad = _load(library,adapterName, providerName, className);             pad=loadProvider(adapter,adapterName,providerLocation,providerName);
            _listOfAdapterLibs.append(library);             _listOfAdapterLibs.append(adapter);
            _listOfAdapterNames.append(adapterName);            _listOfAdapterNames.append(adapterName);
            _listOfAdapterCounts.append(1);            _listOfAdapterCounts.append(1);
        }        }
Line 137 
Line 141 
    {    {
        if (String::equal(_listOfAdapterNames[i],adapterName))        if (String::equal(_listOfAdapterNames[i],adapterName))
        {        {
            PROVIDERADAPTER_DEBUG( cerr << "Found adapter entry\n";)             PROVIDERADAPTER_DEBUG(
                cerr<<"ProviderAdapterManager::addAdapter(): Found adapter entry\n";)
            _listOfAdapterCounts[i]++;            _listOfAdapterCounts[i]++;
  
            library = _listOfAdapterLibs[i];             adapter=_listOfAdapterLibs[i];
            try {            try {
                pad = _load(library,adapterName, providerName, className);                 pad=loadProvider(adapter,adapterName,providerLocation,providerName);
            }            }
            catch (Exception & e) {            catch (Exception & e) {
                PROVIDERADAPTER_DEBUG (cerr << e.getMessage();)                PROVIDERADAPTER_DEBUG (cerr << e.getMessage();)
Line 153 
Line 158 
        // not found, so we have to load the adapter        // not found, so we have to load the adapter
        if (i==n-1)        if (i==n-1)
        {        {
            PROVIDERADAPTER_DEBUG (cerr << "New entry -> load adapter\n";)             PROVIDERADAPTER_DEBUG (
                 cerr<<"ProviderAdapterManager::addAdapter(): New entry -> load adapter\n";)
            try {            try {
                library = _loadlibrary(adapterName, adapterFileName);                 adapter=loadAdapter(adapterName, adapterFileName);
                pad = _load(library,adapterName, providerName, className);                 pad=loadProvider(adapter,adapterName,providerLocation,providerName);
               _listOfAdapterLibs.append(library);                _listOfAdapterLibs.append(adapter);
               _listOfAdapterNames.append(adapterName);               _listOfAdapterNames.append(adapterName);
               _listOfAdapterCounts.append(1);               _listOfAdapterCounts.append(1);
            }            }
Line 214 
Line 220 
     _listMutex.unlock();     _listMutex.unlock();
 } }
  
 DynamicLibraryHandle ProviderAdapterManager::_loadlibrary(  DynamicLibraryHandle ProviderAdapterManager::loadAdapter(
                                  const String & adapterName,                                  const String & adapterName,
                                  const String & adapterFileName)                                  const String & adapterFileName)
 { {
 #if 0  PROVIDERADAPTER_DEBUG( cerr << "ProviderAdapterManager::loadAdapter(): "<<
     CIMOMHandle my_cimom;                              adapterFileName<<"\n"; )
   
     PROVIDERADAPTER_DEBUG (cerr << "_loadlibrary\n";)  
     String fileName;  
   
     CIMReference ref =  
        String("WBEM_ProviderProtocolAdapter.name=\"")+ adapterName+  
        String("\",CreationClassName=\"\",") +  
        String("SystemCreationClassName=\"\",") +  
        String("SystemName=\"\"");  
     CIMInstance ci;  
   
     try {  
     ci = my_cimom.getInstance(OperationContext(),  
                          String("root/cimv2"),  
                          ref, false,true,true,CIMPropertyList());  
     } catch (Exception & e) {  
         PROVIDERADAPTER_DEBUG (cerr << "getInstance failed :" <<  e.getMessage() << endl;)  
         //  
         // HACK - just during test  
         //          create the class we know to exist  
         //  
         CIMClass cc = my_cimom.getClass(OperationContext(),  
                 String("root/cimv2"),"WBEM_ProviderProtocolAdapter",false,  
                 true, true, CIMPropertyList());  
         ci = CIMInstance("WBEM_ProviderProtocolAdapter");  
         ci.addProperty(CIMProperty("name",CIMValue(adapterName)));  
         ci.addProperty(CIMProperty("SystemCreationClassName",  
                                    CIMValue(String::EMPTY)));  
         ci.addProperty(CIMProperty("CreationClassName",  
                                    CIMValue(String::EMPTY)));  
         ci.addProperty(CIMProperty("SystemName",  
                                    CIMValue(String::EMPTY)));  
 #ifdef PEGASUS_OS_TYPE_WINDOWS  
     fileName = adapterName + String(".dll");  
 #elif defined(PEGASUS_OS_HPUX)  
     fileName = ConfigManager::getHomedPath(ConfigManager::getInstance()->  
                getCurrentValue("providerDir")) + String("/lib") +  
                adapterName + String(".sl");  
 #elif defined(PEGASUS_OS_OS400)  
     fileName = adapterName;  
 #else  
     fileName = ConfigManager::getHomedPath(ConfigManager::getInstance()->  
                getCurrentValue("providerDir")) + String("/lib") +  
                adapterName + String(".so");  
 #endif  
         ci.addProperty(CIMProperty("LibPath",CIMValue(fileName)));  
         my_cimom.createInstance(OperationContext(), String("root/cimv2"), ci);  
     }  
   
     // getProperty "LibPath"  
     CIMProperty cprop = ci.getProperty(ci.findProperty("LibPath"));  
     cprop.getValue().get(fileName);  
   
 PROVIDERADAPTER_DEBUG( cerr << "ProviderAdapterManager::_loadlibrary() " << fileName << endl; )  
   
 #endif  
     // dynamically load the provider library     // dynamically load the provider library
     DynamicLibraryHandle library =     DynamicLibraryHandle library =
             System::loadDynamicLibrary(adapterFileName.getCString());             System::loadDynamicLibrary(adapterFileName.getCString());
Line 283 
Line 233 
     if (library == 0)     if (library == 0)
     {     {
         String errorString =         String errorString =
              "Cannot load library, error: " + System::dynamicLoadError();               "Cannot load providerAdapter, error: " + System::dynamicLoadError();
         throw Exception("AdapterLoadFailure (" +         throw Exception("AdapterLoadFailure (" +
               adapterName + "):" + errorString);               adapterName + "):" + errorString);
     }     }
     return library;     return library;
 } }
  
 ProviderAdapter * ProviderAdapterManager::_load(  ProviderAdapter * ProviderAdapterManager::loadProvider(
                                  const DynamicLibraryHandle & library,                                  const DynamicLibraryHandle & library,
                                  const String & adapterName,                                  const String & adapterName,
                                  const String & providerName,                                   const String & providerLocation,
                                  const String & className)                                   const String & providerName)
 { {
 PROVIDERADAPTER_DEBUG( cerr << "ProviderAdapterManager::_load()\n"; )  PROVIDERADAPTER_DEBUG( cerr << "ProviderAdapterManager::loadProvider(): "<<
                providerLocation<<"\n"; )
  
     // Calling entry point of Provider Adapter     // Calling entry point of Provider Adapter
     ProviderAdapter * (* create_pa)(const String &,      ProviderAdapter*(*create_pa)(const String &,const String &) = 0;
                                     const String &) = 0;  
     create_pa = (ProviderAdapter * (*)(const String &, const String &))     create_pa = (ProviderAdapter * (*)(const String &, const String &))
     System::loadDynamicSymbol(library,"PegasusCreateProviderAdapter");     System::loadDynamicSymbol(library,"PegasusCreateProviderAdapter");
  
     if (create_pa != 0)      if (create_pa!=0) {
     {          ProviderAdapter *pa=create_pa(providerLocation,providerName);
         ProviderAdapter * pa = create_pa(adapterName, providerName);  
         if (pa == 0)         if (pa == 0)
         {         {
             System::unloadDynamicLibrary(library);             System::unloadDynamicLibrary(library);
             String errorString = "entry point returned null.";              String errorString = "entry point returned null\n";
             throw Exception("AdapterLoadFailure (" +             throw Exception("AdapterLoadFailure (" +
                    adapterName + "):" + errorString);                    adapterName + "):" + errorString);
         }         }
Line 319 
Line 269 
         if (dynamic_cast<ProviderAdapter *>(pa) == 0)         if (dynamic_cast<ProviderAdapter *>(pa) == 0)
         {         {
             System::unloadDynamicLibrary(library);             System::unloadDynamicLibrary(library);
             String errorString = "adapter is not a ProviderAdapter.";              String errorString = "adapter is not a ProviderAdapter\n";
             throw Exception("AdapterLoadFailure (" +             throw Exception("AdapterLoadFailure (" +
                    adapterName + "):" + errorString);                    adapterName + "):" + errorString);
         }         }
Line 328 
Line 278 
         if (dynamic_cast<CIMProvider *>(pa) == 0)         if (dynamic_cast<CIMProvider *>(pa) == 0)
         {         {
             System::unloadDynamicLibrary(library);             System::unloadDynamicLibrary(library);
             String errorString = "adapter is not a CIMProvider.";              String errorString = "adapter is not a CIMProvider\n";
             throw Exception("AdapterLoadFailure (" +             throw Exception("AdapterLoadFailure (" +
                    adapterName + "):" + errorString);                    adapterName + "):" + errorString);
         }         }


Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2