(file) Return to CIMListener.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Listener

Diff for /pegasus/src/Pegasus/Listener/CIMListener.cpp between version 1.20 and 1.25

version 1.20, 2004/08/03 19:05:08 version 1.25, 2004/10/17 20:39:56
Line 1 
Line 1 
 //%2003////////////////////////////////////////////////////////////////////////  //%2004////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // Company, L. P., IBM Corp., The Open Group, Tivoli Systems.  // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.; // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.;
 // IBM Corp.; EMC Corporation, The Open Group. // IBM Corp.; EMC Corporation, The Open Group.
   // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
   // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 26 
Line 28 
 // Author: Dong Xiang, EMC Corporation (xiang_dong@emc.com) // Author: Dong Xiang, EMC Corporation (xiang_dong@emc.com)
 // //
 // Modified By:   Dan Gorey (djgorey@us.ibm.com) // Modified By:   Dan Gorey (djgorey@us.ibm.com)
   //                Amit K Arora, IBM (amita@in.ibm.com) for PEP#183
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 222 
Line 225 
   if(!_dieNow)   if(!_dieNow)
     {     {
 #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT
       if(false == _monitor->run(100))        if(false == _monitor->run(500000))
         {         {
           modulator++;           modulator++;
           if(!(modulator % 5000) )  
             {  
               try               try
                 {                 {
                   //MessageQueueService::_check_idle_flag = 1;                   //MessageQueueService::_check_idle_flag = 1;
Line 237 
Line 238 
                 {                 {
                 }                 }
             }             }
         }  
 /* /*
       if (handleShutdownSignal)       if (handleShutdownSignal)
       {       {
Line 259 
Line 259 
     PEG_METHOD_ENTER(TRC_LISTENER, "CIMListenerService::shutdown()");     PEG_METHOD_ENTER(TRC_LISTENER, "CIMListenerService::shutdown()");
  
     _dieNow = true;     _dieNow = true;
   #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT
       _monitor->tickle();
   #endif
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
Line 279 
Line 282 
  
     // tell Monitor to stop listening for client connections     // tell Monitor to stop listening for client connections
     #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT     #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT
     _monitor->stopListeningForConnections();      _monitor->stopListeningForConnections(true);
     #else     #else
     _monitor->stop();     _monitor->stop();
     #endif     #endif
Line 294 
Line 297 
     // for the wait here is to make sure that the Monitor entries     // for the wait here is to make sure that the Monitor entries
     // are updated before closing the connection sockets.     // are updated before closing the connection sockets.
     //     //
     pegasus_sleep(150);      // pegasus_sleep(150); Not needed now due to the semaphore in the Monitor
  
     if(_acceptor!=NULL)     if(_acceptor!=NULL)
     _acceptor->closeConnectionSocket();     _acceptor->closeConnectionSocket();
Line 302 
Line 305 
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
  
   Uint32 CIMListenerService::getOutstandingRequestCount()
   {
       return _acceptor->getOutstandingRequestCount();
   }
  
 CIMListenerIndicationDispatcher* CIMListenerService::getIndicationDispatcher() const CIMListenerIndicationDispatcher* CIMListenerService::getIndicationDispatcher() const
 { {
Line 324 
Line 331 
 #endif #endif
     svc->runForever();     svc->runForever();
   }   }
   
   delete svc;   delete svc;
  
   return 0;   return 0;
Line 355 
Line 363 
         Boolean removeConsumer(CIMIndicationConsumer* consumer);         Boolean removeConsumer(CIMIndicationConsumer* consumer);
  
 private: private:
     Boolean waitForPendingRequests(Uint32 shutdownTimeout);
   
         Uint32                  _portNumber;         Uint32                  _portNumber;
         SSLContext* _sslContext;         SSLContext* _sslContext;
  
Line 381 
Line 391 
     // Block incoming export requests and unbind the port     // Block incoming export requests and unbind the port
     _svc->stopClientConnection();     _svc->stopClientConnection();
  
       // Wait until pending export requests in the server are done.
       waitForPendingRequests(10);
   
     // Shutdown the CIMListenerService     // Shutdown the CIMListenerService
     _svc->shutdown();     _svc->shutdown();
   }   }
Line 465 
Line 478 
     // Block incoming export requests and unbind the port     // Block incoming export requests and unbind the port
     _svc->stopClientConnection();     _svc->stopClientConnection();
  
       // Wait until pending export requests in the server are done.
       waitForPendingRequests(10);
   
     // Shutdown the CIMListenerService     // Shutdown the CIMListenerService
     _svc->shutdown();     _svc->shutdown();
  
Line 510 
Line 526 
         return _dispatcher->removeConsumer(consumer);         return _dispatcher->removeConsumer(consumer);
 } }
  
   Boolean CIMListenerRep::waitForPendingRequests(Uint32 shutdownTimeout)
   {
     // Wait for 10 sec max
     Uint32 reqCount;
     Uint32 countDown = shutdownTimeout * 10;
     for (; countDown > 0; countDown--)
     {
       reqCount = _svc->getOutstandingRequestCount();
       if (reqCount > 0)
         pegasus_sleep(100);
       else
         return true;
     }
   
     return false;
   }
   
 ///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
 // CIMListener // CIMListener
 ///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////


Legend:
Removed from v.1.20  
changed lines
  Added in v.1.25

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2