version 1.9, 2005/01/07 22:45:01
|
version 1.14, 2005/04/04 10:52:26
|
|
|
//%2004//////////////////////////////////////////////////////////////////////// |
//%2005//////////////////////////////////////////////////////////////////////// |
// | // |
// 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. |
|
|
// 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.; | // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; |
// 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.; |
|
// 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 |
|
|
// Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) | // Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) |
// Jair Santos, Hewlett-Packard Company (jair.santos@hp.com) | // Jair Santos, Hewlett-Packard Company (jair.santos@hp.com) |
// Dan Gorey, IBM (djgorey@us.ibm.com) | // Dan Gorey, IBM (djgorey@us.ibm.com) |
|
// Mateus Baur, Hewlett-Packard Company (mateus.baur@hp.com) |
|
// Josephine Eskaline Joyce, IBM (jojustin@in.ibm.com) for Bug#2031 |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
|
|
#include <process.h> /* _beginthread, _endthread */ | #include <process.h> /* _beginthread, _endthread */ |
#include <tchar.h> | #include <tchar.h> |
#include <direct.h> | #include <direct.h> |
|
#include <Pegasus/Common/MessageLoader.h> //l10n |
|
#include <Pegasus/Common/Thread.h> // l10n |
| |
#include "service.cpp" | #include "service.cpp" |
| |
|
|
//------------------------------------------------------------------------- | //------------------------------------------------------------------------- |
// GLOBALS | // GLOBALS |
//------------------------------------------------------------------------- | //------------------------------------------------------------------------- |
CIMServer *server_windows; |
static Mutex _cimserverLock; |
|
static CIMServer *server_windows = 0; |
|
static bool _shutdown = false; |
static Service pegasus_service(PEGASUS_SERVICE_NAME); | static Service pegasus_service(PEGASUS_SERVICE_NAME); |
static HANDLE pegasus_service_event; |
static HANDLE pegasus_service_event = NULL; |
static LPCSTR g_cimservice_key = TEXT("SYSTEM\\CurrentControlSet\\Services\\%s"); | static LPCSTR g_cimservice_key = TEXT("SYSTEM\\CurrentControlSet\\Services\\%s"); |
static LPCSTR g_cimservice_home = TEXT("home"); | static LPCSTR g_cimservice_home = TEXT("home"); |
| |
|
|
ConfigManager::setPegasusHome(pegasusHome); | ConfigManager::setPegasusHome(pegasusHome); |
| |
ConfigManager* configManager = ConfigManager::getInstance(); | ConfigManager* configManager = ConfigManager::getInstance(); |
|
configManager->useConfigFiles = true; |
int dummy = 0; | int dummy = 0; |
| |
try | try |
|
|
// try loop to bind the address, and run the server | // try loop to bind the address, and run the server |
try | try |
{ | { |
#ifdef PEGASUS_USE_23HTTPMONITOR_CLIENT |
Monitor monitor; |
Monitor monitor(true); |
|
#else |
|
monitor_2 monitor(); |
|
#endif |
|
| |
CIMServer server(&monitor); | CIMServer server(&monitor); |
server_windows = &server; | server_windows = &server; |
|
|
sprintf(displayname, "%s - %s", PEGASUS_DISPLAY_NAME, service_name); | sprintf(displayname, "%s - %s", PEGASUS_DISPLAY_NAME, service_name); |
} | } |
| |
GetModuleFileName(NULL, filename, sizeof(filename)); |
if(0 != GetModuleFileName(NULL, filename, sizeof(filename))) |
|
{ |
status = pegasus_service.Install(displayname, PEGASUS_DESCRIPTION, filename); | status = pegasus_service.Install(displayname, PEGASUS_DESCRIPTION, filename); |
| |
// Upon success, set home in registry | // Upon success, set home in registry |
|
|
pegasus_homepath[strlen(pegasus_homepath)-1] = '\0'; | pegasus_homepath[strlen(pegasus_homepath)-1] = '\0'; |
_setRegInfo(g_cimservice_home, pegasus_homepath); | _setRegInfo(g_cimservice_home, pegasus_homepath); |
} | } |
|
} |
|
else |
|
{ |
|
status = (Service::ReturnCode) GetLastError(); |
|
} |
| |
return (status == Service::SERVICE_RETURN_SUCCESS) ? true : false; | return (status == Service::SERVICE_RETURN_SUCCESS) ? true : false; |
} | } |
|
|
// Determine the absolute path to the running program | // Determine the absolute path to the running program |
char exe_pathname[_MAX_PATH] = {0}; | char exe_pathname[_MAX_PATH] = {0}; |
char home_pathname[_MAX_PATH] = {0}; | char home_pathname[_MAX_PATH] = {0}; |
GetModuleFileName(NULL, exe_pathname, sizeof(exe_pathname)); |
if(0 != GetModuleFileName(NULL, exe_pathname, sizeof(exe_pathname))) |
|
{ |
| |
// Pegasus home search rules: | // Pegasus home search rules: |
// - look in registry (if set) | // - look in registry (if set) |
|
|
} | } |
} | } |
} | } |
|
} |
| |