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

#include <Server.hpp>

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

Public Types

typedef std::vector< Service * > Services
 
typedef Services::iterator iterator
 
typedef Services::const_iterator const_iterator
 

Public Member Functions

virtual ~Server ()
 
const HostgetHost () const
 
const ClientSocketgetClientSocket () const
 
int getRemotePort () const
 
bool autoRecovery () const
 
void setAutoRecovery (bool autoRecovery=true)
 
bool isAvailable () const noexcept(false)
 
TransportFactorygetTransportFactory ()
 
const MillisecondgetMaxConnectionDelay () const
 
const MillisecondgetMaxWriteDelay () const
 
ReceiverFactorygetReceiverFactory ()
 
void setMaxConnectionDelay (const Millisecond &msMaxConnectionDelay)
 
void setMaxWriteDelay (const Millisecond &msMaxWriteDelay)
 
void setReceiverFactory (ReceiverFactory &receiverFactory)
 
bool getIgnoreIncomingMessages () const
 
void setIgnoreIncomingMessages (const bool ignoreIncomingMessages)
 
void attach (Service *service) noexcept(false)
 
void connect () noexcept(false)
 
ClientSocketsend (Message &message) noexcept(false)
 
ClientSocketsend (Message *message) noexcept(false)
 
void reset () noexcept(false)
 
const_iterator begin () const
 
const_iterator end () const
 
iterator begin ()
 
iterator end ()
 
std::string asString () const
 
xml::NodeasXML (xml::Node *parent) const noexcept(false)
 
- Public Member Functions inherited from anna::comm::Resource
virtual void asAttribute (xml::Node *node) const noexcept(false)
 
- Public Member Functions inherited from anna::Resource
 Resource (const std::string &name)
 
const std::string & getName () const
 
bool isEnabled () const
 
void setTimeStamp (const Millisecond &timeStamp)
 
const MillisecondgetTimeStamp () const
 
bool operator== (const std::string &name) const
 
bool operator== (const Resource &other) const
 
void enable () noexcept(false)
 
void disable () 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 Serviceservice (iterator &ii)
 
static const Serviceservice (const_iterator &ii)
 
static const char * className ()
 

Protected Member Functions

 Server (const std::string &name, const Host &host, const int remotePort, const bool autoRecovery, TransportFactory *transportFactory)
 
- Protected Member Functions inherited from anna::comm::Resource
 Resource (const std::string &name)
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Friends

class Host
 
class ServerAllocator
 

Detailed Description

Clase que modela los procesos servidores. Cada maquina (ver Host) contiene un numero indeterminado de procesos servidores a los que puede enviar peticiones, bien directamente, o bien a traves del sistema de reparto de carga.

Para facilitar el diseo de soluciones HA cada servidor puede tener un numero indeterminado por donde recibe/envia peticiones, es por esto que cada servidor puede tener asociado un numero indeterminado de instancias de la clase RemoteConnection.

La instanciacion de procesos servidores se hara mediante la invocacion al metodo Host::createServer.

Warning
Este metodo no hace que nuestro proceso se convierta en un servidor, sino que conecta nuestra aplicacion a un servidor remoto.
See also
Host::createServer
Service

Member Typedef Documentation

◆ const_iterator

typedef Services::const_iterator anna::comm::Server::const_iterator

◆ iterator

typedef Services::iterator anna::comm::Server::iterator

◆ Services

typedef std::vector<Service*> anna::comm::Server::Services

Constructor & Destructor Documentation

◆ ~Server()

virtual anna::comm::Server::~Server ( )
virtual

Destructor.

◆ Server()

anna::comm::Server::Server ( const std::string &  name,
const Host host,
const int  remotePort,
const bool  autoRecovery,
TransportFactory transportFactory 
)
protected

Constructor.

Parameters
nameNombre logico del servidor.
hostInstancia de la maquina sobre la que esta atendiento peticiones.
remotePortPuerto sobre el que atiende peticiones.
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.

Member Function Documentation

◆ asString()

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

Devuelve una cadena con la informacion referente a este proceso servidor.

Returns
Una cadena con la informacion referente a este proceso servidor.

Reimplemented from anna::Resource.

◆ asXML()

xml::Node* anna::comm::Server::asXML ( xml::Node parent) const
virtualnoexcept

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 from anna::comm::Resource.

