00001 #ifndef acscomponentImpl_H 00002 #define acscomponentImpl_H 00003 00004 /************************************************************************ 00005 * E.S.O. - ACS project 00006 * 00007 * "@(#) $Id: acscomponentImpl.h,v 1.32 2008/10/09 19:01:13 bjeram Exp $" 00008 * 00009 * who when what 00010 * -------- ---------- ------------------------------------------------- 00011 * rcirami 2003/08/28 created 00012 00013 */ 00014 00015 #ifndef __cplusplus 00016 #error This is a C++ include file and cannot be used from plain C 00017 #endif 00018 00019 #include "acsutil.h" 00020 #include "logging.h" 00021 #include "loggingLoggable.h" 00022 00023 #include <acscomponentS.h> 00024 #include <acscomponentC.h> 00025 #include <acsContainerServices.h> 00026 #include <acsErrTypeLifeCycle.h> 00027 #include "lokiSmartPtr.h" 00028 00029 namespace acscomponent { 00030 00036 class ACSComponentImpl : public virtual PortableServer::RefCountServantBase, 00037 public virtual POA_ACS::ACSComponent, 00038 public Logging::Loggable 00039 { 00040 public: 00041 00051 ACSComponentImpl( 00052 const ACE_CString& name, 00053 maci::ContainerServices *containerServices); 00054 00060 virtual ~ACSComponentImpl(); 00061 00072 PortableServer::POA_var getPOA() { return m_containerServices_p->getPOA(); } 00073 00074 /* ------------------ [ ACSComponent interface ] ------------------ */ 00075 00087 virtual char * name (); 00088 00097 virtual ::ACS::ComponentStates componentState (); 00098 00099 /*************** Life Cycle methods ***************/ 00100 00101 00116 virtual void initialize(); 00117 00130 virtual void execute(); 00131 00146 virtual void cleanUp(); 00147 00161 virtual void aboutToAbort(); 00162 00168 virtual void __execute(); 00169 00175 virtual void __aboutToAbort(); 00176 00182 virtual void __cleanUp(); 00183 00190 virtual void __initialize(); 00191 00201 maci::ContainerServices *getContainerServices(); 00202 00203 private: 00204 00207 ACE_CString m_name; 00208 00211 //std::auto_ptr<maci::ContainerServices> m_containerServices_p; 00212 Loki::SmartPtr<maci::ContainerServices> m_containerServices_p; 00213 00214 }; 00215 00216 } // namespace acscomponent 00217 00218 00219 #endif 00220