ANNA Suite  2020b
Multipurpose development suite for Telco applications
Classes | Public Member Functions | Protected Member Functions | Friends | List of all members
anna::app::Component Class Referenceabstract

#include <Component.hpp>

Inheritance diagram for anna::app::Component:
Inheritance graph
[legend]
Collaboration diagram for anna::app::Component:
Collaboration graph
[legend]

Classes

struct  State
 

Public Member Functions

virtual ~Component ()
 
void attach () noexcept(false)
 
virtual std::string asString () const
 
virtual xml::NodeasXML (xml::Node *parent) const
 
- Public Member Functions inherited from anna::Component
const char * getClassName () const
 
- Public Member Functions inherited from anna::Mutex
 Mutex (const Mode::_v mode=Mode::Recursive)
 
virtual ~Mutex ()
 
virtual void lock () noexcept(false)
 
virtual void unlock ()
 
bool trylock () noexcept(false)
 
 operator const pthread_mutex_t * () const
 

Protected Member Functions

 Component (const char *className)
 
State::_v getState () const
 
void addPredecessor (const char *componentName)
 
void initialize () noexcept(false)
 
void stop ()
 
virtual void kill ()
 
- Protected Member Functions inherited from anna::Component
 Component (const char *className)
 
 Component (const Component &other)
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Friends

void Application::startComponents () noexcept(false)
 
void Application::stopComponents () noexcept(false)
 
void Application::attach (Component *) noexcept(false)
 
ApplicationApplication::clone () noexcept(false)
 

Additional Inherited Members

- Protected Attributes inherited from anna::Component
const std::string a_className
 

Detailed Description

Clase de la que heredan los componentes de aplicacion.

Solo deberia haber una instancia de cada uno de los componentes, pero no podemos declararlos como heredados de anna::Singleton porque debemos dar la posiblidad de que el programador re-escriba su comportamiento mediante herencia.

Todos los componentes se arrancan y paran automaticamente desde la aplicacion.

El siguiente ejemplo muestra como obtener la instancia de un componente asociado a nuestra aplicacion:

Clase* objeto = anna::app::functions::component <Clase> (FILE_LOCATION);
..... uso del objeto ....

Si el componente 'Clase' no hubiera sido registrado (instanciado) en nuestra aplicacion el metodo template anna::component lanzara una excepcion.

Constructor & Destructor Documentation

◆ ~Component()

virtual anna::app::Component::~Component ( )
virtual

Destructor.

Reimplemented from anna::Component.

◆ Component()

anna::app::Component::Component ( const char *  className)
explicitprotected

Contructor.

Parameters
classNameNombre lgico asociado a esta clase.

Member Function Documentation

◆ addPredecessor()

void anna::app::Component::addPredecessor ( const char *  componentName)
protected

Indica que el nombre de un componente que debe ser initializa antes que este.

Parameters
componentNameNombre de componente requerido por esta instancia.
Warning
Solo tendra efecto antes de inicializar el componente.

◆ asString()

virtual std::string anna::app::Component::asString ( ) const
virtual

Devuelve una cadena con la informacion mas relevante de esta instancia.

Returns
Una cadena con la informacion mas relevante de esta instancia.

Reimplemented from anna::Component.

Reimplemented in anna::comm::Communicator, anna::diameter::comm::Engine, anna::dbms::Database, and anna::timex::Engine.

◆ asXML()

virtual xml::Node* anna::app::Component::asXML ( xml::Node parent) const
virtual

Devuelve un documento XML con la informacion mas relevante de esta instancia.

Parameters
parentNodo XML del que colgar la informacion referente a esta instancia.
Returns
Un documento XML con la informacion mas relevante de esta instancia.

Reimplemented from anna::Component.

Reimplemented in anna::comm::Communicator, anna::diameter::comm::Engine, anna::ldap::Engine, anna::dbms::Database, and anna::timex::Engine.

◆ attach()

void anna::app::Component::attach ( )
noexcept

Conecta explicitamente este componente con la aplicacion. Sera necesario invocar a este metodo cuando instanciemos un componentes despues de comenzar la ejecucion de nuestra aplicacion y cuando el nuevo componente este completamente listo para su inicializacion.

◆ getState()

State::_v anna::app::Component::getState ( ) const
inlineprotected

Devuelve el estado de este componente.

Returns
el estado de este componente.
88 { return a_state; }

◆ initialize()

void anna::app::Component::initialize ( )
protectednoexcept

metodo que debemos implementar si la clase heredada necesita algn tipo de inicializacin. Este metodo se invocara automaticamente desde anna::Application::start.

◆ kill()

virtual void anna::app::Component::kill ( )
inlineprotectedvirtual

metodo que debemos implementar en la clase heredada para implementar el proceso de parada de esta clase. Se invocara automaticamente desde el nucleo

Este metodo implementa un metodo de parada no controlada.

118 { stop(); }
void stop()
Definition: Component.hpp:110

◆ stop()

void anna::app::Component::stop ( )
inlineprotected

metodo que debemos implementar en la clase heredada para implementar el proceso de parada de esta clase.

Este metodo debe implementar un metodo de parada controlada. Se invocara automaticamente desde el nucleo

110 { a_state = State::Stopped; do_stop(); }
Definition: Component.hpp:76

Friends And Related Function Documentation

◆ Application::attach

void Application::attach ( Component )
friend

◆ Application::clone

◆ Application::startComponents

void Application::startComponents ( )
friend

◆ Application::stopComponents

void Application::stopComponents ( )
friend

The documentation for this class was generated from the following file: