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
00072 static acsalarm::AlarmSystemInterface* m_sourceSingleton_p;
00073
00074
00075
00076
00077 static bool* m_useACSAlarmSystem;
00078
00079
00080 static maci::Manager_ptr m_manager;
00081
00082
00083 static AlarmSystemInterfaceFactory * m_AlarmSystemInterfaceFactory_p;
00084
00085
00086 static ACE_Recursive_Thread_Mutex main_mutex;
00087
00089 ACSAlarmSystemInterfaceFactory();
00090 ACSAlarmSystemInterfaceFactory(const ACSAlarmSystemInterfaceFactory&);
00091 ACSAlarmSystemInterfaceFactory operator=(const ACSAlarmSystemInterfaceFactory&);
00092 ~ACSAlarmSystemInterfaceFactory();
00093
00094 static void cleanUpAlarmSystemInterfacePtr();
00095 static void cleanUpSourceSingleton();
00096 static void cleanUpDLL();
00097 static void cleanUpBooleanPtr();
00098 static void cleanUpManagerReference();
00099 static void initImplementationType(maci::Manager_ptr manager);
00100 static bool initDLL();
00101
00107 static acsalarm::AlarmSystemInterface* getSourceSingleton();
00108
00109 public:
00110
00111 static maci::Manager_ptr getManager();
00112
00120 static bool init(maci::Manager_ptr manager) throw (acsErrTypeAlarmSourceFactory::ErrorLoadingCERNDLLExImpl);
00121
00128 static bool usingACSAlarmSystem() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00129
00134 static void done();
00135
00142 static acsalarm::AlarmSystemInterface* createSource(std::string sourceName) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00143
00149 static acsalarm::AlarmSystemInterface* createSource() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00150
00158 static std::auto_ptr<acsalarm::FaultState>createFaultState(std::string family, std::string member, int code) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00159
00164 static std::auto_ptr<acsalarm::FaultState>createFaultState() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00165
00175 static void createAndSendAlarm(std::string & faultFamily, std::string & faultMember, int faultCode, bool active, std::string sourceName = asiConfigurationConstants::ALARM_SOURCE_NAME)
00176 throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00177
00188 static void createAndSendAlarm(std::string & faultFamily, std::string & faultMember, int faultCode, bool active, acsalarm::Properties & faultProperties,
00189 std::string sourceName = asiConfigurationConstants::ALARM_SOURCE_NAME) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00190
00191 };
00192
00193 #endif