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

Diff for /pegasus/src/Server/cimserver.cpp between version 1.62 and 1.69

version 1.62, 2002/06/07 15:17:15 version 1.69, 2002/08/29 00:27:52
Line 83 
Line 83 
  
 #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Config.h>
 #include <Pegasus/Common/Constants.h> #include <Pegasus/Common/Constants.h>
 #include <Pegasus/suballoc/suballoc.h>  
 #include <iostream> #include <iostream>
 #include <cassert> #include <cassert>
 #include <cstdlib> #include <cstdlib>
Line 107 
Line 106 
 #if defined(PEGASUS_OS_TYPE_WINDOWS) #if defined(PEGASUS_OS_TYPE_WINDOWS)
 # include "cimserver_windows.cpp" # include "cimserver_windows.cpp"
 #elif defined(PEGASUS_OS_TYPE_UNIX) #elif defined(PEGASUS_OS_TYPE_UNIX)
   # if defined(PEGASUS_OS_OS400)
   #  include "cimserver_os400.cpp"
   # else
 # include "cimserver_unix.cpp" # include "cimserver_unix.cpp"
   #endif
 #else #else
 # error "Unsupported platform" # error "Unsupported platform"
 #endif #endif
Line 141 
Line 144 
 #endif #endif
  
 static const String PROPERTY_TIMEOUT = "shutdownTimeout"; static const String PROPERTY_TIMEOUT = "shutdownTimeout";
 static const String CIMSERVERSTART_FILE = "/etc/wbem/cimserver_start.conf";  static const String CIMSERVERSTART_FILE = "/etc/opt/wbem/cimserver_start.conf";
  
 ConfigManager*    configManager; ConfigManager*    configManager;
  
Line 213 
Line 216 
     usage.append ("                - sets CIM Server configuration property\n");     usage.append ("                - sets CIM Server configuration property\n");
  
     cout << endl;     cout << endl;
   #if defined(PEGASUS_OS_HPUX)
       cout << PLATFORM_PRODUCT_NAME << " " << PLATFORM_PRODUCT_VERSION << endl;
   #else
     cout << PEGASUS_NAME << PEGASUS_VERSION << endl;     cout << PEGASUS_NAME << PEGASUS_VERSION << endl;
   #endif
     cout << endl;     cout << endl;
     cout << usage << endl;     cout << usage << endl;
 } }
Line 238 
Line 245 
         client.connectLocal();         client.connectLocal();
  
         //         //
         // set client timeout to 2 seconds more than the shutdown timeout          // set client timeout to 2 seconds
         // so that the command client does not timeout before the cimserver  
         // terminates  
         //         //
         client.setTimeOut( (timeoutValue+2)*1000 );          client.setTimeOut(2000);
     }     }
     catch(CIMClientException& e)      catch(Exception& e)
     {     {
         PEGASUS_STD(cerr) << "Unable to connect to CIM Server." << PEGASUS_STD(endl);         PEGASUS_STD(cerr) << "Unable to connect to CIM Server." << PEGASUS_STD(endl);
         PEGASUS_STD(cerr) << "CIM Server may not be running." << PEGASUS_STD(endl);         PEGASUS_STD(cerr) << "CIM Server may not be running." << PEGASUS_STD(endl);
   #ifdef PEGASUS_OS_OS400
           // The server job may still be active but not responding.
           // Kill the job if it exists.
           cimserver_kill();
   #endif
         exit(0);         exit(0);
     }     }
  
Line 283 
Line 293 
             inParams,             inParams,
             outParams);             outParams);
     }     }
     catch(CIMClientCIMException& e)      catch(CIMException& e)
     {     {
         PEGASUS_STD(cerr) << "Failed to shutdown server: ";         PEGASUS_STD(cerr) << "Failed to shutdown server: ";
           if (e.getCode() == CIM_ERR_INVALID_NAMESPACE)
           {
               PEGASUS_STD(cerr) << "The repository may be empty.";
               PEGASUS_STD(cerr) << PEGASUS_STD(endl);
           }
           else
           {
         PEGASUS_STD(cerr) << e.getMessage() << PEGASUS_STD(endl);         PEGASUS_STD(cerr) << e.getMessage() << PEGASUS_STD(endl);
           }
   #ifdef PEGASUS_OS_OS400
           // Kill the server job.
           cimserver_kill();
   #endif
         exit(1);         exit(1);
     }     }
     catch(CIMClientException& e)      catch(Exception& e)
     {     {
         //         //
         // This may mean the CIM Server has been terminated and returns a         // This may mean the CIM Server has been terminated and returns a
Line 299 
Line 321 
         //         //
         // give CIM Server some time to finish up         // give CIM Server some time to finish up
         //         //
           //System::sleep(1);
           //cimserver_kill();
   
           //
           // Check to see if CIMServer is still running.  If CIMServer
           // is still running and the shutdown timeout has not expired,
           // loop and wait one second until either CIM Server is
           // terminated or until timeout expires.  If timeout expires
           // and CIMServer is still running, kill the CIMServer
           // process.
           //
           Uint32 maxWaitTime = timeoutValue - 2;
           Boolean running = isCIMServerRunning();
           while ( running && maxWaitTime > 0 )
           {
         System::sleep(1);         System::sleep(1);
         cimserver_kill();              running = isCIMServerRunning();
               maxWaitTime = maxWaitTime - 1;
     }     }
     catch(Exception& e)  
           if (running)
     {     {
         PEGASUS_STD(cerr) << "Error occurred while stopping the CIM Server: ";              cimserver_kill();
         PEGASUS_STD(cerr) << e.getMessage() << PEGASUS_STD(endl);          }
         exit(1);  
     }     }
       //catch(Exception& e)
       //{
       //    PEGASUS_STD(cerr) << "Error occurred while stopping the CIM Server: ";
       //    PEGASUS_STD(cerr) << e.getMessage() << PEGASUS_STD(endl);
       //    exit(1);
       //}
  
     return;     return;
 } }
