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

#include <Socket.hpp>

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

Classes

struct  Domain
 
struct  Notify
 
struct  Type
 

Public Member Functions

virtual ~Socket ()
 
int getfd () const
 
Type::_v getType () const
 
Domain::_v getDomain () const
 
int getCategory () const
 
bool support (const char *transportClassName) const
 
bool isBound () const
 
bool isOpened () const
 
virtual bool isSecure () const
 
const AccessPointgetLocalAccessPoint () const
 
TransportFactorygetTransportFactory () const
 
ReceiverFactorygetReceiverFactory ()
 
bool setBlockingMode (const bool blockingMode) noexcept(false)
 
bool setReuseMode (const bool reuseMode) noexcept(false)
 
void setTransportFactory (TransportFactory *transportFactory)
 
void setReceiverFactory (ReceiverFactory &receiverFactory)
 
void setCategory (const int category)
 
void close ()
 
virtual void bind () noexcept(false)
 
virtual std::string asString () const
 
virtual 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
 

Protected Member Functions

 Socket (const Domain::_v domain, const Type::_v type, TransportFactory *transportFactory=NULL)
 
 Socket (const INetAddress &localAddress, const Type::_v type, TransportFactory *transportFactory=NULL)
 
 Socket (const std::string &path, const Type::_v type, TransportFactory *transportFactory=NULL)
 
void open () noexcept(false)
 
virtual void do_close ()
 
virtual int do_bind (const struct sockaddr *, const int) noexcept(false)
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Static Protected Member Functions

static const char * asText (const Notify::_v v)
 

Protected Attributes

const Domain::_v a_domain
 
const Type::_v a_type
 
int a_fd
 
AccessPoint a_localAccessPoint
 
bool a_isBound
 
TransportFactorya_transportFactory
 
ReceiverFactorya_receiverFactory
 
int a_category
 

Detailed Description

Esta clase es la superclase de la que heredan todos los socket definidos en este paquete. Es usada tanto para crear socket de la parte cliente y de la parte servidora.

Constructor & Destructor Documentation

◆ ~Socket()

virtual anna::comm::Socket::~Socket ( )
virtual

Destructor.

◆ Socket() [1/3]

anna::comm::Socket::Socket ( const Domain::_v  domain,
const Type::_v  type,
TransportFactory transportFactory = NULL 
)
protected

Crea un servidor de socket liberado.

Parameters
domainDominio del socket.
typeTipo de socket.
transportFactoryFactoria de protocolos de transporte a usar por este sockets. Si se indica NULL ser usara el protocolo devuelto por anna::comm::Application::getDefaultTransportFactory.
Warning
La factoria de protocolos debe estar disponible mientras el Socket este activo.

◆ Socket() [2/3]

anna::comm::Socket::Socket ( const INetAddress localAddress,
const Type::_v  type,
TransportFactory transportFactory = NULL 
)
protected

Crea un socket INET que sera asociado a la direccion y puerto locales indicados.

Parameters
localAddressPuede ser usado para limitar la direccion por la que atendiende peticiones un servidor de socket instalado en una maquina con mas de una direccion.
typeTipo de socket.
transportFactoryFactoria de protocolos de transporte a usar por este sockets. Si se indica NULL ser usara el protocolo devuelto por anna::comm::Application::getDefaultTransportFactory.
Warning
La factoria de protocolos debe estar disponible mientras el Socket este activo.

◆ Socket() [3/3]

anna::comm::Socket::Socket ( const std::string &  path,
const Type::_v  type,
TransportFactory transportFactory = NULL 
)
protected

Crea un socket UNIX que sera asociado al archivo indicado como parametro.

Parameters
pathRuta del archivo que vamos a usar para transferir datos a traves de este socket.
typeTipo de socket.
transportFactoryFactoria de protocolos de transporte a usar por este sockets. Si se indica NULL ser usara el protocolo devuelto por anna::comm::Application::getDefaultTransportFactory.

Member Function Documentation

◆ asString()

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

Devuelve una cadena con la informacion referente a este socket.

Returns
Una cadena con la informacion referente a este socket.

Reimplemented in anna::comm::ClientSocket, and anna::comm::ServerSocket.

◆ asText()

static const char* anna::comm::Socket::asText ( const Notify::_v  v)
staticprotected

Devuelve la cadena correspondiente a la notificacion recibida como parametro.

Parameters
vCodigo de notificacion.
Returns
La cadena correspondiente a la notificacion recibida como parametro.

◆ asXML()

virtual xml::Node* anna::comm::Socket::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 in anna::comm::ClientSocket, and anna::comm::ServerSocket.

◆ bind()

virtual void anna::comm::Socket::bind ( )
virtualnoexcept

Intenta la asociar este socket con los parametros indicados en el constructor.

◆ close()

void anna::comm::Socket::close ( )

Cierra este socket. Si el socket no ha sido creado no tendra ningn efecto.

◆ do_bind()

virtual int anna::comm::Socket::do_bind ( const struct sockaddr *  ,
const int   
)
protectedvirtualnoexcept

Asocia este Socket a la direccion recibida como parametro.

Warning
Exclusivamente uso interno.

◆ do_close()

virtual void anna::comm::Socket::do_close ( )
inlineprotectedvirtual

Cierra este socket. Si el socket no ha sido creado no tendra ningn efecto.

Reimplemented in anna::comm::ClientSocket.

252 { ::close(a_fd); }
int a_fd
Definition: Socket.hpp:205

◆ getCategory()

int anna::comm::Socket::getCategory ( ) const
inline

Devuelve la categoria asociada a este socket.

Returns
La categoria asociada a este socket.
91 { return a_category; }
int a_category
Definition: Socket.hpp:210

