(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.48 and 1.54.4.1

version 1.48, 2007/06/26 20:26:17 version 1.54.4.1, 2008/07/01 15:18:32
Line 116 
Line 116 
 private: private:
     Uint32 _portNumber;     Uint32 _portNumber;
     SSLContext *_sslContext;     SSLContext *_sslContext;
       ReadWriteSem _sslContextObjectLock;
     Monitor *_monitor;     Monitor *_monitor;
     Mutex _monitorMutex;     Mutex _monitorMutex;
 #ifdef PEGASUS_ENABLE_IPV6  
     HTTPAcceptor *_ip6Acceptor;     HTTPAcceptor *_ip6Acceptor;
 #endif  
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     HTTPAcceptor *_ip4Acceptor;     HTTPAcceptor *_ip4Acceptor;
 #endif  
     Boolean _dieNow;     Boolean _dieNow;
     CIMListenerIndicationDispatcher *_dispatcher;     CIMListenerIndicationDispatcher *_dispatcher;
     CIMExportResponseEncoder *_responseEncoder;     CIMExportResponseEncoder *_responseEncoder;
Line 137 
Line 134 
     _portNumber(portNumber),     _portNumber(portNumber),
     _sslContext(sslContext),     _sslContext(sslContext),
     _monitor(NULL),     _monitor(NULL),
 #ifdef PEGASUS_ENABLE_IPV6  
     _ip6Acceptor(NULL),     _ip6Acceptor(NULL),
 #endif  
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     _ip4Acceptor(NULL),     _ip4Acceptor(NULL),
 #endif  
     _dieNow(false),     _dieNow(false),
     _dispatcher(NULL),     _dispatcher(NULL),
     _responseEncoder(NULL),     _responseEncoder(NULL),
Line 154 
Line 147 
     _portNumber(svc._portNumber),     _portNumber(svc._portNumber),
     _sslContext(svc._sslContext),     _sslContext(svc._sslContext),
     _monitor(NULL),     _monitor(NULL),
 #ifdef PEGASUS_ENABLE_IPV6  
     _ip6Acceptor(NULL),     _ip6Acceptor(NULL),
 #endif  
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     _ip4Acceptor(NULL),     _ip4Acceptor(NULL),
 #endif  
     _dieNow(svc._dieNow),     _dieNow(svc._dieNow),
     _dispatcher(NULL),     _dispatcher(NULL),
     _responseEncoder(NULL),     _responseEncoder(NULL),
Line 171 
Line 160 
 { {
     delete _responseEncoder;     delete _responseEncoder;
     delete _requestDecoder;     delete _requestDecoder;
 #ifdef PEGASUS_ENABLE_IPV6  
     delete _ip6Acceptor;     delete _ip6Acceptor;
 #endif  
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     delete _ip4Acceptor;     delete _ip4Acceptor;
 #endif  
     delete _monitor;     delete _monitor;
 } }
  
Line 198 
Line 183 
             _dispatcher, _responseEncoder->getQueueId());             _dispatcher, _responseEncoder->getQueueId());
     }     }
 #ifdef PEGASUS_ENABLE_IPV6 #ifdef PEGASUS_ENABLE_IPV6
       if (System::isIPv6StackActive())
       {
     if (NULL == _ip6Acceptor)     if (NULL == _ip6Acceptor)
     {     {
               if (NULL == _sslContext)
               {
                   _ip6Acceptor = new HTTPAcceptor(
                           _monitor, _requestDecoder,
                           HTTPAcceptor::IPV6_CONNECTION,
                           _portNumber, 0, 0);
               }
               else
               {
         _ip6Acceptor = new HTTPAcceptor(         _ip6Acceptor = new HTTPAcceptor(
             _monitor, _requestDecoder, HTTPAcceptor::IPV6_CONNECTION,                          _monitor, _requestDecoder,
             _portNumber, _sslContext, false);                          HTTPAcceptor::IPV6_CONNECTION,
                           _portNumber, _sslContext, &_sslContextObjectLock);
               }
           }
     }     }
   #ifndef PEGASUS_OS_TYPE_WINDOWS
       else
   #endif
 #endif #endif
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     if (NULL == _ip4Acceptor)     if (NULL == _ip4Acceptor)
     {     {
           if (NULL == _sslContext)
           {
         _ip4Acceptor = new HTTPAcceptor(         _ip4Acceptor = new HTTPAcceptor(
             _monitor, _requestDecoder, HTTPAcceptor::IPV4_CONNECTION,                      _monitor, _requestDecoder,
             _portNumber, _sslContext, false);                      HTTPAcceptor::IPV4_CONNECTION,
                       _portNumber, 0, 0);
           }
           else
           {
               _ip4Acceptor = new HTTPAcceptor(
                       _monitor, _requestDecoder,
                       HTTPAcceptor::IPV4_CONNECTION,
                       _portNumber, _sslContext, &_sslContextObjectLock);
           }
     }     }
 #endif  
     bind();     bind();
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
Line 220 
Line 231 
  
 void CIMListenerService::bind() void CIMListenerService::bind()
 { {
 #ifdef PEGASUS_ENABLE_IPV6  
     if (_ip6Acceptor != NULL)     if (_ip6Acceptor != NULL)
     {     {
         _ip6Acceptor->bind();         _ip6Acceptor->bind();
Line 232 
Line 242 
             "IPV6, Listening on HTTP port $0.",             "IPV6, Listening on HTTP port $0.",
             _portNumber);             _portNumber);
     }     }
 #endif  
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     if (_ip4Acceptor != NULL)     if (_ip4Acceptor != NULL)
     {     {
         _ip4Acceptor->bind();         _ip4Acceptor->bind();
Line 245 
Line 253 
             "IPV4, Listening on HTTP for port $0.",             "IPV4, Listening on HTTP for port $0.",
             _portNumber);             _portNumber);
     }     }
 #endif  
 } }
  
 void CIMListenerService::runForever() void CIMListenerService::runForever()
