(file) Return to CMPILocalProviderManager.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2 / CMPI

Diff for /pegasus/src/Pegasus/ProviderManager2/CMPI/CMPILocalProviderManager.cpp between version 1.42 and 1.42.18.4

version 1.42, 2006/09/29 19:27:32 version 1.42.18.4, 2007/12/19 14:58:31
Line 30 
Line 30 
 //============================================================================== //==============================================================================
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
   // NOCHKSRC
 #include "CMPI_Version.h" #include "CMPI_Version.h"
  
 #include <Pegasus/Common/Constants.h> #include <Pegasus/Common/Constants.h>
Line 50 
Line 50 
  
 extern int _cmpi_trace; extern int _cmpi_trace;
  
 #undef IDLE_LIMIT  
 #define IDLE_LIMIT 50  
   
 /* Thread deletion specific */ /* Thread deletion specific */
 Semaphore CMPILocalProviderManager::_pollingSem(0); Semaphore CMPILocalProviderManager::_pollingSem(0);
 AtomicInt CMPILocalProviderManager::_stopPolling(0); AtomicInt CMPILocalProviderManager::_stopPolling(0);
Line 61 
Line 58 
 Mutex CMPILocalProviderManager::_reaperMutex; Mutex CMPILocalProviderManager::_reaperMutex;
  
   CMPILocalProviderManager::CMPILocalProviderManager (void):   CMPILocalProviderManager::CMPILocalProviderManager (void):
 _idle_timeout (IDLE_LIMIT)  _idle_timeout (PEGASUS_PROVIDER_IDLE_TIMEOUT_SECONDS)
 { {
 } }
  
Line 108 
Line 105 
     case GET_PROVIDER:     case GET_PROVIDER:
       {       {
  
         PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                           "_provider_ctrl::GET_PROVIDER");                           "_provider_ctrl::GET_PROVIDER");
  
         String providerName = *(parms->providerName);         String providerName = *(parms->providerName);
Line 147 
Line 144 
     case UNLOAD_PROVIDER:     case UNLOAD_PROVIDER:
       {       {
  
         PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                           "_provider_ctrl::UNLOAD_PROVIDER");                           "_provider_ctrl::UNLOAD_PROVIDER");
         CMPIProvider *pr = 0;         CMPIProvider *pr = 0;
         pr = _lookupProvider (*(parms->providerName));         pr = _lookupProvider (*(parms->providerName));
Line 175 
Line 172 
     case LOOKUP_PROVIDER:     case LOOKUP_PROVIDER:
       {       {
  
         PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                           "_provider_ctrl::LOOKUP_PROVIDER");                           "_provider_ctrl::LOOKUP_PROVIDER");
  
         AutoMutex lock (_providerTableMutex);         AutoMutex lock (_providerTableMutex);
Line 206 
Line 203 
     case LOOKUP_MODULE:     case LOOKUP_MODULE:
       {       {
  
         PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                           "_provider_ctrl::LOOKUP_MODULE");                           "_provider_ctrl::LOOKUP_MODULE");
  
         AutoMutex lock (_providerTableMutex);         AutoMutex lock (_providerTableMutex);
Line 227 
Line 224 
     case INSERT_PROVIDER:     case INSERT_PROVIDER:
       {       {
  
         PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                           "_provider_ctrl::INSERT_PROVIDER");                           "_provider_ctrl::INSERT_PROVIDER");
  
         AutoMutex lock (_providerTableMutex);         AutoMutex lock (_providerTableMutex);
Line 240 
Line 237 
       }       }
     case INSERT_MODULE:     case INSERT_MODULE:
       {       {
         PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                           "_provider_ctrl::INSERT_MODULE");                           "_provider_ctrl::INSERT_MODULE");
         AutoMutex lock (_providerTableMutex);         AutoMutex lock (_providerTableMutex);
         if (false == _modules.insert (*(parms->fileName),         if (false == _modules.insert (*(parms->fileName),
Line 252 
Line 249 
  
     case UNLOAD_ALL_PROVIDERS:     case UNLOAD_ALL_PROVIDERS:
       {       {
         PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                           "_provider_ctrl::UNLOAD_ALL_PROVIDERS");                           "_provider_ctrl::UNLOAD_ALL_PROVIDERS");
         CMPILocalProviderManager *myself =         CMPILocalProviderManager *myself =
           reinterpret_cast < CMPILocalProviderManager * >(parm);           reinterpret_cast < CMPILocalProviderManager * >(parm);
Line 260 
Line 257 
         // Locked provider mutex.         // Locked provider mutex.
         AutoMutex lock (_providerTableMutex);         AutoMutex lock (_providerTableMutex);
  
         Tracer::trace (TRC_PROVIDERMANAGER, Tracer::LEVEL4,          PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                        "providers in cache = %d", myself->_providers.size ());                         "providers in cache = %d", myself->_providers.size ()));
         ProviderTable::Iterator i = myself->_providers.start ();         ProviderTable::Iterator i = myself->_providers.start ();
         try         try
         {         {
Line 287 
Line 284 
         }         }
         catch (...)         catch (...)
         {         {
           PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,            PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                             "Unexpected Exception in UNLOAD_ALL_PROVIDERS.");                             "Unexpected Exception in UNLOAD_ALL_PROVIDERS.");
         }         }
         break;         break;
       }       }
     case UNLOAD_IDLE_PROVIDERS:     case UNLOAD_IDLE_PROVIDERS:
       {       {
         PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                           "_provider_ctrl::UNLOAD_IDLE_PROVIDERS");                           "_provider_ctrl::UNLOAD_IDLE_PROVIDERS");
         AutoMutex lock (_providerTableMutex);         AutoMutex lock (_providerTableMutex);
  
Line 370 
Line 367 
               // candidates above.               // candidates above.
               for (Uint32 index = 0; index < upaIndex; index++)               for (Uint32 index = 0; index < upaIndex; index++)
                 {                 {
                     CMPIProvider *provider = unloadProviderArray[index];
                   PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,                   PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                                     "Now trying to unload CMPIProvider " +                                     "Now trying to unload CMPIProvider " +
                                     provider->getName ());                                     provider->getName ());
                   CMPIProvider *provider = unloadProviderArray[index];  
   
                   {                   {
                       // lock the provider mutex                       // lock the provider mutex
  
Line 415 
Line 411 
             }             }
             catch (...)             catch (...)
             {             {
               PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,                PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                                 "Unexpected Exception in UNLOAD_IDLE_PROVIDERS.");                                 "Unexpected Exception in UNLOAD_IDLE_PROVIDERS.");
             }             }
             delete [] unloadProviderArray;             delete [] unloadProviderArray;
Line 499 
Line 495 
                         Threads::yield();                         Threads::yield();
                 else                 else
             {             {
                         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, \                          PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, \
                 "Could not allocate thread to take care of deleting user threads. ");                 "Could not allocate thread to take care of deleting user threads. ");
                         delete _reaperThread; _reaperThread = 0;                         delete _reaperThread; _reaperThread = 0;
                         return;                         return;
             }             }
       }       }
     }/*      }
   Tracer::trace(TRC_PROVIDERMANAGER, Tracer::LEVEL2, \  
                         "Cleaning up provider thread (%p) from provider %s.",  
                         t, (const char *)p->getName().getCString());*/  
   // Wake up the reaper.   // Wake up the reaper.
   _pollingSem.signal();   _pollingSem.signal();
  
Line 648 
Line 641 
   try   try
   {   {
     AutoMutex lock (_providerTableMutex);     AutoMutex lock (_providerTableMutex);
     Tracer::trace (TRC_PROVIDERMANAGER, Tracer::LEVEL4,      PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                    "providers in _providers table = %d", _providers.size ());                     "providers in _providers table = %d", _providers.size ()));
  
     // Iterate through the _providers table looking for an active provider     // Iterate through the _providers table looking for an active provider
     for (ProviderTable::Iterator i = _providers.start (); i != 0; i++)     for (ProviderTable::Iterator i = _providers.start (); i != 0; i++)
Line 664 
Line 657 
   catch (...)   catch (...)
   {   {
     // Unexpected exception; do not assume that no providers are loaded     // Unexpected exception; do not assume that no providers are loaded
     PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,      PEG_TRACE_CSTRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
                       "Unexpected Exception in hasActiveProviders.");                       "Unexpected Exception in hasActiveProviders.");
     PEG_METHOD_EXIT ();     PEG_METHOD_EXIT ();
     return true;     return true;
Line 687 
Line 680 
     }     }
     catch (...)     catch (...)
     {     {
         PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,          PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
             "Caught unexpected exception from UNLOAD_IDLE_PROVIDERS.");             "Caught unexpected exception from UNLOAD_IDLE_PROVIDERS.");
     }     }
  
Line 702 
Line 695 
  
   Array < CMPIProvider * >enableProviders;   Array < CMPIProvider * >enableProviders;
  
   Tracer::trace (TRC_PROVIDERMANAGER, Tracer::LEVEL4,    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                  "Number of providers in _providers table = %d",                  "Number of providers in _providers table = %d",
                  _providers.size ());                   _providers.size ()));
  
   try   try
   {   {
Line 740 
Line 733 
   }   }
   catch (...)   catch (...)
   {   {
     PEG_TRACE_STRING (TRC_DISCARDED_DATA, Tracer::LEVEL2,      PEG_TRACE_CSTRING (TRC_DISCARDED_DATA, Tracer::LEVEL2,
                       "Unexpected error in getIndicationProvidersToEnable");                       "Unexpected error in getIndicationProvidersToEnable");
   }   }
  
   Tracer::trace (TRC_PROVIDERMANAGER, Tracer::LEVEL4,    PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4,
                  "Number of indication providers to enable = %d",                  "Number of indication providers to enable = %d",
                  enableProviders.size ());                   enableProviders.size ()));
  
   PEG_METHOD_EXIT ();   PEG_METHOD_EXIT ();
   return enableProviders;   return enableProviders;
Line 842 
Line 835 
      be outside the scope for the AutoMutex for the provider. */      be outside the scope for the AutoMutex for the provider. */
   if (deleteProvider)   if (deleteProvider)
   {   {
       // delete the cimom handle        // Note: The deleting of the cimom handle is being
       delete provider->_cimom_handle;        // moved after the call to unloadModule() based on
       // set provider status to UNINITIALIZED        // a previous fix for bug 3669 and consistency with
       provider->reset ();        // other provider managers. Do not move it back before
         // the call to unloadModule().
  
       // unload provider module       // unload provider module
       if (moduleLoaded)       if (moduleLoaded)
Line 853 
Line 847 
           module->unloadModule();           module->unloadModule();
       }       }
  
         // delete the cimom handle
         delete provider->_cimom_handle;
         // set provider status to UNINITIALIZED
         provider->reset ();
   
       AutoMutex lock (_providerTableMutex);       AutoMutex lock (_providerTableMutex);
       _providers.remove (provider->_name);       _providers.remove (provider->_name);
       delete provider;       delete provider;


Legend:
Removed from v.1.42  
changed lines
  Added in v.1.42.18.4

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2