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

Diff for /pegasus/src/Pegasus/ProviderManager2/ProviderAgent/Attic/ProviderAgent.cpp between version 1.4.2.2 and 1.5

version 1.4.2.2, 2005/08/12 22:52:45 version 1.5, 2005/01/29 06:23:52
Line 397 
Line 397 
         ProviderAgentRequest* agentRequest =         ProviderAgentRequest* agentRequest =
             new ProviderAgentRequest(this, request);             new ProviderAgentRequest(this, request);
  
         ThreadStatus rtn = PEGASUS_THREAD_OK;          while (!_threadPool.allocate_and_awaken(
         while ((rtn = _threadPool.allocate_and_awaken(agentRequest,                     agentRequest,
                    ProviderAgent::_processRequestAndWriteResponse)) !=                     ProviderAgent::_processRequestAndWriteResponse))
                PEGASUS_THREAD_OK)  
         {  
             if (rtn == PEGASUS_THREAD_INSUFFICIENT_RESOURCES)  
             {             {
                 pegasus_yield();                 pegasus_yield();
             }             }
             else  
             {  
                 Logger::put(  
                     Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,  
                     "Not enough threads to process agent request.");  
   
                 Tracer::trace(TRC_PROVIDERAGENT, Tracer::LEVEL2,  
                     "Could not allocate thread to process agent request.");  
   
                 AutoPtr<CIMResponseMessage> response(request->buildResponse());  
                 response->cimException = PEGASUS_CIM_EXCEPTION_L(  
                     CIM_ERR_FAILED,  
                     MessageLoaderParms(  
                         "ProviderManager.ProviderAgent.ProviderAgent."  
                             "THREAD_ALLOCATION_FAILED",  
                         "Failed to allocate a thread in cimprovagt \"$0\".",  
                         _agentId));  
   
                 // Return response to CIM Server  
                 _writeResponse(response.get());  
   
                 delete agentRequest;  
                 delete request;  
   
                 break;  
             }  
         }  
     }     }
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
Line 560 
Line 530 
     PEG_METHOD_ENTER(TRC_PROVIDERAGENT, "ProviderAgent::_unloadIdleProviders");     PEG_METHOD_ENTER(TRC_PROVIDERAGENT, "ProviderAgent::_unloadIdleProviders");
  
     // Ensure that only one _unloadIdleProvidersHandler thread runs at a time     // Ensure that only one _unloadIdleProvidersHandler thread runs at a time
     ThreadStatus rtn = PEGASUS_THREAD_OK;  
     _unloadIdleProvidersBusy++;     _unloadIdleProvidersBusy++;
     if ((_unloadIdleProvidersBusy.value() == 1) &&     if ((_unloadIdleProvidersBusy.value() == 1) &&
         ((rtn =_threadPool.allocate_and_awaken(          (_threadPool.allocate_and_awaken(
              (void*)this, ProviderAgent::_unloadIdleProvidersHandler)) ==               (void*)this, ProviderAgent::_unloadIdleProvidersHandler)))
              PEGASUS_THREAD_OK))  
     {     {
         // _unloadIdleProvidersBusy is decremented in         // _unloadIdleProvidersBusy is decremented in
         // _unloadIdleProvidersHandler         // _unloadIdleProvidersHandler
Line 575 
Line 543 
         // If we fail to allocate a thread, don't retry now.         // If we fail to allocate a thread, don't retry now.
         _unloadIdleProvidersBusy--;         _unloadIdleProvidersBusy--;
     }     }
     if (rtn != PEGASUS_THREAD_OK)  
     {  
   
          Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,  
              "Not enough threads to unload idle providers.");  
  
          Tracer::trace(TRC_PROVIDERAGENT, Tracer::LEVEL2,  
              "Could not allocate thread to unload idle providers.");  
     }  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
  


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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2