Go to the documentation of this file.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 <maciS.h>
00042 #include "acsErrTypeAlarmSourceFactory.h"
00043 #include <orbsvcs/CosNotifyChannelAdminS.h>
00044 #include <orbsvcs/CosNotifyCommC.h>
00045 #include "asiConfigurationConstants.h"
00046 #include "ace/Task.h"
00047
00051 enum AlarmSystemType {
00052 NOT_YET_INITIALIZED,
00053 CERN_AS,
00054 ACS_AS
00055 };
00056
00068 class ACSAlarmSystemInterfaceFactory
00069
00070
00071 {
00072 private:
00073
00074
00075
00076 static void *dllHandle;
00077
00078
00079
00080 static acsalarm::AlarmSystemInterface* m_sourceSingleton_p;
00081
00082
00083 static AlarmSystemType m_AlarmSystemType;
00084
00085
00086 static maci::Manager_ptr m_manager;
00087
00088
00089 static AlarmSystemInterfaceFactory * m_AlarmSystemInterfaceFactory_p;
00090
00091
00092 static ACE_Recursive_Thread_Mutex main_mutex;
00093
00095 ACSAlarmSystemInterfaceFactory();
00096 ACSAlarmSystemInterfaceFactory(const ACSAlarmSystemInterfaceFactory&);
00097 ACSAlarmSystemInterfaceFactory operator=(const ACSAlarmSystemInterfaceFactory&);
00098 ~ACSAlarmSystemInterfaceFactory();
00099
00100 static void cleanUpAlarmSystemInterfacePtr();
00101 static void cleanUpSourceSingleton();
00102 static void cleanUpDLL();
00103 static void cleanUpManagerReference();
00104 static void initImplementationType(maci::Manager_ptr manager);
00105 static bool initDLL();
00106
00112 static acsalarm::AlarmSystemInterface* getSourceSingleton();
00113
00114 public:
00115
00116 static maci::Manager_ptr getManager();
00117
00125 static bool init(maci::Manager_ptr manager) throw (acsErrTypeAlarmSourceFactory::ErrorLoadingCERNDLLExImpl);
00126
00133 static AlarmSystemType usingACSAlarmSystem() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00134
00139 static void done();
00140
00147 static acsalarm::AlarmSystemInterface* createSource(std::string sourceName) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00148
00154 static acsalarm::AlarmSystemInterface* createSource() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00155
00163 static std::auto_ptr<acsalarm::FaultState>createFaultState(std::string family, std::string member, int code) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00164
00169 static std::auto_ptr<acsalarm::FaultState>createFaultState() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00170
00180 static void createAndSendAlarm(std::string & faultFamily, std::string & faultMember, int faultCode, bool active, std::string sourceName = asiConfigurationConstants::ALARM_SOURCE_NAME)
00181 throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00182
00193 static void createAndSendAlarm(std::string & faultFamily, std::string & faultMember, int faultCode, bool active, acsalarm::Properties & faultProperties,
00194 std::string sourceName = asiConfigurationConstants::ALARM_SOURCE_NAME) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00195
00196 };
00197
00198 #endif