◆ attach()

void anna::comm::Server::attach ( Service service)
inlinenoexcept

Asocia este servidor con un servicio de reparto.

Parameters
serviceServicio de reparto al que vamos a relacionar este servicio.
Warning
se invoca automatica desde
177  {
178  if(std::find(begin(), end(), service) == end())
179  a_services.push_back(service);
180  }
const_iterator end() const
Definition: Server.hpp:224
static Service * service(iterator &ii)
Definition: Server.hpp:257
const_iterator begin() const
Definition: Server.hpp:218

◆ autoRecovery()

bool anna::comm::Server::autoRecovery ( ) const
inline

Devuelve el estado del indicador de recuperacin automatica. En caso de perder la conexin, por defecto, siempre se intentara reconectar con el servidor.

Returns
El estado del indicador de recuperacin automatica.
87 { return a_autoRecovery; }

◆ begin() [1/2]

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

Devuelve un iterador al comienzo de la lista de RemoteConnections asociados a este proceso servidor.

Returns
Un iterador al comienzo de la lista de RemoteConnections asociados a este proceso servidor.
218 { return a_services.begin(); }

◆ begin() [2/2]

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

Devuelve un iterador al comienzo de la lista de RemoteConnections asociados a este proceso servidor.

Returns
Un iterador al comienzo de la lista de RemoteConnections asociados a este proceso servidor.
230 { return a_services.begin(); }

◆ className()

static const char* anna::comm::Server::className ( )
inlinestatic

Devuelve el nombre logico de esta clase.

Returns
el nombre logico de esta clase.
271 { return "anna::comm::Server"; }

◆ connect()

void anna::comm::Server::connect ( )
noexcept

Crea una conexion al servidor mediante algunas de las conexiones que deberian estar disponibles en la maquina asociada a este servidor.

◆ end() [1/2]

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

Devuelve un iterador al final de la lista de RemoteConnections asociados a este proceso servidor.

Returns
Un iterador al final de la lista de RemoteConnections asociados a este proceso servidor.
224 { return a_services.end(); }

◆ end() [2/2]

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

Devuelve un iterador al final de la lista de RemoteConnections asociados a este proceso servidor.

Returns
Un iterador al final de la lista de RemoteConnections asociados a este proceso servidor.
236 { return a_services.end(); }

◆ getClientSocket()

const ClientSocket* anna::comm::Server::getClientSocket ( ) const
inline

Devuelve la instancia de ClientSocket asociada a este servidor. Puede ser NULL.

Returns
la instancia de ClientSocket asociada a este servidor.
74 { return a_clientSocket; }

◆ getHost()

const Host* anna::comm::Server::getHost ( ) const
inline

Devuelve la instancia del Host indicada en el constructor.

Returns
la instancia del Host indicada en el constructor.
68 { return &a_host; }

◆ getIgnoreIncomingMessages()

bool anna::comm::Server::getIgnoreIncomingMessages ( ) const
inline

Devuelve true si el indicador que ignora los mensajes entrantes está activo, o false en otro caso.

Returns
true si el indicador que ignora los mensajes entrantes está activo, o false en otro caso.
163 { return a_ignoreIncomingMessages; }

◆ getMaxConnectionDelay()

const Millisecond& anna::comm::Server::getMaxConnectionDelay ( ) const
inline

Devuelve el numero maximo de milisegundos esperados para obtener conexion al invocar al metodo connect.

Returns
el numero maximo de milisegundos esperados para obtener conexion al invocar al metodo connect.
118 { return a_msMaxConnectionDelay; }

◆ getMaxWriteDelay()

const Millisecond& anna::comm::Server::getMaxWriteDelay ( ) const
inline

Devuelve el numero maximo de milisegundos que queda bloqueado el proceso/thread a la espera de escribir en un socket cuyo buffer de salida esta lleno.

Returns
Devuelve el numero maximo de milisegundos que queda bloqueado el proceso/thread a la espera de escribir en un socket cuyo buffer de salida esta lleno.
126 { return a_msMaxWriteDelay; }

◆ getReceiverFactory()

ReceiverFactory* anna::comm::Server::getReceiverFactory ( )
inline

Devuelve la factoria de receptores usada por este servidor.

Returns
la factoria de receptores usada por este servidor.
132 { return a_receiverFactory; }

