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

#include <Delivery.hpp>

Inheritance diagram for anna::comm::Delivery:
Inheritance graph
[legend]
Collaboration diagram for anna::comm::Delivery:
Collaboration graph
[legend]

Public Types

typedef std::vector< Resource * > Resources
 
typedef Resources::iterator iterator
 
typedef Resources::const_iterator const_iterator
 

Public Member Functions

virtual ~Delivery ()
 
const std::string & getName () const
 
void initialize () noexcept(false)
 
bool wasAvailable () const
 
const MillisecondgetRecoveryTime () const
 
void setRecoveryTime (const Millisecond &recoveryTime)
 
virtual bool isAvailable () const
 
Resourceapply () noexcept(false)
 
bool fault (const Resource *resource)
 
bool recover (const Resource *resource)
 
bool contains (const Resource *resource) const
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
int size () const
 
const_iterator end () const
 
virtual std::string asString () const
 
virtual xml::NodeasXML (xml::Node *parent) 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
 

Static Public Member Functions

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

Static Public Attributes

static const Millisecond DefaultRecoveryTime
 

Protected Member Functions

 Delivery (const char *name)
 
void add (Resource *resource) noexcept(false)
 
virtual void do_initialize () noexcept(false)=0
 
virtual Resourcedo_apply () noexcept(false)=0
 
virtual bool do_fault (const Resource *resource)
 
virtual bool do_recover (const Resource *resource)
 
virtual bool do_contains (const Resource *resource) const
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Detailed Description

Clase que modela un algoritmo de reparto de carga.

Member Typedef Documentation

◆ const_iterator

typedef Resources::const_iterator anna::comm::Delivery::const_iterator

◆ iterator

typedef Resources::iterator anna::comm::Delivery::iterator

◆ Resources

Constructor & Destructor Documentation

◆ ~Delivery()

virtual anna::comm::Delivery::~Delivery ( )
inlinevirtual

Destructor.

46 { a_resources.clear(); }

◆ Delivery()

anna::comm::Delivery::Delivery ( const char *  name)
inlineprotected

Constructor.

Parameters
nameNombre logico de este reparto.
184  :
185  a_name(name),
186  a_isAvailable(true),
187  a_recoveryTime(DefaultRecoveryTime),
188  a_timeStamp(0) {;}
static const Millisecond DefaultRecoveryTime
Definition: Delivery.hpp:41

Member Function Documentation

◆ add()

void anna::comm::Delivery::add ( Resource resource)
protectednoexcept

Conecta el recurso remoto recibido como parametro con este reparto.

Parameters
resourceInstancia del recurso que vamos a registrar en este reparto.

◆ apply()

Resource* anna::comm::Delivery::apply ( )
noexcept

Devuelve la instancia del recurso remoto que debemos usar en esta ocasion.

Returns
La instancia del recurso remoto que debemos usar en esta ocasion.
Warning
Antes de invocar a este método la instancia se debe proteger de accesos concurrentes

◆ asString()

virtual std::string anna::comm::Delivery::asString ( ) const
virtual

Devuelve una cadena con la informacion referente a este objeto.

Returns
Una cadena con la informacion referente a este objeto.

Reimplemented in anna::comm::ByRangeDelivery< TKey, TDelivery, TSerializer >, anna::comm::Service, anna::comm::IndexedDelivery, and anna::comm::RoundRobinDelivery.

◆ asXML()

virtual xml::Node* anna::comm::Delivery::asXML ( xml::Node parent) const
virtual

Devuelve un nodo XML con la informacion referente a este objeto.

Parameters
parentNodo XML a partir del cual introducir la informacion.
Returns
Un nodo XML con la informacion referente a este objeto.

Reimplemented in anna::comm::ByRangeDelivery< TKey, TDelivery, TSerializer >, anna::comm::Service, anna::comm::IndexedDelivery, and anna::comm::RoundRobinDelivery.

◆ begin() [1/2]

iterator anna::comm::Delivery::begin ( )
inline

Devuelve un iterador al comienzo de la lista de recursos remotos asociados a este reparto.

Returns
Un iterador al comienzo de la lista de recursos remotos asociados a este reparto.
126 { return a_resources.begin(); }

◆ begin() [2/2]

const_iterator anna::comm::Delivery::begin ( ) const
inline

Devuelve un iterador al comienzo de la lista de recursos remotos asociados a este reparto.

Returns
Un iterador al comienzo de la lista de recursos remotos asociados a este reparto.
132 { return a_resources.begin(); }

◆ contains()

bool anna::comm::Delivery::contains ( const Resource resource) const

Indica si reparto contiene la referencia a un determinado recurso.

Returns
true si contiene la referencia al recurso recibido como parametro o false en otro caso.

◆ do_apply()

virtual Resource* anna::comm::Delivery::do_apply ( )
protectedpure virtualnoexcept

Devuelve la instancia del recurso remoto que debemos que debemos usar en esta ocasion.

Returns
La instancia del recurso remoto que debemos usar en esta ocasion.

◆ do_contains()

virtual bool anna::comm::Delivery::do_contains ( const Resource resource) const
protectedvirtual

