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

#include <Handler.hpp>

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

Classes

struct  Support
 
struct  Type
 

Public Member Functions

Type::_v getType () const
 
int getfd () const
 
bool supportCongestionControl () const
 
bool supportTimeout () const
 
bool operator== (const int fd) const
 
virtual void apply () noexcept(false)=0
 
virtual ClientSocketgetClientSocket ()
 
virtual std::string asString () const
 
virtual xml::NodeasXML (xml::Node *parent) const noexcept(false)
 
void asAttribute (xml::Node *node) const noexcept(false)
 
- Public Member Functions inherited from anna::Runnable
const std::string & getId () const
 
bool hasRequestedStop () const
 
bool isRunning () const
 
void requestStop () 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
 

Protected Member Functions

 Handler (Communicator *communicator, const Type::_v type, const int support=Support::CongestionControl)
 
 Handler (const Type::_v type, const int support=Support::CongestionControl)
 
void setfd (const int fd)
 
void setTimeout (const Millisecond &timeout)
 
bool canContinue () const
 
virtual void breakAddress (const in_addr_t &address)
 
virtual void recoverAddress (const in_addr_t &address)
 
virtual bool testClose () noexcept(false)
 
virtual void finalize ()
 
virtual void clone () noexcept(false)
 
- Protected Member Functions inherited from anna::Runnable
 Runnable ()
 
 Runnable (const std::string &id)
 
 Runnable (const char *id)
 
void setId (const std::string &id)
 
void setIsRunning (const bool isRunning)
 
virtual void initialize () noexcept(false)
 
virtual void run () noexcept(false)
 
virtual void terminate ()
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Protected Attributes

Communicatora_communicator
 

Friends

class Communicator
 

Detailed Description

Controlador de comunicaciones generico.

Constructor & Destructor Documentation

◆ Handler() [1/2]

anna::comm::Handler::Handler ( Communicator communicator,
const Type::_v  type,
const int  support = Support::CongestionControl 
)
inlineprotected

Constructor.

Parameters
communicatorComunicador asociado a este controlador.
typeTipo de Comunicador.
supportUna combinacion de los valores de Handler::Support.
137  :
138  a_communicator(communicator),
139  a_type(type),
140  a_support(support),
141  a_fd(-1),
142  a_timeout(0),
143  a_maxTime(0),
144  a_loop(0)
145  {;}
Communicator * a_communicator
Definition: Handler.hpp:129

◆ Handler() [2/2]

anna::comm::Handler::Handler ( const Type::_v  type,
const int  support = Support::CongestionControl 
)
inlineprotected

Constructor.

Parameters
typeTipo de Comunicador.
supportUna combinacion de los valores de Handler::Support.
152  :
153  a_communicator(NULL),
154  a_type(type),
155  a_support(support),
156  a_fd(-1),
157  a_timeout(0),
158  a_maxTime(0),
159  a_loop(0)
160  {;}
Communicator * a_communicator
Definition: Handler.hpp:129

Member Function Documentation

◆ apply()

virtual void anna::comm::Handler::apply ( )
pure virtualnoexcept

Metodo invocado por el comunicador cuando detectado actividad en el descriptor de fichero asociado a este controlador.

◆ asAttribute()

void anna::comm::Handler::asAttribute ( xml::Node node) const
noexcept

Amplia la informacion XML del nodo recibido como parametro.

Parameters
nodeNodo XML en el que incorporar los atributos.

◆ asString()

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

Devuelve una cadena con la informacion referente a esta instancia.

Returns
una cadena con la informacion referente a esta instancia.

Reimplemented from anna::Runnable.

Reimplemented in anna::ldap::Session, and anna::timex::TickConsumer.

◆ asXML()

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

Devuelve un documento XML con la informacion referente a esta instancia.

Returns
un documento XML con la informacion referente a esta instancia.

Reimplemented in anna::ldap::Session.

◆ breakAddress()

virtual void anna::comm::Handler::breakAddress ( const in_addr_t &  address)
inlineprotectedvirtual

Metodo con el que podemos redefinir el comportamiento cuando recibe la notificacion de que una IP ha dejado de estar disponible.

Parameters
addressDireccion IP que ha dejado de estar disponible.
Warning
Se invoca automaticamente desde el comunicador.
192 {;}

◆ canContinue()

bool anna::comm::Handler::canContinue ( ) const
inlineprotected

En los manejadores que pueden recibir mas de una peticion en cada llamada a apply este metodo debe ser invocado para saber si debe dejar de procesar mensajes.

184 { return hasRequestedStop() == false; }
bool hasRequestedStop() const
Definition: Runnable.hpp:42

◆ clone()