Line 329 
Line 373 
     Boolean shutdownOption = false;     Boolean shutdownOption = false;
     Uint32 timeoutValue  = 0;     Uint32 timeoutValue  = 0;
  
   #ifdef PEGASUS_OS_OS400
       // Initialize Pegasus home to the shipped OS/400 directory.
       pegasusHome = OS400_DEFAULT_PEGASUS_HOME;
   #endif
   
     //     //
     // Get environment variables:     // Get environment variables:
     //     //
Line 366 
Line 415 
                 //                 //
                 if (*option == OPTION_VERSION)                 if (*option == OPTION_VERSION)
                 {                 {
   #if defined(PEGASUS_OS_HPUX)
                       cout << PLATFORM_PRODUCT_VERSION << endl;
   #else
                     cout << PEGASUS_VERSION << endl;                     cout << PEGASUS_VERSION << endl;
   #endif
                     exit(0);                     exit(0);
                 }                 }
                 //                 //
Line 377 
Line 430 
                     PrintHelp(argv[0]);                     PrintHelp(argv[0]);
                     exit(0);                     exit(0);
                 }                 }
   #ifndef PEGASUS_OS_HPUX
                 else if (*option == OPTION_HOME)                 else if (*option == OPTION_HOME)
                 {                 {
                     if (i + 1 < argc)                     if (i + 1 < argc)
Line 392 
Line 446 
                     memmove(&argv[i], &argv[i + 2], (argc-i-1) * sizeof(char*));                     memmove(&argv[i], &argv[i + 2], (argc-i-1) * sizeof(char*));
                     argc -= 2;                     argc -= 2;
                 }                 }
   #endif
 #if defined(PEGASUS_OS_HPUX) #if defined(PEGASUS_OS_HPUX)
                 //                 //
                 // Check to see if user asked for the version (-X option):                 // Check to see if user asked for the version (-X option):
Line 504 
Line 559 
         if (String::equal(configManager->getCurrentValue("daemon"), "true"))         if (String::equal(configManager->getCurrentValue("daemon"), "true"))
         {         {
             daemonOption = true;             daemonOption = true;
             // do we need to run as a daemon ?  
             if (daemonOption)  
             {  
                if(-1 == cimserver_fork())  
                   exit(-1);  
             }  
         }         }
  
         //         //
