00001
#ifndef ACS_ALARM_SYSTEM_INTERFACE_FACTORY_H
00002
#define ACS_ALARM_SYSTEM_INTERFACE_FACTORY_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
#ifndef __cplusplus
00034
#error This is a C++ include file and cannot be used from plain C
00035
#endif
00036
00037
#include "AlarmSystemInterfaceFactory.h"
00038
#include "AlarmSystemInterface.h"
00039
#include "ACSAlarmSystemInterfaceFactory.h"
00040
#include "ACSAlarmSystemInterfaceProxy.h"
00041
#include "utilConstants.h"
00042
#include "maciS.h"
00043
#include "acsErrTypeAlarmSourceFactory.h"
00044
#include <orbsvcs/CosNotifyChannelAdminS.h>
00045
#include <orbsvcs/CosNotifyCommC.h>
00046
#include "asiConfigurationConstants.h"
00047
#include "ace/Task.h"
00048
00060 class ACSAlarmSystemInterfaceFactory
00061
00062
00063 {
00064
private:
00065
00066
00067
00068 static void *
dllHandle;
00069
00070
00071 static std::auto_ptr<acsalarm::AlarmSystemInterface>
sharedSource;
00072
00073
00074
00075
00076 static bool*
m_useACSAlarmSystem;
00077
00078
00079 static maci::Manager_ptr
m_manager;
00080
00081
00082 static AlarmSystemInterfaceFactory *
m_AlarmSystemInterfaceFactory_p;
00083
00084
00085 static ACE_Recursive_Thread_Mutex
main_mutex;
00086
00088
ACSAlarmSystemInterfaceFactory();
00089
ACSAlarmSystemInterfaceFactory(
const ACSAlarmSystemInterfaceFactory&);
00090
ACSAlarmSystemInterfaceFactory operator=(
const ACSAlarmSystemInterfaceFactory&);
00091
~ACSAlarmSystemInterfaceFactory();
00092
00093
static void cleanUpAlarmSystemInterfacePtr();
00094
static void cleanUpSharedSource();
00095
static void cleanUpDLL();
00096
static void cleanUpBooleanPtr();
00097
static void cleanUpManagerReference();
00098
static void initImplementationType(maci::Manager_ptr manager);
00099
static bool initDLL();
00100
00101
public:
00102
00103
static maci::Manager_ptr
getManager();
00104
00112
static bool init(maci::Manager_ptr manager)
throw (acsErrTypeAlarmSourceFactory::ErrorLoadingCERNDLLExImpl);
00113
00120
static bool usingACSAlarmSystem() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00121
00126 static
void done();
00127
00134 static std::auto_ptr<acsalarm::AlarmSystemInterface> createSource(std::string sourceName) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00135
00141 static std::auto_ptr<acsalarm::AlarmSystemInterface> createSource() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00142
00150 static std::auto_ptr<acsalarm::FaultState>createFaultState(std::string family, std::string member,
int code) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00151
00156 static std::auto_ptr<acsalarm::FaultState>createFaultState() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00157
00167 static
void createAndSendAlarm(std::string & faultFamily, std::string & faultMember,
int faultCode,
bool active, std::string sourceName = asiConfigurationConstants::ALARM_SOURCE_NAME)
00168 throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00169
00180 static
void createAndSendAlarm(std::string & faultFamily, std::string & faultMember,
int faultCode,
bool active, acsalarm::Properties & faultProperties,
00181 std::string sourceName = asiConfigurationConstants::ALARM_SOURCE_NAME) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00182
00183 };
00184
00185 #endif