ANNA Suite
2020b
Multipurpose development suite for Telco applications
|
#include <ServerSocket.hpp>
Public Types | |
typedef Recycler< LocalConnection >::iterator | iterator |
Public Member Functions | |
ServerSocket (TransportFactory *transportFactory=NULL, Domain::_v domain=Socket::Domain::Inet, Type::_v type=Socket::Type::Stream) | |
ServerSocket (const INetAddress &localAddress, const bool sharedBind, TransportFactory *transportFactory=NULL) | |
virtual | ~ServerSocket () |
const Millisecond & | getBindDelay () |
BinderSocket * | getBinderSocket () |
bool | isSharedBind () const |
void | setBacklog (const int backlog) |
void | setBindDelay (const Millisecond &bindDelay) |
virtual void | prepare () noexcept(false) |
LocalConnection * | accept () noexcept(false) |
void | release (LocalConnection *localConnection) noexcept(false) |
iterator | begin () |
iterator | end () |
virtual std::string | asString () const |
virtual xml::Node * | asXML (xml::Node *parent) const noexcept(false) |
virtual bool | eventAcceptConnection (const ClientSocket &clientSocket) noexcept(false) |
![]() | |
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 AccessPoint & | getLocalAccessPoint () const |
TransportFactory * | getTransportFactory () const |
ReceiverFactory * | getReceiverFactory () |
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) |
![]() | |
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 LocalConnection * | localConnection (iterator &ii) |
static const char * | className () |
Static Public Attributes | |
static const Millisecond | DefaultBindDelay |
static const int | defaultBacklog = 30 |
Protected Member Functions | |
ServerSocket (const INetAddress &localAddress, const bool sharedBind, Type::_v type, TransportFactory *transportFactory=NULL) | |
![]() | |
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 () |
![]() | |
Safe () | |
Friends | |
class | BinderSocket |
Additional Inherited Members | |
![]() | |
static const char * | asText (const Notify::_v v) |
![]() | |
const Domain::_v | a_domain |
const Type::_v | a_type |
int | a_fd |
AccessPoint | a_localAccessPoint |
bool | a_isBound |
TransportFactory * | a_transportFactory |
ReceiverFactory * | a_receiverFactory |
int | a_category |
Esta clase implementa el servidor de Socket. Un servidor de Socket espera las peticiones de entrada procedentes de la red y realiza las operaciones necesarias para tratar la operacion y posiblemente devolver un resultado al peticionario.
El 'backlog' de un servidor de socket define la longitud maxima que la cola de mensajes pendientes puede alcanzar. Si cliente realiza una peticion mediante una conexion UF_UNIX cuando la cola de mensajes del servidor esta llena recibira un error ECONNREFUSED, aunque normalmente el protocolo subyacente se encarga de retransmitir la peticion un numero indeterminado de veces.
|
inline |
Crea un servidor de socket liberado.
transportFactory | Factoria de protocolos de transporte a usar por este sockets. |
domain | Dominio del socket. |
type | Tipo de socket. |
|
inline |
Crea un servidor de socket conectado a la direccion y puerto indicado y con la longitud de cola maxima indicada.
localAddress | Direccion Local en la que atendera las peticiones. |
transportFactory | Factoria de protocolos de transporte a usar por este sockets. |
sharedBind | true Si puede haber mas de una aplicacion escuchando es esta misma direccion. |
|
virtual |
Destructor.
|
inlineprotected |
Crea un servidor de socket conectado a la direccion y puerto indicado y con la longitud de cola maxima indicada.
transportFactory | Factoria de protocolos de transporte a usar por este sockets. |
localAddress | Puede ser usado para limitar la direccion por la que atendiende peticiones un servidor de socket instalado en una maquina con mas de una direccion. |
sharedBind | true Si puede haber mas de una aplicacion escuchando es esta misma direccion. |
type | Tipo de socket. |
|
noexcept |
Comprueba la conexion establecida y acepta las peticiones. Esta funcin puede bloquear al thread que la invoca mientras no llegue una peticion de apertura de conexion si no hemos establecido el modo no-bloqueante del socket. Ver Socket::setBlockingMode.
Cada uno de los socket obtenidos con este Metodo debe ser liberado con release cuando ya no sean necesarios.
|
virtual |
Devuelve una cadena con la informacion referente a este socket.
Reimplemented from anna::comm::Socket.
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::Socket.
|
inline |
Devuelve un iterador al primer LocalConnection definido.
|
inlinestatic |
|
inline |
Devuelve un iterador al ultimo LocalConnection definido.
|
inlinevirtualnoexcept |
Metodo manejador de evento que permite ajustar el funcionamiento cuando el nucleo de anna.comm notifica que ha detectado una peticion de conexion desde un proceso remoto a un ServerSocket asociado al comunicador. Permite independencia de dicho comunicador y complementa el control de aceptacion (por defecto, se devuelve true para no influir en la implementacion del metodo analogo en el comunicador).
clientSocket | Socket cliente que solicita acceso. |
|
inline |
Devuelve el numero de milisegundos esperado al hacer el bind compartido con este sockets antes de considerar que no se puede atender peticiones en esa direccion.
|
inline |
|
inline |
Devuelve el modo de asociacion de este socket.
|
inlinestatic |
Informa sobre la rotura de una conexion que se creo a partir de un ServerSocket
localConnection | Socket que se acepto sobre el server socket y que se ha roto. Devuelve una referencia al contenido apuntado por el iterador. |
|
virtualnoexcept |
Metodo que debemos invocar una vez que el ServerSocket esta establecido.
|
noexcept |
|
inline |
|
inline |
Establece el numero de milisegundos esperado al hacer el bind con este sockets antes de considerar que no se puede realizar la conexion.
bindDelay | numero de milisegundos esperado al hacer la conexion con este sockets antes de considerar que no se puede realizar la conexion. |
|
friend |
|
static |
Tamao de la cola de mensajes tomado por defecto.
|
static |
numero de milisegundos por defecto que espera antes de dar por fallida una asociacion a una direccion.