Este metodo sirve a nuestra aplicacion para indicar que ha recuperado la conexion con el recurso.

Parameters
resourceRecurso remoto con el que ha recuperado la conexion.

◆ do_fault()

virtual bool anna::comm::Delivery::do_fault ( const Resource resource)
protectedvirtual

Este metodo sirve a nuestra aplicacion para indicar que no fue posible usar el recurso obtenido mediante apply.

Parameters
resourceRecurso remoto que ha ocasionado el error.
Returns
true si ninguno de los recursos asociados a este reparto de carga estan disponibles o false en otro caso.

◆ do_initialize()

virtual void anna::comm::Delivery::do_initialize ( )
protectedpure virtualnoexcept

◆ do_recover()

virtual bool anna::comm::Delivery::do_recover ( const Resource resource)
protectedvirtual

Este metodo sirve a nuestra aplicacion para indicar que ha recuperado la conexion con el recurso.

Parameters
resourceRecurso remoto con el que ha recuperado la conexion.

◆ end() [1/2]

iterator anna::comm::Delivery::end ( )
inline

Devuelve un iterador al final de la lista de recursos remotos asociados a este reparto.

Returns
Un iterador al final de la lista de recursos remotos asociados a este reparto.
138 { return a_resources.end(); }

◆ end() [2/2]

const_iterator anna::comm::Delivery::end ( ) const
inline

Devuelve un iterador al final de la lista de recursos remotos asociados a este reparto.

Returns
Un iterador al final de la lista de recursos remotos asociados a este reparto.
150 { return a_resources.end(); }

◆ fault()

bool anna::comm::Delivery::fault ( const Resource resource)

Este metodo sirve a nuestra aplicacion para notificar que el recurso ha dejado de estar disponible.

Parameters
resourceRecurso remoto en el que hemos detectado el error.
Returns
true si ninguno de los recursos asociados a este reparto de carga estan disponibles o false en otro caso.
Warning
Antes de invocar a este método la instancia se debe proteger de accesos concurrentes

◆ getName()

const std::string& anna::comm::Delivery::getName ( ) const
inline

Devuelve el nombre del reparto. Coincide con el indicado en el constructor.

Returns
el nombre del reparto. Coincide con el indicado en el constructor.
52 { return a_name; }

◆ getRecoveryTime()

const Millisecond& anna::comm::Delivery::getRecoveryTime ( ) const
inline
73 { return a_recoveryTime; }

◆ initialize()

void anna::comm::Delivery::initialize ( )
noexcept

Inicializa el reparto de recursos.

◆ isAvailable()

virtual bool anna::comm::Delivery::isAvailable ( ) const
virtual

Comprueba la lista de recursos remotos para comprobar si hay alguno que este disponible (ver Resource::isAvailable) y no este deshabilitado (ver Resource::disable).

Returns
true si tiene algun recurso remoto utilizado o false en otro caso.

◆ recover()

bool anna::comm::Delivery::recover ( const Resource resource)

Este metodo sirve a nuestra aplicacion para que el recurso vuelve a estar disponible.

Parameters
resourceRecurso remoto que hemos recuperado.
Returns
true si alguno de los recursos asociados a este reparto de carga pasa a estar disponible o false en otro caso.
Warning
Antes de invocar a este método la instancia se debe proteger de accesos concurrentes

◆ resource() [1/2]

static Resource* anna::comm::Delivery::resource ( iterator ii)
inlinestatic

Devuelve el recurso remoto apuntado por el iterador recibido como parametro.

Parameters
iiIterador usado para recorrer los recursos asociados a este reparto.
Returns
El recurso remoto apuntado por el iterador recibido como parametro.
170 { return *ii; }

◆ resource() [2/2]

static const Resource* anna::comm::Delivery::resource ( const_iterator ii)
inlinestatic

Devuelve el recurso remoto apuntado por el iterador recibido como parametro.

Parameters
iiIterador usado para recorrer los recursos asociados a este reparto.
Returns
El recurso remoto apuntado por el iterador recibido como parametro.
177 { return *ii; }

◆ setRecoveryTime()

void anna::comm::Delivery::setRecoveryTime ( const Millisecond recoveryTime)
inline

Establece el periodo de comprobacion de recuperacion de los recusos que han sido desactivados debido a que se han detectado problemas internos.

Parameters
recoveryTimePeriodo de comprobacion de recuperacion.
81 { a_recoveryTime = recoveryTime; }

◆ size()

int anna::comm::Delivery::size ( ) const
inline

Devuelve el numero de recursos asociados a la lista.

Returns
El numero de recursos asociados a la lista.
144 { return a_resources.size(); }

◆ wasAvailable()

bool anna::comm::Delivery::wasAvailable ( ) const
inline

Devuelve el estado anterior que tenia esta instancia. El resultado de isAvailable puede ser distinto a este metodo ya que a diferencia de este se basa en el estado actual de los procesos asociados a este servicio, mientras que este metodo devuelve el estado en el que estaban la ultima vez que se hizo una comprobacion.

65 { return a_isAvailable; }

Member Data Documentation

◆ DefaultRecoveryTime

const Millisecond anna::comm::Delivery::DefaultRecoveryTime
static

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