Line 545 
Line 594 
         {         {
             String configTimeout =             String configTimeout =
                 configManager->getCurrentValue("shutdownTimeout");                 configManager->getCurrentValue("shutdownTimeout");
             ArrayDestroyer<char> timeoutCString(configTimeout.allocateCString());              timeoutValue = strtol(configTimeout.getCString(), (char **)0, 10);
             timeoutValue = strtol(timeoutCString.getPointer(), (char **)0, 10);  
  
             shutdownCIMOM(timeoutValue);             shutdownCIMOM(timeoutValue);
  
Line 593 
Line 641 
  
     if (useSSL)     if (useSSL)
     {     {
         char* p = httpsPort.allocateCString();  
         char* end = 0;         char* end = 0;
         Uint32 port = strtol(p, &end, 10);          CString portString = httpsPort.getCString();
           Uint32 port = strtol(portString, &end, 10);
         assert(end != 0 && *end == '\0');         assert(end != 0 && *end == '\0');
         delete [] p;  
  
         //         //
         // Look up the WBEM-HTTPS port number         // Look up the WBEM-HTTPS port number
Line 607 
Line 654 
     }     }
     else     else
     {     {
         char* p = httpPort.allocateCString();  
         char* end = 0;         char* end = 0;
         Uint32 port = strtol(p, &end, 10);          CString portString = httpPort.getCString();
           Uint32 port = strtol(portString, &end, 10);
         assert(end != 0 && *end == '\0');         assert(end != 0 && *end == '\0');
         delete [] p;  
  
         //         //
         // Look up the WBEM-HTTP port number         // Look up the WBEM-HTTP port number
Line 621 
Line 667 
     }     }
  
     // Put out startup up message.     // Put out startup up message.
   #ifndef PEGASUS_OS_HPUX
     cout << PEGASUS_NAME << PEGASUS_VERSION <<     cout << PEGASUS_NAME << PEGASUS_VERSION <<
          " on port " << address << endl;          " on port " << address << endl;
     cout << "Built " << __DATE__ << " " << __TIME__ << endl;     cout << "Built " << __DATE__ << " " << __TIME__ << endl;
Line 629 
Line 676 
          << (useSLP ? " SLP reg. " : " No SLP ")          << (useSLP ? " SLP reg. " : " No SLP ")
          << (useSSL ? " Use SSL " : " No SSL ")          << (useSSL ? " Use SSL " : " No SSL ")
         << endl;         << endl;
   #endif
   
       // do we need to run as a daemon ?
       if (daemonOption)
       {
           if(-1 == cimserver_fork())
             exit(-1);
       }
  
   #ifdef PEGASUS_OS_OS400
       // Special server initialization code for OS/400.
       if (cimserver_initialize() != 0)
       {
          // do some logging here!
          exit(-1);
       }
   #endif
  
   #ifdef PEGASUS_OS_HPUX
       umask(S_IWGRP|S_IWOTH);
   #endif
  
     // try loop to bind the address, and run the server     // try loop to bind the address, and run the server
     try     try
Line 640 
Line 706 
         String serviceURL;         String serviceURL;
         serviceURL.assign("service:cim.pegasus://");         serviceURL.assign("service:cim.pegasus://");
         String host_name = slp_get_host_name();         String host_name = slp_get_host_name();
         serviceURL += host_name;          serviceURL.append(host_name);
         serviceURL += ":";          serviceURL.append(":");
         serviceURL += address;          serviceURL.append(address);
         char *url = serviceURL.allocateCString();  
         //      free(host_name);  
 #endif #endif
  
         Monitor monitor(true);         Monitor monitor(true);
Line 653 
Line 717 
         // bind throws an exception if the bind fails         // bind throws an exception if the bind fails
 #ifdef PEGASUS_LOCAL_DOMAIN_SOCKET #ifdef PEGASUS_LOCAL_DOMAIN_SOCKET
         cout << "Binding to domain socket" << endl;         cout << "Binding to domain socket" << endl;
 #else  #elif !defined(PEGASUS_OS_HPUX)
         cout << "Binding to " << address << endl;         cout << "Binding to " << address << endl;
 #endif #endif
  
Line 679 
Line 743 
             fclose(pid_file);             fclose(pid_file);
         }         }
 #endif #endif
   #ifndef PEGASUS_OS_HPUX
         cout << "Started. " << endl;         cout << "Started. " << endl;
   #endif
  
         // Put server started message to the logger         // Put server started message to the logger
   #ifdef PEGASUS_OS_HPUX
           Logger::put(Logger::STANDARD_LOG, "CIMServer", Logger::INFORMATION,
                       "Started $0 version $1 on port $2.",
                       PLATFORM_PRODUCT_NAME, PLATFORM_PRODUCT_VERSION, address);
   #else
         Logger::put(Logger::STANDARD_LOG, "CIMServer", Logger::INFORMATION,         Logger::put(Logger::STANDARD_LOG, "CIMServer", Logger::INFORMATION,
                     "Started $0 version $1 on port $2.",                     "Started $0 version $1 on port $2.",
                     PEGASUS_NAME, PEGASUS_VERSION, address);                     PEGASUS_NAME, PEGASUS_VERSION, address);
   #endif
  
  
         //         //
Line 699 
Line 770 
           {           {
             if(  (time(NULL) - last ) > 60 )             if(  (time(NULL) - last ) > 60 )
             {             {
               if( discovery != NULL && url != NULL )                if( discovery != NULL && serviceURL.size() )
                 discovery->srv_reg_all(url,                  discovery->srv_reg_all(serviceURL.getCString(),
                                        "(namespace=root/cimv2)",                                        "(namespace=root/cimv2)",
                                        "service:cim.pegasus",                                        "service:cim.pegasus",
                                        "DEFAULT",                                        "DEFAULT",


Legend:
Removed from v.1.62  
changed lines
  Added in v.1.69

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2