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_DatagramSocket_hpp
10 #define anna_comm_DatagramSocket_hpp
12 #include <anna/comm/ClientSocket.hpp>
19 Esta clase implementa un Socket no orientado a conexion.
21 class DatagramSocket : public ClientSocket {
24 * Indica el uso que tendrá este DatagramSocket, si para recibir o para enviar.
26 enum Mode { ReadOnly, WriteOnly };
29 Crear un Socket no orientado a conexion de un sólo sentido.
31 Los datagram socket definidos como \em Mode \em ReadOnly tienen que ser asociados al
32 comunicador mediante la invocación al método anna::comm::Communicator::attach.
34 Los datagram socket definidos como \em Mode \em WriteOnly tienen que invocar a al
35 método #connect antes de poder ser usados.
37 \param mode Uso que se dará a este DatagramSocket.
38 \param address Dirección en la que enviar o recibir mensajes.
39 \param transportFactory Factoria de protocolos de transporte a usar por este sockets.
40 \warning La factoria de protocolos debe estar disponible mientras el Socket esta activo.
42 DatagramSocket(const Mode mode, const INetAddress& address, TransportFactory* transportFactory = NULL);
45 Devuelve el modo en que fue instanciado este Socket.
46 \return el modo en que fue instanciado este Socket.
48 Mode getMode() const throw() { return a_mode; }
51 Devuelve \em true si el socket fue instancia como sólo-lectura.
52 \return \em true si el socket fue instancia como sólo-lectura.
54 const bool isReadOnly() const throw() { return a_mode == ReadOnly; }
57 Devuelve \em true si el socket fue instancia como sólo-lectura.
58 \return \em true si el socket fue instancia como sólo-lectura.
60 const bool isWriteOnly() const throw() { return a_mode == WriteOnly; }
63 Prepara el socket para enviar a la direccion indicada en el constructor.
65 void connect() throw(RuntimeException);
70 void do_write(const DataBlock&) throw(RuntimeException);
71 int do_read(const char* data, const int maxSize) throw(RuntimeException);