◆ getDomain()

Domain::_v anna::comm::Socket::getDomain ( ) const
inline

Devuelve el dominio de este socket.

Returns
El dominio de este socket.
85 { return a_domain; }
const Domain::_v a_domain
Definition: Socket.hpp:203

◆ getfd()

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

Devuelve el descriptor de fichero asociado a este socket.

Returns
El descriptor de fichero asociado a este socke. Si el socket no ha sido creado devolver�-1.
73 { return a_fd; }
int a_fd
Definition: Socket.hpp:205

◆ getLocalAccessPoint()

const AccessPoint& anna::comm::Socket::getLocalAccessPoint ( ) const
inline

Devuelve la direccion local del socket.

Returns
La direccion local del socket.
128 { return a_localAccessPoint; }
AccessPoint a_localAccessPoint
Definition: Socket.hpp:206

◆ getReceiverFactory()

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

Devuelve la factoria de receptores usada en este socket.

Returns
la factoria de receptores usada en este socket.
140 { return a_receiverFactory; }
ReceiverFactory * a_receiverFactory
Definition: Socket.hpp:209

◆ getTransportFactory()

TransportFactory* anna::comm::Socket::getTransportFactory ( ) const
inline

Devuelve la factoria de la capa de transporte usada en este socket.

Returns
la factoria de la capa de transporte usada en este socket.
134 { return a_transportFactory; }
TransportFactory * a_transportFactory
Definition: Socket.hpp:208

◆ getType()

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

Devuelve el tipo de socket.

Returns
El tipo de socket.
79 { return a_type; }
const Type::_v a_type
Definition: Socket.hpp:204

◆ isBound()

bool anna::comm::Socket::isBound ( ) const
inline

Devuelve el estado de la conexion de este socket.

Returns
true si el servidor de socket ha sido conectado o false en otro caso.
108 { return a_isBound; }
bool a_isBound
Definition: Socket.hpp:207

◆ isOpened()

bool anna::comm::Socket::isOpened ( ) const
inline

Devuelve el estado del socket.

Returns
true si el socket este abierto o false en otro caso.
114 { return a_fd != -1; }
int a_fd
Definition: Socket.hpp:205

◆ isSecure()

virtual bool anna::comm::Socket::isSecure ( ) const
inlinevirtual

Devuelve false si el socket usa un protocolo de comunicaciones seguro o false en otro caso.

Returns
false si el socket usa un protocolo de comunicaciones seguro o false en otro caso.
122 { return false; }

◆ open()

void anna::comm::Socket::open ( )
protectednoexcept

Abre el socket.

◆ setBlockingMode()

bool anna::comm::Socket::setBlockingMode ( const bool  blockingMode)
noexcept

Activa o desactiva el modo de bloqueo.

Parameters
blockingModetrue si queremos activar el bloqueo o false en otro caso.
Returns
El modo de bloqueo establecido antes de invocar este masodo.

◆ setCategory()

void anna::comm::Socket::setCategory ( const int  category)
inline

Establece la categoria de este socket. La categoria es una concepto del ambito de la aplicacion que el nucleo de anna.comm no usa para nada. Unicamente hay que tener en cuenta que todos los anna::comm::ClientSocket creados a partir de un anna::comm::ServerSocket comparten su misma categoria.

Parameters
categoryCategoria asociada a este socket.
177 { a_category = category; }
int a_category
Definition: Socket.hpp:210

◆ setReceiverFactory()

void anna::comm::Socket::setReceiverFactory ( ReceiverFactory receiverFactory)
inline

Establece la factoria de receptores usada por este socket.

Parameters
receiverFactoryFactoria de receptores desde la que obtener el receptor asociado a este Socket.
168 { a_receiverFactory = &receiverFactory; }
ReceiverFactory * a_receiverFactory
Definition: Socket.hpp:209

◆ setReuseMode()

bool anna::comm::Socket::setReuseMode ( const bool  reuseMode)
noexcept

Activa o desactiva el modo de reuso de la direccion.

Parameters
reuseModetrue si queremos activar el reuso o false en otro caso.
Warning
Solo servira para acelerar el uso del socket una vez que el proceso que lo tenia halla dejado de funcionar.
Returns
El modo de reuso establecido antes de invocar a este metodo.

◆ setTransportFactory()

void anna::comm::Socket::setTransportFactory ( TransportFactory transportFactory)
inline

Establece la capa de transporte usada en este socket.

Warning
Exclusivamente uso interno.
162 { a_transportFactory = transportFactory; }
TransportFactory * a_transportFactory
Definition: Socket.hpp:208

◆ support()

bool anna::comm::Socket::support ( const char *  transportClassName) const

Informa sobre si el socket es capaz de procesar un determinado protocolo de transporte.

Parameters
transportClassNameNormalmente se pasara el resultado del metodo className de alguno de los protocolos definidos, por ejemplo, Transport::className o LiteTransport::className
Returns
true si soporta el nombre de protocolo recibido como parametro o false en otro caso.

Member Data Documentation

◆ a_category

int anna::comm::Socket::a_category
protected

◆ a_domain

const Domain::_v anna::comm::Socket::a_domain
protected

◆ a_fd

int anna::comm::Socket::a_fd
protected

◆ a_isBound

bool anna::comm::Socket::a_isBound
protected

◆ a_localAccessPoint

AccessPoint anna::comm::Socket::a_localAccessPoint
protected

◆ a_receiverFactory

ReceiverFactory* anna::comm::Socket::a_receiverFactory
protected

◆ a_transportFactory

TransportFactory* anna::comm::Socket::a_transportFactory
protected

◆ a_type

const Type::_v anna::comm::Socket::a_type
protected

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