(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.35 and 1.40.2.1

version 1.35, 2005/05/19 05:35:52 version 1.40.2.1, 2006/09/19 18:29:19
Line 1 
Line 1 
 //%2005////////////////////////////////////////////////////////////////////////  //%2006////////////////////////////////////////////////////////////////////////
 // //
 // 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.
Line 8 
Line 8 
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 // EMC Corporation; VERITAS Software Corporation; The Open Group. // EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; Symantec 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 27 
Line 29 
 // //
 //============================================================================== //==============================================================================
 // //
 // Author: Dong Xiang, EMC Corporation (xiang_dong@emc.com)  
 //  
 // Modified By:   Dan Gorey (djgorey@us.ibm.com)  
 //                Amit K Arora, IBM (amita@in.ibm.com) for PEP#183  
 //                Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)  
 //                David Dillard, VERITAS Software Corp.  
 //                    (david.dillard@veritas.com)  
 //                Vijay Eli, IBM (vijay.eli@in.ibm.com) for bug#3425  
 //                Aruran, IBM (ashanmug@in.ibm.com) for Bug# 3604  
 //  
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #include "CIMListener.h" #include "CIMListener.h"
Line 46 
Line 38 
 #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/Common/PegasusVersion.h>
   #include <Pegasus/Common/MessageLoader.h>
  
 #include <Pegasus/ExportServer/CIMExportResponseEncoder.h> #include <Pegasus/ExportServer/CIMExportResponseEncoder.h>
 #include <Pegasus/ExportServer/CIMExportRequestDecoder.h> #include <Pegasus/ExportServer/CIMExportRequestDecoder.h>
Line 153 
Line 146 
 CIMListenerService::~CIMListenerService() CIMListenerService::~CIMListenerService()
 { {
         // if port is alive, clean up the port         // if port is alive, clean up the port
         //if(_sslContext!=NULL)  
         //      delete _sslContext;         //      delete _sslContext;
  
         if(_responseEncoder!=NULL)  
                 delete _responseEncoder;                 delete _responseEncoder;
  
         if(_requestDecoder!=NULL)  
                 delete _requestDecoder;                 delete _requestDecoder;
  
         //if(_dispatcher!=NULL)  
         //      delete _dispatcher;         //      delete _dispatcher;
  
         if(_monitor!=NULL)  
                 delete _monitor;  
   
         if(_acceptor!=NULL)  
                 delete _acceptor;                 delete _acceptor;
   
       delete _monitor;
 } }
  
 void CIMListenerService::init() void CIMListenerService::init()
Line 203 
Line 190 
     { // Bind to the port     { // Bind to the port
       _acceptor->bind();       _acceptor->bind();
  
       PEGASUS_STD(cout) << "Listening on HTTP port " << _portNumber << PEGASUS_STD(endl);  
   
       //listener.addAcceptor(false, portNumberHttp, false);       //listener.addAcceptor(false, portNumberHttp, false);
       Logger::put(Logger::STANDARD_LOG, System::CIMLISTENER, Logger::INFORMATION,       Logger::put(Logger::STANDARD_LOG, System::CIMLISTENER, Logger::INFORMATION,
                         "Listening on HTTP port $0.", _portNumber);                         "Listening on HTTP port $0.", _portNumber);
Line 214 
Line 199 
  
 void CIMListenerService::runForever() void CIMListenerService::runForever()
 { {
   static int modulator = 0;  
   
   if(!_dieNow)   if(!_dieNow)
     {     {
       if(false == _monitor->run(500000))          _monitor->run(500000);
           static struct timeval lastIdleCleanupTime = {0, 0};
           struct timeval now;
           gettimeofday(&now, 0);
           if (now.tv_sec - lastIdleCleanupTime.tv_sec > 300)
         {         {
           modulator++;              lastIdleCleanupTime.tv_sec = now.tv_sec;
       try       try
       {       {
              //MessageQueueService::_check_idle_flag = 1;  
                  //MessageQueueService::_polling_sem.signal();  
                  MessageQueueService::get_thread_pool()->cleanupIdleThreads();                  MessageQueueService::get_thread_pool()->cleanupIdleThreads();
       }       }
           catch(...)           catch(...)
       {       {
                   // Ignore!
       }       }
         }         }
 /*  
       if (handleShutdownSignal)  
       {  
         Tracer::trace(TRC_SERVER, Tracer::LEVEL3,  
         "CIMServer::runForever - signal received.  Shutting down.");  
   
         ShutdownService::getInstance(this)->shutdown(true, 10, false);  
         handleShutdownSignal = false;  
       }  
 */  
     }     }
 } }
  
Line 319 
Line 295 
  
 PEGASUS_THREAD_RETURN PEGASUS_THREAD_CDECL CIMListenerService::_listener_routine(void *param) PEGASUS_THREAD_RETURN PEGASUS_THREAD_CDECL CIMListenerService::_listener_routine(void *param)
 { {
     try {
     AutoPtr<CIMListenerService> svc(reinterpret_cast<CIMListenerService *>(param));     AutoPtr<CIMListenerService> svc(reinterpret_cast<CIMListenerService *>(param));
  
     //svc->init(); bug 1394     //svc->init(); bug 1394
Line 329 
Line 306 
 #endif #endif
         svc->runForever();         svc->runForever();
     }     }
     } catch (...)
     {
           Tracer::trace(TRC_SERVER, Tracer::LEVEL2,
                           "Unknown exception thrown in _listener_routine.");
     }
     return 0;     return 0;
 } }
  
Line 437 
Line 418 
         struct timeval deallocateWait = {15, 0};         struct timeval deallocateWait = {15, 0};
         AutoPtr<ThreadPool> threadPool(new ThreadPool(0, "Listener", 0, 1, deallocateWait));         AutoPtr<ThreadPool> threadPool(new ThreadPool(0, "Listener", 0, 1, deallocateWait));
         AutoPtr<Semaphore> sem(new Semaphore(0));         AutoPtr<Semaphore> sem(new Semaphore(0));
         threadPool->allocate_and_awaken(svc.get(), CIMListenerService::_listener_routine, sem.get());          if (threadPool->allocate_and_awaken(svc.get(), CIMListenerService::_listener_routine, sem.get()) != PEGASUS_THREAD_OK)
           {
               Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
                           "Not enough threads to start CIMListernerService.");
   
               Tracer::trace(TRC_SERVER, Tracer::LEVEL2,
                           "Could not allocate thread for CIMListenerService::_listener_routine.");
               throw Exception(MessageLoaderParms("Listener.CIMListener.CANNOT_ALLOCATE_THREAD",
                                   "Could not allocate thread."));
           }
         Logger::put(Logger::STANDARD_LOG,System::CIMLISTENER, Logger::INFORMATION,         Logger::put(Logger::STANDARD_LOG,System::CIMLISTENER, Logger::INFORMATION,
                         "CIMListener started");                         "CIMListener started");
  
         PEGASUS_STD(cerr) << "CIMlistener started" << PEGASUS_STD(endl);  
   
         _svc = svc.release();         _svc = svc.release();
         _thread_pool = threadPool.release();         _thread_pool = threadPool.release();
         _listener_sem = sem.release();         _listener_sem = sem.release();


Legend:
Removed from v.1.35  
changed lines
  Added in v.1.40.2.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2