(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.9 and 1.19

version 1.9, 2003/08/16 14:52:27 version 1.19, 2004/05/21 20:57:00
Line 1 
Line 1 
 //%/////////////////////////////////////////////////////////////////////////////  //%2003////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,  // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development
 // 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.;
   // IBM Corp.; EMC 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 23 
Line 25 
 // //
 // Author: Dong Xiang, EMC Corporation (xiang_dong@emc.com) // Author: Dong Xiang, EMC Corporation (xiang_dong@emc.com)
 // //
 // Modified By:  // Modified By:   Dan Gorey (djgorey@us.ibm.com)
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 33 
Line 35 
 #include <Pegasus/Common/SSLContext.h> #include <Pegasus/Common/SSLContext.h>
 #include <Pegasus/Common/Monitor.h> #include <Pegasus/Common/Monitor.h>
 #include <Pegasus/Common/HTTPAcceptor.h> #include <Pegasus/Common/HTTPAcceptor.h>
   #include <Pegasus/Common/PegasusVersion.h>
  
 #include <Pegasus/ExportServer/CIMExportResponseEncoder.h> #include <Pegasus/ExportServer/CIMExportResponseEncoder.h>
 #include <Pegasus/ExportServer/CIMExportRequestDecoder.h> #include <Pegasus/ExportServer/CIMExportRequestDecoder.h>
Line 98 
Line 101 
 private: private:
         Uint32                  _portNumber;         Uint32                  _portNumber;
         SSLContext* _sslContext;         SSLContext* _sslContext;
     #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT
         Monitor*                                _monitor;         Monitor*                                _monitor;
   HTTPAcceptor*   _acceptor;   HTTPAcceptor*   _acceptor;
     #else
           monitor_2*                              _monitor;
     pegasus_acceptor*   _acceptor;
     #endif
   
         Boolean                                 _dieNow;         Boolean                                 _dieNow;
  
   CIMListenerIndicationDispatcher* _dispatcher;   CIMListenerIndicationDispatcher* _dispatcher;
Line 159 
Line 167 
 { {
         PEG_METHOD_ENTER(TRC_LISTENER, "CIMListenerService::init");         PEG_METHOD_ENTER(TRC_LISTENER, "CIMListenerService::init");
  
     #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT
   _monitor = new Monitor(true);   _monitor = new Monitor(true);
     #else
     _monitor = new monitor_2();
     #endif
   
         //_dispatcher = new CIMListenerIndicationDispatcher();         //_dispatcher = new CIMListenerIndicationDispatcher();
  
         _responseEncoder = new CIMExportResponseEncoder();         _responseEncoder = new CIMExportResponseEncoder();
Line 167 
Line 180 
                 _dispatcher,                 _dispatcher,
                 _responseEncoder->getQueueId());                 _responseEncoder->getQueueId());
  
     #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT
         _acceptor = new HTTPAcceptor(         _acceptor = new HTTPAcceptor(
                  _monitor,                  _monitor,
                  _requestDecoder,                  _requestDecoder,
                  false,                  false,
                  _portNumber,                  _portNumber,
                    _sslContext,
                    false);
     #else
     _acceptor = new pegasus_acceptor(_monitor,
                      _requestDecoder,
                      false,
                      _portNumber,
                  _sslContext);                  _sslContext);
     #endif
  
         bind();         bind();
  
Line 198 
Line 220 
  
         if(!_dieNow)         if(!_dieNow)
         {         {
       #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT
                 if(false == _monitor->run(100))                 if(false == _monitor->run(100))
                 {                 {
                         modulator++;                         modulator++;
Line 207 
Line 230 
                                 {                                 {
                                         //MessageQueueService::_check_idle_flag = 1;                                         //MessageQueueService::_check_idle_flag = 1;
                                         //MessageQueueService::_polling_sem.signal();                                         //MessageQueueService::_polling_sem.signal();
                                         _monitor->kill_idle_threads();                                          MessageQueueService::get_thread_pool()->kill_idle_threads();
                                 }                                 }
                                 catch(...)                                 catch(...)
                                 {                                 {
Line 224 
Line 247 
                         handleShutdownSignal = false;                         handleShutdownSignal = false;
                 }                 }
 */ */
      #else
      _monitor->run();
      #endif
         }         }
 } }
  
Line 250 
Line 276 
 { {
     PEG_METHOD_ENTER(TRC_LISTENER, "CIMListenerService::stopClientConnection()");     PEG_METHOD_ENTER(TRC_LISTENER, "CIMListenerService::stopClientConnection()");
  
       // tell Monitor to stop listening for client connections
       #ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT
       _monitor->stopListeningForConnections();
       #else
       _monitor->stop();
       #endif
   
       //
       // Wait 150 milliseconds to allow time for the Monitor to stop
       // listening for client connections.
       //
       // This wait time is the timeout value for the select() call
       // in the Monitor's run() method (currently set to 100
       // milliseconds) plus a delta of 50 milliseconds.  The reason
       // for the wait here is to make sure that the Monitor entries
       // are updated before closing the connection sockets.
       //
       pegasus_sleep(150);
   
     if(_acceptor!=NULL)     if(_acceptor!=NULL)
     _acceptor->closeConnectionSocket();     _acceptor->closeConnectionSocket();
  
Line 270 
Line 315 
 { {
   CIMListenerService *svc = reinterpret_cast<CIMListenerService *>(param);   CIMListenerService *svc = reinterpret_cast<CIMListenerService *>(param);
  
         svc->init();    //    svc->init(); bug 1394
         while(!svc->terminated())         while(!svc->terminated())
         {         {
             #if defined(PEGASUS_PLATFORM_DARWIN_PPC_GNU)
                   pthread_testcancel();
             #endif
           svc->runForever();           svc->runForever();
 } }
         delete svc;         delete svc;
Line 354 
Line 402 
         // spawn a thread to do this         // spawn a thread to do this
         if(_thread_pool==NULL)         if(_thread_pool==NULL)
         {         {
                 _thread_pool = new ThreadPool(0, "Listener", 0, 1,  
                         create_time, destroy_time, deadlock_time);  
   
                 CIMListenerService* svc = new CIMListenerService(_portNumber,_sslContext);                 CIMListenerService* svc = new CIMListenerService(_portNumber,_sslContext);
                   try
                   {
                     // Try to initialize the service (bug 1394)
                 svc->setIndicationDispatcher(_dispatcher);                 svc->setIndicationDispatcher(_dispatcher);
                     svc->init();
                   }
                   catch(...)
                   {
                     // Error. Exit without creating the ThreadPool, so that this listener
                     // is not 'alive'
                     delete svc;
                     throw;
                   }
   
                   _thread_pool = new ThreadPool(0, "Listener", 0, 1,
                           create_time, destroy_time, deadlock_time);
  
                 _thread_pool->allocate_and_awaken(svc,CIMListenerService::_listener_routine);                 _thread_pool->allocate_and_awaken(svc,CIMListenerService::_listener_routine);
  
Line 376 
Line 436 
         { // stop the thread         { // stop the thread
  
                 delete _thread_pool;                 delete _thread_pool;
                   _thread_pool = NULL;
  
                 Logger::put(Logger::STANDARD_LOG,System::CIMLISTENER,                 Logger::put(Logger::STANDARD_LOG,System::CIMLISTENER,
                                                     Logger::INFORMATION,                                                     Logger::INFORMATION,


Legend:
Removed from v.1.9  
changed lines
  Added in v.1.19

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2