version 1.4, 2001/04/24 21:15:49
|
version 1.13, 2001/06/02 02:25:33
|
|
|
//BEGIN_LICENSE |
//%///////////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM | // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM |
// | // |
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
// DEALINGS IN THE SOFTWARE. | // DEALINGS IN THE SOFTWARE. |
// | // |
//END_LICENSE |
//============================================================================== |
//BEGIN_HISTORY |
|
// | // |
// Author: Mike Brasher |
// Author: Mike Brasher (mbrasher@bmc.com) |
// | // |
//END_HISTORY |
// Modified By: |
|
// |
|
//%///////////////////////////////////////////////////////////////////////////// |
| |
#include <iostream> | #include <iostream> |
#include <cstdlib> | #include <cstdlib> |
|
|
#include <Pegasus/Common/Selector.h> | #include <Pegasus/Common/Selector.h> |
#include <Pegasus/Common/OptionManager.h> | #include <Pegasus/Common/OptionManager.h> |
#include <Pegasus/Server/CIMServer.h> | #include <Pegasus/Server/CIMServer.h> |
|
#include <Pegasus/Common/PegasusVersion.h> |
|
#include <Pegasus/Protocol/Handler.h> |
|
#include <Pegasus/Common/Logger.h> |
|
|
|
PEGASUS_USING_PEGASUS; |
|
PEGASUS_USING_STD; |
| |
using namespace Pegasus; |
|
using namespace std; |
|
| |
const char PEGASUS_VERSION[] = "Pegasus CIM Server - Version 0.7"; |
|
| |
void GetEnvironmentVariables( | void GetEnvironmentVariables( |
const char* arg0, | const char* arg0, |
|
|
FileSystem::translateSlashes(pegasusHome); | FileSystem::translateSlashes(pegasusHome); |
} | } |
| |
|
/** GetOptions function - This function defines the Options Table |
|
and sets up the options from that table using the option manager. |
|
*/ |
void GetOptions( | void GetOptions( |
OptionManager& om, | OptionManager& om, |
int& argc, | int& argc, |
|
|
static struct OptionRow options[] = | static struct OptionRow options[] = |
{ | { |
{"port", "8888", false, Option::WHOLE_NUMBER, 0, 0, "port"}, | {"port", "8888", false, Option::WHOLE_NUMBER, 0, 0, "port"}, |
{"trace", "false", false, Option::BOOLEAN, 0, 0, "trace"}, |
{"trace", "false", false, Option::BOOLEAN, 0, 0, "t"}, |
|
{"severity", "ALL", false, Option::STRING, 0, 0, "s"}, |
|
{"logs", "ALL", false, Option::STRING, 0, 0, "L"}, |
|
{"daemon", "false", false, Option::STRING, 0, 0, "d"}, |
{"version", "false", false, Option::BOOLEAN, 0, 0, "v"}, | {"version", "false", false, Option::BOOLEAN, 0, 0, "v"}, |
{"help", "false", false, Option::BOOLEAN, 0, 0, "h"} |
{"help", "false", false, Option::BOOLEAN, 0, 0, "h"}, |
|
{"debug", "false", false, Option::BOOLEAN, 0, 0, "d"} |
}; | }; |
const Uint32 NUM_OPTIONS = sizeof(options) / sizeof(options[0]); | const Uint32 NUM_OPTIONS = sizeof(options) / sizeof(options[0]); |
| |
|
|
om.checkRequiredOptions(); | om.checkRequiredOptions(); |
} | } |
| |
|
/* PrintHelp - This is temporary until we expand the options manager to allow |
|
options help to be defined with the OptionRow entries and presented from |
|
those entries. |
|
*/ |
void PrintHelp(const char* arg0) | void PrintHelp(const char* arg0) |
{ | { |
cout << '\n'; | cout << '\n'; |
cout << PEGASUS_VERSION << endl; |
cout << PEGASUS_NAME << PEGASUS_VERSION << endl; |
cout << '\n'; | cout << '\n'; |
cout << "Usage: " << arg0 << " [-port <port_num> -t -h -v]\n"; | cout << "Usage: " << arg0 << " [-port <port_num> -t -h -v]\n"; |
cout << '\n'; | cout << '\n'; |
|
|
cout << " -port - specifies port number to listen on\n"; | cout << " -port - specifies port number to listen on\n"; |
cout << " -v - prints out the version number\n"; | cout << " -v - prints out the version number\n"; |
cout << " -t - turns on trace mode\n"; | cout << " -t - turns on trace mode\n"; |
|
cout << " -d - turns on debug mode\n"; |
cout << endl; | cout << endl; |
} | } |
| |
|
////////////////////////////////////////////////////////////////////////// |
|
// MAIN |
|
////////////////////////////////////////////////////////////////////////// |
int main(int argc, char** argv) | int main(int argc, char** argv) |
{ | { |
// Get environment variables: | // Get environment variables: |
|
|
exit(0); | exit(0); |
} | } |
| |
|
// Check the trace options and set global variable |
|
Boolean pegasusIOTrace = false; |
|
if (om.valueEquals("trace", "true")) |
|
{ |
|
Handler::sethandlerTrace(true); |
|
pegasusIOTrace = true; |
|
cout << "Trace Set" << endl; |
|
} |
|
|
// Grab the port otpion: | // Grab the port otpion: |
| |
String portOption; | String portOption; |
om.lookupValue("port", portOption); | om.lookupValue("port", portOption); |
| |
|
char* address = portOption.allocateCString(); |
|
|
|
// Put out startup up message. |
|
// Put to cout if not daemon |
|
// ATTN: modify when we add daemon |
|
cout << PEGASUS_NAME << PEGASUS_VERSION << |
|
" on port " << address << endl; |
|
cout << "Built " << __DATE__ << " " << __TIME__ << endl; |
|
cout <<"Started..." |
|
<< (pegasusIOTrace ? " Tracing": " ") << endl; |
|
|
|
// Set up the Logger |
|
Logger::setHomeDirectory("./logs"); |
|
|
|
// Put server start message to the logger |
|
Logger::put(Logger::STANDARD_LOG, "CIMServer", Logger::INFORMATION, |
|
"Start $0 %1 port $2 $3 ", 88, PEGASUS_NAME, PEGASUS_VERSION, |
|
address, (pegasusIOTrace ? " Tracing": " ")); |
|
|
|
// try loop to bind the address, and run the server |
try | try |
{ | { |
Selector selector; | Selector selector; |
CIMServer server(&selector, pegasusHome); | CIMServer server(&selector, pegasusHome); |
| |
char* address = portOption.allocateCString(); |
|
server.bind(address); | server.bind(address); |
delete [] address; | delete [] address; |
server.runForever(); | server.runForever(); |
} | } |
catch(Exception& e) | catch(Exception& e) |
{ | { |
std::cerr << "Error: " << e.getMessage() << std::endl; |
PEGASUS_STD(cerr) << "Error: " << e.getMessage() << PEGASUS_STD(endl); |
} | } |
| |
return 0; | return 0; |