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

#include <Application.hpp>

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

Public Types

typedef std::vector< Component * >::iterator iterator
 
typedef std::vector< Component * >::const_iterator const_iterator
 
typedef std::vector< pid_t > pid_container
 
typedef pid_container::iterator pid_iterator
 
typedef pid_container::const_iterator const_pid_iterator
 

Public Member Functions

 Application (const char *shortName, const char *title, const char *version, const char *date=NULL, const char *time=NULL)
 
virtual ~Application ()
 
const char * getShortName () const
 
const std::string & getVersion () const
 
const std::string & getTitle () const
 
pid_t getPid () const
 
void activateGeneralPublicLicense ()
 
Applicationclone () noexcept(false)
 
Componentfind (const char *className)
 
void start () noexcept(false)
 
const_iterator begin () const
 
iterator begin ()
 
const_iterator end () const
 
iterator end ()
 
void writeContext (const std::string &file) noexcept(false)
 
virtual void initialize () noexcept(false)
 
virtual bool supportCommunication () const
 
virtual void eventAbnormalTermination (const char *className)
 
virtual xml::NodeasXML (xml::Node *parent) const
 

Static Public Member Functions

static const Componentcomponent (const_iterator &ii)
 
static Componentcomponent (iterator &ii)
 

Protected Member Functions

virtual void run () noexcept(false)=0
 
virtual void signalUSR1 () noexcept(false)
 
virtual void signalUSR2 () noexcept(false)
 
virtual void signalTerminate () noexcept(false)
 
virtual void do_cloneParent () noexcept(false)
 
virtual void do_cloneChild () noexcept(false)
 
pid_iterator pid_begin ()
 
pid_iterator pid_end ()
 
int pid_size () const
 
const_pid_iterator pid_begin () const
 
const_pid_iterator pid_end () const
 

Static Protected Member Functions

static pid_t pid (pid_iterator &ii)
 
static pid_t pid (const_pid_iterator &ii)
 

Static Protected Attributes

static Applicationst_application
 

Friends

class Component
 
struct functions
 

Detailed Description

Application abstraction.

Gather all the information of resources (version, title, command line, threads, etc ...) used by our applications.

Only one single instance could exists for the application, accessed by mean anna::functions::getApp.

Member Typedef Documentation

◆ const_iterator

◆ const_pid_iterator

typedef pid_container::const_iterator anna::app::Application::const_pid_iterator

◆ iterator

◆ pid_container

typedef std::vector<pid_t> anna::app::Application::pid_container

◆ pid_iterator

typedef pid_container::iterator anna::app::Application::pid_iterator

Constructor & Destructor Documentation

◆ Application()

anna::app::Application::Application ( const char *  shortName,
const char *  title,
const char *  version,
const char *  date = NULL,
const char *  time = NULL 
)

Constructor.

