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

Diff for /pegasus/src/Pegasus/ProviderManager2/Attic/BasicProviderManagerRouter.cpp between version 1.3 and 1.5

version 1.3, 2004/05/26 17:24:47 version 1.5, 2004/06/04 02:23:58
Line 184 
Line 184 
     CIMInstance providerModule;     CIMInstance providerModule;
  
     if ((dynamic_cast<CIMOperationRequestMessage*>(request) != 0) ||     if ((dynamic_cast<CIMOperationRequestMessage*>(request) != 0) ||
         (request->getType() == CIM_EXPORT_INDICATION_REQUEST_MESSAGE))          (request->getType() == CIM_EXPORT_INDICATION_REQUEST_MESSAGE) ||
           (request->getType() == CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE))
     {     {
         // Provider information is in OperationContext         // Provider information is in OperationContext
         ProviderIdContainer pidc = (ProviderIdContainer)         ProviderIdContainer pidc = (ProviderIdContainer)
Line 216 
Line 217 
     {     {
         // This operation is not provider-specific         // This operation is not provider-specific
     }     }
     else if (dynamic_cast<CIMInitializeProviderRequestMessage*>(request) != 0)  
     {  
         // Provider information is in CIMInitializeProviderRequestMessage  
         CIMInitializeProviderRequestMessage* initReq =  
             dynamic_cast<CIMInitializeProviderRequestMessage*>(request);  
         providerModule = initReq->providerModule;  
     }  
     else     else
     {     {
         // Error: Unrecognized message type.         // Error: Unrecognized message type.
Line 243 
Line 237 
     if (request->getType() == CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE)     if (request->getType() == CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE)
     {     {
         // Send CIMStopAllProvidersRequestMessage to all ProviderManagers         // Send CIMStopAllProvidersRequestMessage to all ProviderManagers
           ReadLock tableLock(_providerManagerTableLock);
         for (Uint32 i = 0, n = _providerManagerTable.size(); i < n; i++)         for (Uint32 i = 0, n = _providerManagerTable.size(); i < n; i++)
         {         {
             ProviderManagerContainer* pmc=_providerManagerTable[i];             ProviderManagerContainer* pmc=_providerManagerTable[i];
Line 356 
Line 351 
     return 0;     return 0;
 } }
  
 void BasicProviderManagerRouter::unload_idle_providers(void)  Boolean BasicProviderManagerRouter::hasActiveProviders()
 { {
     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,     PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
         "BasicProviderManagerRouter::unload_idle_providers");          "BasicProviderManagerRouter::hasActiveProviders");
  
       ReadLock tableLock(_providerManagerTableLock);
     for(Uint32 i = 0, n = _providerManagerTable.size(); i < n; i++)     for(Uint32 i = 0, n = _providerManagerTable.size(); i < n; i++)
     {     {
         ProviderManagerContainer* pmc = _providerManagerTable[i];         ProviderManagerContainer* pmc = _providerManagerTable[i];
         pmc->getProviderManager()->unload_idle_providers();          if (pmc->getProviderManager()->hasActiveProviders())
           {
               PEG_METHOD_EXIT();
               return true;
           }
       }
   
       PEG_METHOD_EXIT();
       return false;
   }
   
   void BasicProviderManagerRouter::unloadIdleProviders()
   {
       PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
           "BasicProviderManagerRouter::unloadIdleProviders");
   
       //
       // Save pointers to the ProviderManagerContainers so we don't hold the
       // _providerManagerTableLock while unloading idle providers
       //
       Array<ProviderManagerContainer*> pmcs;
       {
           ReadLock tableLock(_providerManagerTableLock);
           for(Uint32 i = 0, n = _providerManagerTable.size(); i < n; i++)
           {
               pmcs.append(_providerManagerTable[i]);
           }
       }
   
       //
       // Unload idle providers in each of the active ProviderManagers
       // _providerManagerTableLock while unloading idle providers
       //
       for (Uint32 i = 0; i < pmcs.size(); i++)
       {
           pmcs[i]->getProviderManager()->unloadIdleProviders();
     }     }
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();


Legend:
Removed from v.1.3  
changed lines
  Added in v.1.5

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2