ANNA Suite  2020b
Multipurpose development suite for Telco applications
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
anna::comm::Host Class Reference

#include <Host.hpp>

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

Public Types

typedef std::vector< const Device * > device_container
 
typedef device_container::const_iterator const_device_iterator
 
typedef MultiMap< Server, SortBy > server_container
 
typedef server_container::iterator server_iterator
 
typedef server_container::const_iterator const_server_iterator
 

Public Member Functions

virtual ~Host ()
 
const std::string & getName () const
 
ServercreateServer (const char *name, const int remotePort, const bool autoRecovery, TransportFactory *transportFactory=NULL, const bool ignoreIncomingMessages=false, const bool doConnect=true) noexcept(false)
 
ServercreateServer (const std::string &name, const int remotePort, const bool autoRecovery, TransportFactory *transportFactory=NULL, const bool ignoreIncomingMessages=false, const bool doConnect=true) noexcept(false)
 
ServercreateServer (const ServerAllocator &serverAllocator) noexcept(false)
 
server_iterator server_begin ()
 
const_server_iterator server_begin () const
 
server_iterator server_end ()
 
const_server_iterator server_end () const
 
const_device_iterator device_begin () const
 
const_device_iterator device_end () const
 
const Serverfind_server (const int remotePort) const
 
Serverfind_server (const int remotePort)
 
void assign (const Device *device) noexcept(false)
 
bool contains (const Device *device) const
 
std::string asString () const
 
xml::NodeasXML (xml::Node *parent) const noexcept(false)
 
- 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 Serverserver (server_iterator ii)
 
static const Serverserver (const_server_iterator ii)
 
static const Devicedevice (const_device_iterator ii)
 

Protected Member Functions

 Host (const char *name)
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Friends

class Network
 

Detailed Description

Clase que modela una maquina en la que se ejecutan procesos servidores. Cada maquina contiene un nmero indeterminado de procesos servidores (ver Server) a los que enviar peticiones, bien directamente, o bien a traves del un sistema de reparto de carga.

Para crear una nueva maquina hay que invocar a Network::find(const char*) o Network::find(const std::string&).

See also
Server
Service
Network::find

Member Typedef Documentation

◆ const_device_iterator

typedef device_container::const_iterator anna::comm::Host::const_device_iterator

Iterador para acceder a los dispositivo de red de la maquina

◆ const_server_iterator

Iterador para acceder a los Servidores asociados a cada uno de los puertos en esta maquina.

◆ device_container

typedef std::vector<const Device*> anna::comm::Host::device_container

◆ server_container

◆ server_iterator

Iterador para acceder a los Servidores asociados a cada uno de los puertos en esta maquina.

Constructor & Destructor Documentation

◆ ~Host()

virtual anna::comm::Host::~Host ( )
virtual

Destructor.

◆ Host()

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

Constructor.

Parameters
nameNombre logico de esta maquina.
Warning
Cualquier clase heredada que invoque a este constructor debe evitar el acceso al metodo createServer.
256 : a_name(name) {}

Member Function Documentation

◆ assign()

void anna::comm::Host::assign ( const Device device)
noexcept

Incorpora un dispositivo de red.

Parameters
deviceDispositivo de red a incorporar.

◆ asString()

std::string anna::comm::Host::asString ( ) const

Devuelve una cadena con la informacin referente a esta maquina.

Returns
Una cadena con la informacin referente a esta maquina.

◆ asXML()

xml::Node* anna::comm::Host::asXML ( xml::Node parent) const
noexcept

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

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

◆ contains()

bool anna::comm::Host::contains ( const Device device) const
inline

Devuelve true si el dispositivo de red recibido fue asignado a esta maquina o false en otro caso.

Parameters
deviceDispositivo de red a comprobar.
Returns
true si el dispositivo de red recibido fue asignado a esta maquina o false en otro caso.
See also
assign
230  {
232  return (std::find(device_begin(), end, device) != end);
233  }
const_device_iterator device_begin() const
Definition: Host.hpp:174
device_container::const_iterator const_device_iterator
Definition: Host.hpp:64
const_device_iterator device_end() const
Definition: Host.hpp:180
static const Device * device(const_device_iterator ii)
Definition: Host.hpp:188

◆ createServer() [1/3]

Server* anna::comm::Host::createServer ( const char *  name,
const int  remotePort,
const bool  autoRecovery,
TransportFactory transportFactory = NULL,
const bool  ignoreIncomingMessages = false,
const bool  doConnect = true 
)
inlinenoexcept

Crea y registra un nuevo proceso servidor sobre esta maquina (maquina, remotePort) con el nombre indicado.

Parameters
nameNombre logico del proceso servidor.
remotePortPuerto remoto en el que atiende peticiones este proceso servidor.
autoRecoveryIndica si en caso de caida se debe intenrar la recuperacion automatica de la conexion.
transportFactoryFactoria de protocolos de transporte usada por los ClientSocket asociados a este proceso servidor.
ignoreIncomingMessagesIndicador de ignorar mensajes entrantes.
doConnectIndicador de connectar al servidor en el momento de crearlo.
Returns
La instancia del nuevo proceso servidor
99  {
100  return createServer(std::string(name), remotePort, autoRecovery, transportFactory, ignoreIncomingMessages, doConnect);
101  }
Server * createServer(const char *name, const int remotePort, const bool autoRecovery, TransportFactory *transportFactory=NULL, const bool ignoreIncomingMessages=false, const bool doConnect=true) noexcept(false)
Definition: Host.hpp:98

◆ createServer() [2/3]