virtual void anna::comm::Handler::clone ( )
inlineprotectedvirtualnoexcept

Metodo con el que podemos redefinir el comportamiento cuando recibe la notificacion de que el componente asociado a este controlador ha sido duplicado en un proceso hijo.

Warning
Exclusivamente uso interno.
223 {;}

◆ finalize()

virtual void anna::comm::Handler::finalize ( )
inlineprotectedvirtual

Metodo con el que podemos redefinir el comportamiento cuando recibe la notificacion de que el componente asociado a este controlador ha dejado de estar operativo.

Warning
Se invoca automaticamente desde el comunicador al invocar al metodo detach correspondiente.
216 {;}

◆ getClientSocket()

virtual ClientSocket* anna::comm::Handler::getClientSocket ( )
inlinevirtual

Devuelve el ClientSocket asociado a este manejador de conexiones.

Returns
El ClientSocket asociado a este manejador de conexiones. Puede ser NULL.
Warning
Uso interno. Se necesita para poder cooperar con el anna::comm::CongestionController.

Reimplemented in anna::comm::handler::DatagramSocket, anna::comm::handler::ClientSocket, anna::comm::handler::LocalConnection, and anna::comm::handler::RemoteConnection.

105 { return NULL; }

◆ getfd()

int anna::comm::Handler::getfd ( ) const
inline

Devuelve el descriptor de fichero asociado a este controlador.

Returns
el descriptor de fichero asociado a este controlador.
69 { return a_fd; }

◆ getType()

Type::_v anna::comm::Handler::getType ( ) const
inline

Devuelve el tipo de controlador.

Returns
el tipo de controlador.
63 { return a_type; }

◆ operator==()

bool anna::comm::Handler::operator== ( const int  fd) const
inline

Operador de comparacion.

Parameters
fdDescriptor de fichero con el que comparar.
Returns
true si el fd recibido es igual al establecido con setfd o false en caso contrario.
92 { return a_fd == fd; }

◆ recoverAddress()

virtual void anna::comm::Handler::recoverAddress ( const in_addr_t &  address)
inlineprotectedvirtual

Metodo con el que podemos redefinir el comportamiento cuando recibe la notificacion de que una IP esta disponible.

Parameters
addressDireccion IP que ha pasado a estar disponible.
Warning
Se invoca automaticamente desde el comunicador.
200 {;}

◆ setfd()

void anna::comm::Handler::setfd ( const int  fd)
inlineprotected

Establecer el descriptor de fichero asociado a este controlador.

Parameters
fdDescriptor de fichero asociado a este controlador.
Warning
La implementacion del metodo initialize debe invocar a este metodo con descriptor de fichero valido.
168 { setId(anna::functions::asText("Handler", a_fd = fd)); }
static std::string asText(const char *comment, const int number)
Definition: functions.hpp:153
void setId(const std::string &id)
Definition: Runnable.hpp:90
Here is the call graph for this function:

◆ setTimeout()

void anna::comm::Handler::setTimeout ( const Millisecond timeout)
inlineprotected

Establece el numero de milisegundos maximo que puede estar este manejador sin recibir mensajes antes de ser cerrado por el nucleo.

Parameters
timeoutNumero de milisegundos maximo sin recibir mensajes.
175  {
176  a_timeout = timeout;
177  a_maxTime = functions::hardwareClock() + a_timeout;
178  }
static Microsecond hardwareClock()
Definition: functions.hpp:390
Here is the call graph for this function:

◆ supportCongestionControl()

bool anna::comm::Handler::supportCongestionControl ( ) const
inline

Devuelve true si el descriptor de fichero asociado a este controlador soporta control de congestion o false en otro caso.

Returns
true si el descriptor de fichero asociado a este controlador soporta control de congestion o false en otro caso.
77 { return (a_support & Support::CongestionControl) != 0; }

◆ supportTimeout()

bool anna::comm::Handler::supportTimeout ( ) const
inline

Devuelve true si este manejador soporta control de temporizacion o false en otro caso.

Returns
true si este manejador soporta control de temporizacion o false en otro caso.
85 { return a_timeout > 0; }

◆ testClose()

virtual bool anna::comm::Handler::testClose ( )
inlineprotectedvirtualnoexcept

Método que se invoca periódicamente para comprobar si tenemos pendiente el cierre de la conexión con el canal asociado a este manejador, cuando el fd asociado al manejador de recibe actividad.

Returns
true Si termina la conexión o false en otro caso.
208 { return false;}

Friends And Related Function Documentation

◆ Communicator

friend class Communicator
friend

Member Data Documentation

◆ a_communicator

Communicator* anna::comm::Handler::a_communicator
protected

Instancia del comunicador puede ser NULL.


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