◆ getRemotePort()

int anna::comm::Server::getRemotePort ( ) const
inline

Devuelve el puerto remoto donde establece las conexiones este proceso servidor.

Returns
El puerto remoto donde establece las conexiones este proceso servidor.
80 { return a_remotePort; }

◆ getTransportFactory()

TransportFactory* anna::comm::Server::getTransportFactory ( )
inline

Devuelve la factoria de transporte indicada en el constructor.

Returns
la factoria de transporte indicada en el constructor.
110 { return a_transportFactory; }

◆ isAvailable()

bool anna::comm::Server::isAvailable ( ) const
virtualnoexcept

Devuelve el estado activo o inactivo de este proceso servidor. Un proceso servidor estara activo si ha conseguido establecer el socket con el proceso remoto que representa por alguno de los sockets cliente establecidos.

Returns
true si el proceso servidor esta preparado para enviar peticiones o false en otro caso.

Implements anna::Resource.

◆ reset()

void anna::comm::Server::reset ( )
noexcept

Libera el RemoteConnection asociado a esta instancia. Se invoca automaticamente cuando el extremo remoto cierra la conexion.

◆ send() [1/2]

ClientSocket* anna::comm::Server::send ( Message message)
noexcept

Envia el mensaje recibido como parametro. El bloque de datos recibido se codifica segun las reglas establecidas por el protocolo asociado en el contructor.

Parameters
messageMensaje vamos codificar para enviar a la capa de transporte.
Returns
La instancia del ClientSocket usada para enviar el mensaje.

◆ send() [2/2]

ClientSocket* anna::comm::Server::send ( Message message)
noexcept

Envia el mensaje recibido como parametro. El bloque de datos recibido se codifica segun las reglas establecidas por el protocolo asociado en el contructor.

Parameters
messageMensaje vamos codificar para enviar a la capa de transporte.
Returns
La instancia del ClientSocket usada para enviar el mensaje.

◆ service() [1/2]

static Service* anna::comm::Server::service ( iterator ii)
inlinestatic

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

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

◆ service() [2/2]

static const Service* anna::comm::Server::service ( const_iterator ii)
inlinestatic

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

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

◆ setAutoRecovery()

void anna::comm::Server::setAutoRecovery ( bool  autoRecovery = true)

Configura el estado del indicador de recuperacin automatica. En caso de perder la conexin, por defecto, siempre se intentara reconectar con el servidor.

Parameters
autoRecoveryIndicador de recuperacin automatica.

◆ setIgnoreIncomingMessages()

void anna::comm::Server::setIgnoreIncomingMessages ( const bool  ignoreIncomingMessages)
inline

Establece el indicador que provoca ignorar los mensajes entrantes.

Parameters
ignoreIncomingMessagestrue si el indicador que ignora los mensajes entrantes está activo, o false en otro caso.
169 { a_ignoreIncomingMessages = ignoreIncomingMessages; }

◆ setMaxConnectionDelay()

void anna::comm::Server::setMaxConnectionDelay ( const Millisecond msMaxConnectionDelay)
inline

Establece el numero maximo de milisegundos esperados para obtener la conexion al invocar al metodo connect.

Parameters
msMaxConnectionDelayNumero de milisegundos esperados para obtener conexion.
140  {
141  a_msMaxConnectionDelay = msMaxConnectionDelay;
142  }

◆ setMaxWriteDelay()

void anna::comm::Server::setMaxWriteDelay ( const Millisecond msMaxWriteDelay)
inline

Establece el numero maximo de milisegundos que queda bloqueado el proceso/thread a la espera de escribir en un socket cuyo buffer de salida esta lleno.

Parameters
msMaxWriteDelayNumero de milisegundos esperados en caso de que el buffer del socket se llene.
150 { a_msMaxWriteDelay = msMaxWriteDelay; }

◆ setReceiverFactory()

void anna::comm::Server::setReceiverFactory ( ReceiverFactory receiverFactory)

Establece la factoria de receptores usada por este socket.

Parameters
receiverFactoryFactoria de receptores desde la que obtener el receptor asociado al comm::ClientSocket usado por este servidor.

Friends And Related Function Documentation

◆ Host

friend class Host
friend

◆ ServerAllocator

friend class ServerAllocator
friend

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