Parameters
shortNameInstance logical name.
titleApplication title (appears when the application starts).
versionProgram version (recommended X.YRZZn with X = main version, Y = secondary version, ZZ = delivery number
dateComponent build date. Normally the macro DATE.
timeComponent build time. Normally the macro TIME.

◆ ~Application()

virtual anna::app::Application::~Application ( )
inlinevirtual

Destructor.

57 { a_components.clear(); }

Member Function Documentation

◆ activateGeneralPublicLicense()

void anna::app::Application::activateGeneralPublicLicense ( )
inline

Activa la salida por pantalla del mensaje referente a la licencia GPL 3.0.

Warning
Para que tenga efecto debe ser invocado antes de ejecutar el metodo Application::start.
88 { a_enableGPL = true; }

◆ asXML()

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

Devuelve una cadena con la informacion referente a esta instancia.

Parameters
parentNodo XML del que dependende la informacion.
Returns
Una cadena con la informacion referente a esta instancia.

◆ begin() [1/2]

const_iterator anna::app::Application::begin ( ) const
inline

Devuelve un iterador al primer componente definido en la aplicacion.

Returns
un iterador al primer componente definido en la aplicacion.
121 { return a_components.begin(); }

◆ begin() [2/2]

iterator anna::app::Application::begin ( )
inline

Devuelve un iterador al primer componente definido en la aplicacion.

Returns
un iterador al primer componente definido en la aplicacion.
127 { return a_components.begin(); }

◆ clone()

Application& anna::app::Application::clone ( )
noexcept

Crea un nuevo proceso a partir de este usando el metodo fork.

Estrictamente este metodo retonara dos veces, una en el ambito del proceso que lo invoco y otra en el ambito del nuevo proceso, llamado proceso hijo.

Si la duplicacion se realiza de forma correcta se invoca a los metodos do_cloneChild y do_cloneParent de nuestra aplicacion y Component::do_cloneChild y Component::do_cloneParent de cada uno de los componentes registrados.

Para saber en cual de los procesos

Returns
La instancia de la nueva aplicacion.

◆ component() [1/2]

static const Component* anna::app::Application::component ( const_iterator ii)
inlinestatic

Devuelve el objeto sobre el que esta posicionado el iterator recibido como parametro.

Parameters
iiIterator que deberia estar comprendido entre begin y end.
Returns
El objeto sobre el que esta posicionado el iterator recibido como parametro.
186 { return *ii; }

◆ component() [2/2]

static Component* anna::app::Application::component ( iterator ii)
inlinestatic

Devuelve el objeto sobre el que esta posicionado el iterator recibido como parametro.

Parameters
iiIterator que deberia estar comprendido entre begin y end.
Returns
El objeto sobre el que esta posicionado el iterator recibido como parametro.
193 { return *ii; }

◆ do_cloneChild()

virtual void anna::app::Application::do_cloneChild ( )
inlineprotectedvirtualnoexcept

Metodo que debemos implementar en la clase heredada para tratar el proceso de clonado de esta aplicacion desde el punto de vista del proceso hijo.

Warning
Si se detecta algun error terminara abortara la ejecucion de este proceso.
230 {;}

◆ do_cloneParent()

virtual void anna::app::Application::do_cloneParent ( )
inlineprotectedvirtualnoexcept

Metodo que debemos implementar en la clase heredada para tratar el proceso de clonado de esta aplicacion desde el punto de vista del proceso original.

Warning
Si se detecta algun error terminara abortara la ejecucion del proceso hijo.
223 {;}

◆ end() [1/2]

const_iterator anna::app::Application::end ( ) const
inline

Devuelve un iterador al ultimo componente definido en la aplicacion.

Returns
un iterador al ultimo componente definido en la aplicacion.
133 { return a_components.end(); }

◆ end() [2/2]

iterator anna::app::Application::end ( )
inline

Devuelve un iterador al ultimo componente definido en la aplicacion.

Returns
un iterador al ultimo componente definido en la aplicacion.
139 { return a_components.end(); }

◆ eventAbnormalTermination()

virtual void anna::app::Application::eventAbnormalTermination ( const char *  className)
inlinevirtual

Este m�todo se invocar� cuando alguna capa superior a �sta detecte un problema tan grave como para parar la aplicaci�n de forma s�bita.

Parameters
classNameNombre de la clase que genera el evento.
Warning
En el momento de invocar a este m�todo la aplicaci�n puede estar en un estado no muy estable por lo que se deber�an minizar las operaciones a realizar para evitar bloquear la aplicaci�n.
172 { ; }

◆ find()

Component* anna::app::Application::find ( const char *  className)

Devuelve la instancia del componente que corresponde con el nombre recibido.

Returns
La instancia del componente que corresponde con el nombre recibido. Puede ser NULL si no hay ningun componente asociado a la �ta aplicacion que corresponda con el nombre.

◆ getPid()

pid_t anna::app::Application::getPid ( ) const
inline

Devuelve el pid asignado por el sistema operativo a la aplicacion que estamos ejecutando.

Returns
El pid asignado por el sistema operativo a la aplicacion que estamos ejecutando.
82 { return a_pid; }

◆ getShortName()

const char* anna::app::Application::getShortName ( ) const
inline

Short name given in constructor.

Returns
Short name given in constructor.
64 { return a_shortName; }

◆ getTitle()

const std::string& anna::app::Application::getTitle ( ) const
inline

Devuelve el titulo indicado en el contructor de esta aplicacion.

Returns
el titulo indicado en el contructor de esta aplicacion.
76 { return a_title; }

◆ getVersion()

const std::string& anna::app::Application::getVersion ( ) const
inline

Version given in constructor.

Returns
Version given in constructor.
70 { return a_version; }

◆ initialize()

virtual void anna::app::Application::initialize ( )
inlinevirtualnoexcept

metodo que puede ser reescrito en las clases heredadas de Application y que nos da la posibilidad de inicializar los elementos particulares de nuestra aplicacion. Por defecto no realiza ninguna operacion.

Warning
En el momento de invocar a esta funcin los componentes (
See also
Component) pueden no estar disponibles.
154 {;}

◆ pid() [1/2]

static pid_t anna::app::Application::pid ( pid_iterator ii)
inlinestaticprotected

Devuelve el PID sobre el que esta posicionado el iterator recibido como parametro.

Parameters
iiIterator que deberia estar comprendido entre pid_begin y pid_end.
Returns
El objeto sobre el que esta posicionado el iterator recibido como parametro.
267 { return *ii; }

◆ pid() [2/2]

static pid_t anna::app::Application::pid ( const_pid_iterator ii)
inlinestaticprotected

Devuelve el PID sobre el que esta posicionado el iterator recibido como parametro.

Parameters
iiIterator que deberia estar comprendido entre pid_begin y pid_end.
Returns
El objeto sobre el que esta posicionado el iterator recibido como parametro.
274 { return *ii; }

◆ pid_begin() [1/2]

pid_iterator anna::app::Application::pid_begin ( )
inlineprotected

Devuelve un iterador al primer proceso hijo creado por la aplicacion (ver clone),

Returns
un iterador al primer proceso hijo definido en la aplicacion.
236 { return a_pids.begin(); }

◆ pid_begin() [2/2]

const_pid_iterator anna::app::Application::pid_begin ( ) const
inlineprotected

Devuelve un iterador al primer proceso hijo creado por la aplicacion (ver clone),

Returns
un iterador al primer proceso hijo definido en la aplicacion.
254 { return a_pids.begin(); }

◆ pid_end() [1/2]

pid_iterator anna::app::Application::pid_end ( )
inlineprotected

Devuelve un iterador al final de lista lista de procesos hijos creados por la aplicacion (ver clone).

Returns
un iterador al primer proceso hijo definido en la aplicacion.
242 { return a_pids.end(); }

◆ pid_end() [2/2]

const_pid_iterator anna::app::Application::pid_end ( ) const
inlineprotected

Devuelve un iterador al final de lista lista de procesos hijos creados por la aplicacion (ver clone).

Returns
un iterador al primer proceso hijo definido en la aplicacion.
260 { return a_pids.end(); }

◆ pid_size()

int anna::app::Application::pid_size ( ) const
inlineprotected

Devuelve el numero de procesos hijos.

Returns
el numero de procesos hijos.
248 { return a_pids.size(); }

◆ run()

virtual void anna::app::Application::run ( )
protectedpure virtualnoexcept

metodo que debemos implementar para ejecutar nuestra aplicacion.

◆ signalTerminate()

virtual void anna::app::Application::signalTerminate ( )
inlineprotectedvirtualnoexcept

Metodo manejador que podemos re-escribir para tratar la recepcion de la senhal SIGTERM.

Reimplemented in anna::comm::Application.

216 {;}

◆ signalUSR1()

virtual void anna::app::Application::signalUSR1 ( )
protectedvirtualnoexcept

Handler for SIGUSR1. Application context written by default.

◆ signalUSR2()

virtual void anna::app::Application::signalUSR2 ( )
protectedvirtualnoexcept

Handler for SIGUSR2. Nothing done by default.

◆ start()

void anna::app::Application::start ( )
noexcept

Inicializa los elementos propios de nuestra aplicacio, invoca al metodo initialize e invoca al metodo run.

◆ supportCommunication()

virtual bool anna::app::Application::supportCommunication ( ) const
inlinevirtual

Devuelve si esta aplicacion tiene soporto para comunicaciones entre procesos.

Returns
true si la aplicacion tiene soporta para comunicacion entre proceso o false en otro caso.
161 { return false; }

◆ writeContext()

void anna::app::Application::writeContext ( const std::string &  file)
noexcept

Vuelva un documento XML con el contexto de la aplicacion.

Parameters
fileRuta completa del fichero en el que grabar el contexto de la aplicacion.

Friends And Related Function Documentation

◆ Component

friend class Component
friend

◆ functions

friend struct functions
friend

Member Data Documentation

◆ st_application

Application* anna::app::Application::st_application
staticprotected

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