/****************************************************************************
|
| 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 Jon Carey
*/
#ifndef OMCCLPDENV_HPP_GUARD
#define OMCCLPDENV_HPP_GUARD
#include "config.h"
#include <openwbem/OW_Logger.hpp>
#include <openwbem/OW_IfcsFwd.hpp>
#include <openwbem/OW_Array.hpp>
#include <openwbem/OW_Mutex.hpp>
#include <openwbem/OW_PosixUnnamedPipe.hpp>
#include <openwbem/OW_Reference.hpp>
#include "omcclpdconfig.h"
using namespace OW_NAMESPACE;
class OMCClpdEnv;
typedef IntrusiveReference<OMCClpdEnv> OMCClpdEnvRef;
class OMCClpdServer;
typedef IntrusiveReference<OMCClpdServer> OMCClpdServerRef;
class OMCClpdEnv : public IntrusiveCountableBase
{
public:
OMCClpdEnv();
~OMCClpdEnv();
bool debugOn() const { return m_debugFlag; }
void setDebug(bool debug);
LoggerRef getLogger(const String& componentName) const;
LoggerRef getLogger() const;
void init();
void shutdown();
void startServices();
String getConfigItem(
const String& itemName,
const String& defaultReturnVal="") const;
StringArray getMultiConfigItem(
const String &itemName,
const char* tokenizeSeparator = " \n\r\t\v") const;
void runSelectEngine() const;
UnnamedPipeRef getSigPipe() const { return m_sigPipe; }
void setConfigItem(const String &item, const String &value,
bool overwritePrevious=true);
void addSelectable(const SelectableIFCRef& obj,
const SelectableCallbackIFCRef& cb);
void removeSelectable(const SelectableIFCRef& obj);
static OMCClpdEnvRef& instance();
static String COMPONENT_NAME;
private:
void createLogger();
void clearSelectables();
void loadConfigItemsFromFile(const String& filename);
bool m_isRunning;
bool m_debugFlag;
LoggerRef m_logger;
Array<SelectableIFCRef> m_selectables;
Array<SelectableCallbackIFCRef> m_selectableCallbacks;
mutable Mutex m_selectableGuard;
UnnamedPipeRef m_sigPipe;
OMCClpdServerRef m_clpServer;
};
#endif // OMCCLPDENV_HPP_GUARD