[go: up one dir, main page]

Menu

[r1133]: / clp / trunk / src / omcclpc.h  Maximize  Restore  History

Download this file

105 lines (88 with data), 2.9 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
/****************************************************************************
|
| Copyright (c) 2006 Novell, Inc.
| All Rights Reserved.
|
| This program is free software; you can redistribute it and/or
| modify it under the terms of version 2 of the GNU General Public License as
| published by the Free Software Foundation.
|
| This program is distributed in the hope that it will be useful,
| but WITHOUT ANY WARRANTY; without even the implied warranty of
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
| GNU General Public License for more details.
|
| You should have received a copy of the GNU General Public License
| along with this program; if not, contact Novell, Inc.
|
| To contact Novell about this file by physical or electronic mail,
| you may find current contact information at www.novell.com
|
|***************************************************************************
/**
@author Brad Nicholes
*/
#ifndef OMC_OMCCLPC_H_INCLUDE_GUARD_
#define OMC_OMCCLPC_H_INCLUDE_GUARD_
#include "omcclpcommon.h"
#include "omcclpprogram.h"
#include "version.h"
#include <openwbem/OW_Reference.hpp>
#include <openwbem/OW_UnnamedPipe.hpp>
#include <openwbem/OW_Socket.hpp>
#include <openwbem/OW_ThreadBarrier.hpp>
#include <openwbem/OW_Logger.hpp>
#include <openwbem/OW_CerrLogger.hpp>
namespace OMCCLP {
class OMCCLPClient;
typedef Reference<OMCCLPClient> OMCCLPClientRef;
/**
* This class is the main program class. It starts the initializs the readline
* library, opens the configuration files, creates the initial CIMClient object
* and then enters the run() method.
*
*/
class OMCCLPClient
: public OMCCLPProgram
{
public:
/**
* Create a OMCCLPProgram object. This represents the main running
* program.
*/
OMCCLPClient(std::ostream& clpout)
: OMCCLPProgram(clpout)
, m_socket()
, m_logger(new CerrLogger)
, m_running(false)
, m_shuttingDown(false)
, m_threadBarrier(2)
, m_sigPipe(UnnamedPipe::createUnnamedPipe())
{
m_sigPipe->open();
m_sigPipe->setBlocking(UnnamedPipe::E_NONBLOCKING);
}
~OMCCLPClient(){}
int runCommand (String cmd="") {};
int run (String cmdScript="");
void doExit();
void shutdown();
String getServerPrompt();
bool isValidPrompt (String prompt) {prompt.endsWith(PROMPT);}
bool socketConnect();
void createLogger();
bool initializeCLPSession();
bool createCLPSessionInfo(CIMClient *rch);
void destroyCLPSessionInfo() {}
void writePipe (int sig) {m_sigPipe->writeInt(sig);}
static String COMPONENT_NAME;
private:
Socket m_socket;
LoggerRef m_logger;
bool m_running;
bool m_shuttingDown;
ThreadBarrier m_threadBarrier;
UnnamedPipeRef m_sigPipe; // Pipe for recieving shutdown signals
};
}
#endif