Remove dynamic exceptions
[anna.git] / include / anna / comm / internal / LocalConnection.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
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 //
7
8
9 #ifndef anna_comm_internal_LocalConnection_hpp
10 #define anna_comm_internal_LocalConnection_hpp
11
12 namespace anna {
13
14 namespace xml {
15 class Node;
16 }
17
18 namespace comm {
19
20 class ServerSocket;
21 class ClientSocket;
22
23 namespace handler {
24 class ServerSocket;
25 }
26
27 /**
28    Implementa los socket locales, es decir, conexiones aceptadas por los ServerSocket que
29    estan activos en nuestra aplicacion.
30 */
31 class LocalConnection {
32 public:
33   /**
34      Constructor.
35   */
36   LocalConnection() : a_serverSocket(NULL), a_clientSocket(NULL) {;}
37
38   /**
39      Devuelve el servidor de socket a partir del cual se cre este socket cliente.Puede ser NULL si este
40      socket cliente no est�asociado a ningn servidor de sockets.
41      \return El servidor de socket a partir del cual se cre este socket cliente.
42   */
43   ServerSocket* getServerSocket() const { return a_serverSocket; }
44
45   /**
46      Devuelve el socket cliente  asociado a esta conexion. Puede ser NULL si la conexion no ha sido establecida.
47      \return El socket cliente asociado a esta conexion.
48   */
49   ClientSocket* getClientSocket() { return a_clientSocket; }
50
51   /**
52      Devuelve una cadena con la informacin referente a este socket.
53      \return Una cadena con la informacin referente a este socket.
54   */
55   std::string asString() const ;
56
57   /**
58      Devuelve un nodo XML con la informacin referente a este objeto.
59      \param parent Nodo XML a partir del cual introducir la informacin.
60      \return Un nodo XML con la informacin referente a este objeto.
61   */
62   xml::Node* asXML(xml::Node* parent) const noexcept(false);
63
64   /**
65      Devuelve el nombre logico de esta clase.
66      \return el nombre logico de esta clase.
67   */
68   static const char* className() { return "anna::comm::LocalConnection"; }
69
70 private:
71   ServerSocket* a_serverSocket;
72   ClientSocket* a_clientSocket;
73
74   void setServerSocket(ServerSocket* serverSocket) { a_serverSocket = serverSocket; }
75   void setClientSocket(ClientSocket* clientSocket) { a_clientSocket = clientSocket; }
76
77   friend class ServerSocket;
78   friend class handler::ServerSocket;
79 };
80
81 }
82 }
83
84 #endif
85