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 "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
00052 enum AlarmSystemType {
00053 NOT_YET_INITIALIZED,
00054 CERN_AS,
00055 ACS_AS
00056 };
00057
00069 class ACSAlarmSystemInterfaceFactory
00070
00071
00072 {
00073 private:
00074
00075
00076
00077 static void *dllHandle;
00078
00079
00080
00081 static acsalarm::AlarmSystemInterface* m_sourceSingleton_p;
00082
00083
00084 static AlarmSystemType m_AlarmSystemType;
00085
00086
00087 static maci::Manager_ptr m_manager;
00088
00089
00090 static AlarmSystemInterfaceFactory * m_AlarmSystemInterfaceFactory_p;
00091
00092
00093 static ACE_Recursive_Thread_Mutex main_mutex;
00094
00096 ACSAlarmSystemInterfaceFactory();
00097 ACSAlarmSystemInterfaceFactory(const ACSAlarmSystemInterfaceFactory&);
00098 ACSAlarmSystemInterfaceFactory operator=(const ACSAlarmSystemInterfaceFactory&);
00099 ~ACSAlarmSystemInterfaceFactory();
00100
00101 static void cleanUpAlarmSystemInterfacePtr();
00102 static void cleanUpSourceSingleton();
00103 static void cleanUpDLL();
00104 static void cleanUpManagerReference();
00105 static void initImplementationType(maci::Manager_ptr manager);
00106 static bool initDLL();
00107
00113 static acsalarm::AlarmSystemInterface* getSourceSingleton();
00114
00115 public:
00116
00117 static maci::Manager_ptr getManager();
00118
00126 static bool init(maci::Manager_ptr manager) throw (acsErrTypeAlarmSourceFactory::ErrorLoadingCERNDLLExImpl);
00127
00134 static AlarmSystemType usingACSAlarmSystem() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00135
00140 static void done();
00141
00148 static acsalarm::AlarmSystemInterface* createSource(std::string sourceName) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00149
00155 static acsalarm::AlarmSystemInterface* createSource() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00156
00164 static std::auto_ptr<acsalarm::FaultState>createFaultState(std::string family, std::string member, int code) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00165
00170 static std::auto_ptr<acsalarm::FaultState>createFaultState() throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00171
00181 static void createAndSendAlarm(std::string & faultFamily, std::string & faultMember, int faultCode, bool active, std::string sourceName = asiConfigurationConstants::ALARM_SOURCE_NAME)
00182 throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00183
00194 static void createAndSendAlarm(std::string & faultFamily, std::string & faultMember, int faultCode, bool active, acsalarm::Properties & faultProperties,
00195 std::string sourceName = asiConfigurationConstants::ALARM_SOURCE_NAME) throw (acsErrTypeAlarmSourceFactory::ACSASFactoryNotInitedExImpl);
00196
00197 };
00198
00199 #endif