Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

ACSAlarmSystemInterfaceFactory.h

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 * ALMA - Atacama Large Millimiter Array
00005 * (c) European Southern Observatory, 2006 
00006 * 
00007 * This library is free software; you can redistribute it and/or
00008 * modify it under the terms of the GNU Lesser General Public
00009 * License as published by the Free Software Foundation; either
00010 * version 2.1 of the License, or (at your option) any later version.
00011 * 
00012 * This library is distributed in the hope that it will be useful,
00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015 * Lesser General Public License for more details.
00016 * 
00017 * You should have received a copy of the GNU Lesser General Public
00018 * License along with this library; if not, write to the Free Software
00019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
00020 *
00021 * "@(#) $Id$"
00022 *
00023 * who       when      what
00024 * --------  --------  ----------------------------------------------
00025 * acaproni  2006-07-12  created
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 
00047 using acsalarm::AlarmSystemInterface;
00048 
00060 class ACSAlarmSystemInterfaceFactory
00061 // TODO: Alessandro, can this class extend AlarmSystemInterfaceFactory? 
00062 // We would need to make static methods non-static to do so...
00063 {
00064         private:
00065 
00066         // used for loading/unloading the DLL which is used to decouple (for build purposes) 
00067         // the logic in ACSLaser/laser-source-cpp
00068         static void *dllHandle;
00069 
00070         // used for the convenience method createAndSendAlarms, so that it need not create a new source
00071         // for each time it is invoked
00072         static auto_ptr<AlarmSystemInterface> sharedSource;
00073 
00074         // It is true if ACS implementation for sources must be used,  and
00075         // false means CERN implementation
00076         // The pointer is null if it has not yet been initialized (this is done by the init method)
00077         static bool* m_useACSAlarmSystem;
00078                 
00079         // The manager
00080         static maci::Manager_ptr m_manager;
00081 
00082         // Pointer to CERN alarm system object; will remain null if we are not using CERN implementation
00083         static AlarmSystemInterfaceFactory * m_AlarmSystemInterfaceFactory_p;
00084 
00086         ACSAlarmSystemInterfaceFactory();
00087         virtual ~ACSAlarmSystemInterfaceFactory();
00088         
00089         public:
00090 
00091         static maci::Manager_ptr getManager() { return m_manager; }
00092 
00098         static bool init(maci::Manager_ptr manager);
00099 
00103         static bool usingACSAlarmSystem();
00104                 
00109         static void done();
00110         
00116         static auto_ptr<AlarmSystemInterface> createSource(string sourceName);
00117                 
00122         static auto_ptr<AlarmSystemInterface> createSource();
00123         
00127         static auto_ptr<acsalarm::FaultState>createFaultState(string family, string member, int code);
00128         
00132         static auto_ptr<acsalarm::FaultState>createFaultState();
00133 
00137         static void createAndSendAlarm(string & faultFamily, string & faultMember, int faultCode, bool active, Properties & faultProperties);
00138 };
00139 
00140 #endif 

Generated on Sun Oct 29 02:26:25 2006 for ACS C++ API by doxygen 1.3.6