ANNA Suite
2020b
Multipurpose development suite for Telco applications
|
#include <ByRangeDelivery.hpp>
Classes | |
struct | Range |
Public Types | |
typedef std::vector< Range * > | range_container |
typedef range_container::iterator | range_iterator |
typedef range_container::const_iterator | const_range_iterator |
![]() | |
typedef std::vector< Resource * > | Resources |
typedef Resources::iterator | iterator |
typedef Resources::const_iterator | const_iterator |
Public Member Functions | |
ByRangeDelivery (const char *name, const bool isCritical) | |
virtual | ~ByRangeDelivery () |
range_iterator | createRange (const TKey &bottom, const TKey &top) noexcept(false) |
void | attach (range_iterator &ii, Server *server) noexcept(false) |
void | prepare (const TKey &key) noexcept(false) |
std::string | asString () const |
xml::Node * | asXML (xml::Node *parent) const |
![]() | |
Service (const char *name, const bool isCritical) | |
bool | isCritical () const |
void | attach (Server *server) noexcept(false) |
comm::Server * | send (Message &message) noexcept(false) |
comm::Server * | send (Message *message) noexcept(false) |
int | broadcast (Message &message) |
int | broadcast (Message *message) |
std::string | asString () const |
xml::Node * | asXML (xml::Node *parent) const |
![]() | |
virtual | ~Delivery () |
const std::string & | getName () const |
void | initialize () noexcept(false) |
bool | wasAvailable () const |
const Millisecond & | getRecoveryTime () const |
void | setRecoveryTime (const Millisecond &recoveryTime) |
virtual bool | isAvailable () const |
Resource * | apply () 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 |
![]() | |
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 const char * | className () |
![]() | |
static Server * | server (iterator &ii) |
static const Server * | server (const_iterator &ii) |
![]() | |
static Resource * | resource (iterator &ii) |
static const Resource * | resource (const_iterator &ii) |
Protected Member Functions | |
range_iterator | range_begin () |
range_iterator | range_end () |
const_range_iterator | range_begin () const |
const_range_iterator | range_end () const |
virtual void | do_initialize () noexcept(false) |
![]() | |
Delivery (const char *name) | |
void | add (Resource *resource) noexcept(false) |
virtual bool | do_contains (const Resource *resource) const |
![]() | |
Safe () | |
Static Protected Member Functions | |
static Range * | range (range_iterator &ii) |
static const Range * | range (const_range_iterator &ii) |
Additional Inherited Members | |
![]() | |
static const Millisecond | DefaultRecoveryTime |
Servicio de reparto de carga permite selecionar el servidor al que enviar la peticion en base al valor de una clave previamente indicada.
A diferencia de los comm::Service habituales la asociacion entre el servicio y el proceso no debe hacerse mediante comm::Service::attach, sino mediante comm::ByRangeDelivery::attach.
TKey | Tipo de clave usada para indexar los servicios de reparto. |
TDelivery | Tipo de reparto usado en cada rango. |
TSerializer | Clase que es capaz de convertir la TKey en una cadena. Debe implementar un metodo asString que recibe una instancia de TKey y devuelva una cadena. |
La clase Delivery debe implementar los mismos metodos que un comm::Service.
typedef range_container::const_iterator anna::comm::ByRangeDelivery< TKey, TDelivery, TSerializer >::const_range_iterator |
typedef std::vector<Range*> anna::comm::ByRangeDelivery< TKey, TDelivery, TSerializer >::range_container |
typedef range_container::iterator anna::comm::ByRangeDelivery< TKey, TDelivery, TSerializer >::range_iterator |
|
inline |
Constructor.
name | Nombre logico del servicio de reparto de carga. |
isCritical | Indica las caracteristicas del reparto de carga. Debe valor true si el reparto de carga a crear es critico o false en otro caso. |
|
inlinevirtual |
Destructor.
|
inlinevirtual |
Devuelve una cadena con la informacion referente a este objeto.
Reimplemented from anna::comm::Delivery.
|
inlinevirtual |
Devuelve un nodo XML con la informacion referente a este objeto.
parent | Nodo XML a partir del cual introducir la informacion. |
Reimplemented from anna::comm::Delivery.
|
inlinenoexcept |
Asocia el comm::Server recibido como parametro al rango representado por el iterador recibido.
ii | Iterador de rango al que asociar el servicio. Debe ser resultado de invocar a createRange. |
server | Instancia del comm::Server a incorporar dentro del rango. |
|
inlinestatic |
|
inlinenoexcept |
Instancia un rango de reparto con los parametros definidos como parametros. Una vez que obtengamos el comm::Delivery asociado al rango creado debemos asociar tantos comm::Resource como sea necesario.
bottom | Valor minimo del rango. |
top | Valor maximo del rango. |
|
inlineprotectedvirtualnoexcept |
Inicializa el reparto de recursos.
Implements anna::comm::Delivery.
|
inlinenoexcept |
Establece la clave que se usara para decidir que pareja de maquinas usar para enviar el mensaje.
key | Clave usada para calcular el reparto. |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |