#ifndef _INIT_ERROR_HELLO_WORLD_H #define _INIT_ERROR_HELLO_WORLD_H /******************************************************************************* * ALMA - Atacama Large Millimiter Array * (c) Associated Universities Inc., 2002 * (c) European Southern Observatory, 2002 * Copyright by ESO (in the framework of the ALMA collaboration) * and Cosylab 2002, All rights reserved * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * "@(#) $Id: acsexmplInitErrorHelloWorld.h,v 1.1 2010/10/22 15:07:41 rbourtem Exp $" * * who when what * -------- -------- ---------------------------------------------- * rbourtem 2010-10-22 created */ #ifndef __cplusplus #error This is a C++ include file and cannot be used from plain C #endif ///This example is unique because it is derived from CharacteristicComponent's ///superclass, ACSComponent. #include ///This is the CORBA stub client header for ACSErrTypeCommon.idl where the ///definition of the CORBA exception is found. #include /** * The empty CORBA servant interface, POA_acsexmplHelloWorld::HelloWorld, * is obtained from this header file and is automatically generated from * HelloWorld's Interface Definition File (i.e., acsexmplHelloWorld.idl) * by CORBA. */ #include /** @file acsexmplInitErrorHelloWorldImpl.h */ /** @addtogroup ACSEXMPLTOC */ /*@{ */ /** @addtogroup ACSEXMPLTOCCOMPONENTS */ /*@{ */ /** @defgroup ACSEXMPLHWDOC Init Error Hello World * @{ * @htmlonly

Description

This simple Hello World component within the acsexmpl module provides an example component which is throwing an exception during its initialization. This component can be used to test the behaviour of the maciContainer when a a component throws an exception during the initialization.

What can I gain from this example?

  • an example derived from the ACS::ACSComponent IDL interface.
  • an introduction to the ACS API.
  • limited ACS logging macros.
  • throwing exceptions.


Links

@endhtmlonly * @} */ /** * This class shows how to make an ACS Hello World component. * It provides one synchronous method: displayMessage() which just prints * "Hello World" to the command-line where the container that activated * an instance of this component was started from. badMethod() is a trivial * method showing developers how to raise ACS (i.e., CORBA) exceptions. * This component will throw an exception during its initialization so this component * cannot be activated. * It can be used to test the behaviour of the maciContainer when it has to deploy a component * which got an error during its initialization. * * All components should inherit from CharacteristicComponentImpl or it's * superclass, ACSComponentImpl, to remain compatible with ACS tools such * as objexp (i.e., a GUI used to manipulate components). This class also * derives from POA_acsexmplHelloWorld::HelloWorld which is a class automatically * generated by CORBA from HelloWorld's IDL file. * @version "@(#) $Id: acsexmplInitErrorHelloWorld.h,v 1.1 2010/10/22 15:07:41 rbourtem Exp $" */ class InitErrorHelloWorld: public virtual acscomponent::ACSComponentImpl, //Component superclass public POA_acsexmplHelloWorld::HelloWorld //CORBA servant stub { public: /** * Constructor * @param poa Poa which will activate this and also all other components. Developers need * not be concerned with what a PortableServer does...just pass it to the superclass's * constructor. * @param name component's name. All components have a name associated with them so other * components and clients can access them. */ InitErrorHelloWorld( const ACE_CString& name, maci::ContainerServices * containerServices); /** * Destructor */ virtual ~InitErrorHelloWorld(); /* --------------------- [ CORBA interface ] ----------------------*/ /** * Displays "Hello World" to the console. * Implementation of IDL displayMessage(). * @htmlonly

@endhtmlonly */ virtual void displayMessage (); /** * Simple method raises a remote exception within the calling client. * Implementation of IDL badMethod(). * @throw ACSErrTypeCommon::UnknownEx * @htmlonly

@endhtmlonly */ virtual void badMethod(); /* --------------------- [ Life cycle methods ] -------------------- */ /** * This method in the example will throw an exception. * The goal here is to be able to test the behaviour of ACS * when a component throw an exception during the initialization. * * @return void * @throw ACSErr::ACSbaseExImpl * @htmlonly *

* @endhtmlonly */ virtual void initialize(); }; /*\@}*/ /*\@}*/ #endif /*!_INIT_ERROR_HELLO_WORLD_H*/