Line 291 
Line 298 
 void CIMListenerService::resume() void CIMListenerService::resume()
 { {
     PEG_METHOD_ENTER(TRC_LISTENER, "CIMListenerService::resume()");     PEG_METHOD_ENTER(TRC_LISTENER, "CIMListenerService::resume()");
 #ifdef PEGASUS_ENABLE_IPV6  
     if (_ip6Acceptor != NULL)     if (_ip6Acceptor != NULL)
     {     {
         _ip6Acceptor->reopenConnectionSocket();         _ip6Acceptor->reopenConnectionSocket();
     }     }
 #endif  
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     if (_ip4Acceptor != NULL)     if (_ip4Acceptor != NULL)
     {     {
         _ip4Acceptor->reopenConnectionSocket();         _ip4Acceptor->reopenConnectionSocket();
     }     }
 #endif  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
  
Line 314 
Line 317 
  
     // tell Monitor to stop listening for client connections     // tell Monitor to stop listening for client connections
     _monitor->stopListeningForConnections(true);     _monitor->stopListeningForConnections(true);
 #ifdef PEGASUS_ENABLE_IPV6  
     if (_ip6Acceptor != NULL)     if (_ip6Acceptor != NULL)
     {     {
         _ip6Acceptor->closeConnectionSocket();         _ip6Acceptor->closeConnectionSocket();
     }     }
 #endif  
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     if (_ip4Acceptor != NULL)     if (_ip4Acceptor != NULL)
     {     {
         _ip4Acceptor->closeConnectionSocket();         _ip4Acceptor->closeConnectionSocket();
     }     }
 #endif  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
  
 Uint32 CIMListenerService::getOutstandingRequestCount() Uint32 CIMListenerService::getOutstandingRequestCount()
 { {
     Uint32 cnt = 0;     Uint32 cnt = 0;
 #ifdef PEGASUS_ENABLE_IPV6  
       if (_ip6Acceptor)
       {
     cnt = _ip6Acceptor->getOutstandingRequestCount();     cnt = _ip6Acceptor->getOutstandingRequestCount();
 #endif      }
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
       if (_ip4Acceptor)
       {
     cnt += _ip4Acceptor->getOutstandingRequestCount();     cnt += _ip4Acceptor->getOutstandingRequestCount();
 #endif      }
  
     return cnt;     return cnt;
 } }
Line 358 
Line 361 
 { {
     Uint32 portNumber = _portNumber;     Uint32 portNumber = _portNumber;
  
 #ifdef PEGASUS_ENABLE_IPV6  
     if ((portNumber == 0) && (_ip6Acceptor != 0))     if ((portNumber == 0) && (_ip6Acceptor != 0))
     {     {
         portNumber = _ip6Acceptor->getPortNumber();         portNumber = _ip6Acceptor->getPortNumber();
     }     }
 #endif      else if ((portNumber == 0) && (_ip4Acceptor != 0))
   
 #if !defined (PEGASUS_ENABLE_IPV6) || defined (PEGASUS_OS_TYPE_WINDOWS)  
     if ((portNumber == 0) && (_ip4Acceptor != 0))  
     {     {
         portNumber = _ip4Acceptor->getPortNumber();         portNumber = _ip4Acceptor->getPortNumber();
     }     }
 #endif  
  
     return (portNumber);     return (portNumber);
 } }
Line 393 
Line 391 
     }     }
     catch(...)     catch(...)
     {     {
         PEG_TRACE_CSTRING(TRC_SERVER, Tracer::LEVEL2,          PEG_TRACE_CSTRING(TRC_SERVER, Tracer::LEVEL1,
                       "Unknown exception thrown in _listener_routine.");                       "Unknown exception thrown in _listener_routine.");
     }     }
  
Line 462 
Line 460 
  
 CIMListenerRep::~CIMListenerRep() CIMListenerRep::~CIMListenerRep()
 { {
     // if port is alive, clean up the port      stop();
     if (_thread_pool != 0)  
     {  
         // Block incoming export requests and unbind the port  
         _svc->stopClientConnection();  
   
         // Wait until pending export requests in the server are done.  
         waitForPendingRequests(10);  
   
         // Shutdown the CIMListenerService  
         _svc->shutdown();  
     }  
  
     delete _sslContext;     delete _sslContext;
     delete _dispatcher;     delete _dispatcher;
Line 526 
Line 513 
             svc.get(), CIMListenerService::_listener_routine, sem.get())             svc.get(), CIMListenerService::_listener_routine, sem.get())
             != PEGASUS_THREAD_OK)             != PEGASUS_THREAD_OK)
         {         {
             Logger::put(  
                 Logger::STANDARD_LOG, System::CIMLISTENER,  
                 Logger::TRACE,  
                 "Not enough threads to start CIMListernerService.");  
   
             PEG_TRACE_CSTRING(             PEG_TRACE_CSTRING(
                 TRC_SERVER,                 TRC_SERVER,
                 Tracer::LEVEL2,                  Tracer::LEVEL1,
                 "Could not allocate thread for "                 "Could not allocate thread for "
                 "CIMListenerService::_listener_routine.");                 "CIMListenerService::_listener_routine.");
             throw             throw


Legend:
Removed from v.1.48  
changed lines
  Added in v.1.54.4.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2