Server* anna::comm::Host::createServer ( const std::string &  name,
const int  remotePort,
const bool  autoRecovery,
TransportFactory transportFactory = NULL,
const bool  ignoreIncomingMessages = false,
const bool  doConnect = true 
)
noexcept

Crea y registra un nuevo proceso servidor sobre esta maquina (maquina, remotePort) con el nombre indicado.

Parameters
nameNombre logico del proceso servidor.
remotePortPuerto remoto en el que atiende peticiones este proceso servidor.
autoRecoveryIndica si en caso de caida se debe intentar la recuperacion automatica de la conexion.
transportFactoryFactoria de protocolos de transporte usada por los ClientSocket asociados a este proceso servidor.
ignoreIncomingMessagesIndicador de ignorar mensajes entrantes.
doConnectIndicador de connectar al servidor en el momento de crearlo.
Returns
La instancia del nuevo proceso servidor

◆ createServer() [3/3]

Server* anna::comm::Host::createServer ( const ServerAllocator serverAllocator)
noexcept

Crea y registra un nuevo proceso servidor sobre esta maquina (maquina, remotePort) con el nombre indicado.

Parameters
serverAllocatorInstanciador de Server utilizado para crear la instancia del Server.
Returns
La instancia del nuevo proceso servidor

◆ device()

static const Device* anna::comm::Host::device ( const_device_iterator  ii)
inlinestatic

Devuelve la instancia de la IP sobre el que esta posicionado el iterador recibido como parametro.

Parameters
iiIterador que debera estar comprendido entre begin y end.
Returns
La instancia de la sobre el que esta posicionado el iterador recibido
188 { return *ii; }

◆ device_begin()

const_device_iterator anna::comm::Host::device_begin ( ) const
inline

Devuelve un iterador al comienzo de la lista de direcciones IPs asociadas a esta maquina.

Returns
Un iterador al comienzo de la lista de direcciones IPs asociadas a esta maquina.
174 { return a_devices.begin(); }

◆ device_end()

const_device_iterator anna::comm::Host::device_end ( ) const
inline

Devuelve un iterador al final de la lista de direcciones IPs asociadas a esta maquina.

Returns
Un iterador al final de la lista de direcciones IPs asociadas a esta maquina.
180 { return a_devices.end(); }

◆ find_server() [1/2]

const Server* anna::comm::Host::find_server ( const int  remotePort) const

Devuelve la instancia del proceso servidor asociado al puerto recibido como parametro. Si hay más de una conexión sobre el mismo puerto sólo devolverá la primera.

Parameters
remotePortPuerto remoto en el que atiende peticiones este proceso servidor.
Returns
La instancia del proceso servidor asociado al puerto recibido. Puede ser NULL si no hay ningn proceso servidor asociado con el puerto recibido.
See also
createServer

◆ find_server() [2/2]

Server* anna::comm::Host::find_server ( const int  remotePort)

Devuelve la instancia del proceso servidor asociado al puerto recibido como parametro. Si hay más de una conexión sobre el mismo puerto sólo devolverá la primera.

Parameters
remotePortPuerto remoto en el que atiende peticiones este proceso servidor.
Returns
La instancia del proceso servidor asociado al puerto recibido. Puede ser NULL si no hay ningn proceso servidor asociado con el puerto recibido.
See also
createServer

◆ getName()

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

Devuelve el nombre logico de esta maquina.

Returns
El nombre logico de esta maquina.
82 { return a_name; }

◆ server() [1/2]

static Server* anna::comm::Host::server ( server_iterator  ii)
inlinestatic

Devuelve la instancia del servidor sobre el que esta posicionado el iterador recibido como parametro.

Parameters
iiIterador que debera estar comprendido entre begin y end.
Returns
La instancia del servidor sobre el que esta posicionado el iterador recibido
159 { return server_container::data(ii); }
static Server * data(iterator ii)
Definition: MultiMap.hpp:181

◆ server() [2/2]

static const Server* anna::comm::Host::server ( const_server_iterator  ii)
inlinestatic

Devuelve la instancia del servidor sobre el que esta posicionado el iterador recibido como parametro.

Parameters
iiIterador que debera estar comprendido entre begin y end.
Returns
La instancia del servidor sobre el que esta posicionado el iterador recibido
167 { return server_container::data(ii); }
static Server * data(iterator ii)
Definition: MultiMap.hpp:181

◆ server_begin() [1/2]

server_iterator anna::comm::Host::server_begin ( )
inline

Devuelve un iterador al comienzo de la lista de servidores asociados a esta maquina.

Returns
Un iterador al comienzo de la lista de servidores asociados a esta maquina.
133 { return a_servers.begin(); }

◆ server_begin() [2/2]

const_server_iterator anna::comm::Host::server_begin ( ) const
inline

Devuelve un iterador al comienzo de la lista de servidores asociados a esta maquina.

Returns
Un iterador al comienzo de la lista de servidores asociados a esta maquina.
139 { return a_servers.begin(); }

◆ server_end() [1/2]

server_iterator anna::comm::Host::server_end ( )
inline

Devuelve un iterador al comienzo de la lista de servidores asociados a esta maquina.

Returns
Un iterador al final de la lista de servidores asociados a esta maquina.
145 { return a_servers.end(); }

◆ server_end() [2/2]

const_server_iterator anna::comm::Host::server_end ( ) const
inline

Devuelve un iterador al comienzo de la lista de servidores asociados a esta maquina.

Returns
Un iterador al final de la lista de servidores asociados a esta maquina.
151 { return a_servers.end(); }

Friends And Related Function Documentation

◆ Network

friend class Network
friend

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