1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_comm_Receiver_hpp
10 #define anna_comm_Receiver_hpp
14 #include <anna/xml/Node.hpp>
15 #include <anna/comm/Server.hpp>
23 class ReceiverFactory;
27 Modela la clase que gestiona el tratamiento de los mensajes de red de forma independiente para
36 * Devuelve el nombre lógico de éste receptor.
37 * \return el nombre lógico de éste receptor.
39 const std::string& getName() const throw() { return a_name; }
42 Metodo manejador de los mensajes recibidos por el socket. En entornos MT cada socket invocara
43 a su Receiver asociado de forma totalmente independiente.
45 \param clientSocket Socket cliente por el que ha llegado el mensaje.
46 \param message Ultimo mensaje recibido. El bloque de datos recibido ya ha sido
47 decodificado aplicando las reglas establecidas por la capa de transporte asociado
48 al ClientSocket por el que llega el mensaje.
50 virtual void apply(ClientSocket& clientSocket, const Message& message) throw(RuntimeException) = 0;
53 * Método manejador de la notificación de que el socket va a ser cerrado.
54 * param clientSocket Socket cliente que va a ser cerrado.
56 virtual void eventBreakConnection(const comm::ClientSocket& clientSocket) throw() {;}
59 * Método manejador de la notificación de que el socket va a ser cerrado.
60 * param clientSocket Socket cliente que va a ser cerrado.
62 virtual void eventBreakLocalConnection(const comm::ClientSocket& clientSocket) throw() {;}
65 * Método manejador de la notificación de que se ha creado una nueva conexion
66 * @param server Proceso servidor con el que hemos establecido la conexion.
68 virtual void eventCreateConnection(const Server* server) throw() {;}
71 Devuelve una cadena con toda la informacion relevante de este objeto.
72 \return una cadena con toda la informacion relevante de este objeto.
74 virtual std::string asString() const
76 std::string msg("anna::comm::Receiver { Name: ");
82 Devuelve un nodo XML con la informacion referente a este objeto.
83 \param parent Nodo XML a partir del cual introducir la informacion.
84 \return Un nodo XML con la informacion referente a este objeto.
86 virtual xml::Node* asXML(xml::Node* parent) const throw(RuntimeException) {
87 xml::Node* node = parent->createChild("comm.Receiver");
88 node->createAttribute("Name", a_name);
95 \param name Nombre logico del receiver.
97 Receiver(const char* name) : a_name(name) { ; }
100 Metodo invocado por el ReceiverFactory en el momento de pasar a usar esta instancia.
102 virtual void initialize() throw(RuntimeException) { ; }
107 friend class ReceiverFactory;
110 * Para poner invocar a #initialize en caso de que se asocie de forma directa el receptor
111 * a un anna::comm::ClientSocket.
113 friend class ClientSocket;