X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fcomm%2FTransport.hpp;h=096bc05266509e617a1803b77b261b2923f23cb6;hb=e14f6ba5183403d7bbf589ef87b0643b12a0f72c;hp=53f0471baa6282e31e72a84e73b59805ce6ea2d6;hpb=39033fd99e58e994a5e98c1060dcc79e0d81f9c9;p=anna.git diff --git a/include/anna/comm/Transport.hpp b/include/anna/comm/Transport.hpp index 53f0471..096bc05 100644 --- a/include/anna/comm/Transport.hpp +++ b/include/anna/comm/Transport.hpp @@ -1,37 +1,9 @@ -// ANNA - Anna is Not Nothingness Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// http://redmine.teslayout.com/projects/anna-suite -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of the copyright holder nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: eduardo.ramos.testillano@gmail.com -// cisco.tierra@gmail.com +// ANNA - Anna is Not Nothingness Anymore // +// // +// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo // +// // +// See project site at http://redmine.teslayout.com/projects/anna-suite // +// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE // #ifndef anna_comm_Transport_hpp @@ -70,6 +42,14 @@ class Message; sincronizarse nunca mas. */ class Transport { + + static const int MinOverQuotaSize = 512; + + int a_overQuotaSize; + Message* a_inputMessage; + + static Message* nullInputMessage() noexcept(false); + public: /** Maximum number of bytes kept by each ClientSocket without identifying @@ -85,7 +65,7 @@ public: /** Returns true if the transport layer has a timming control system activated. */ - bool enableTimeout() const throw() { return a_enableTimeout; } + bool enableTimeout() const { return a_enableTimeout; } /** Activates the timming control system for the ClientSocket which were created @@ -93,17 +73,17 @@ public: is detected in a time interval. \see Communicator::setTimeout. */ - void activateTimeout() throw() { a_enableTimeout = true; } + void activateTimeout() { a_enableTimeout = true; } /** Deactivates the timming control system for the ClientSocket which were created through this transport layer. */ - void deactivateTimeout() throw() { a_enableTimeout = false; } + void deactivateTimeout() { a_enableTimeout = false; } // Internal use: returns associated input message - Message* getInputMessage() throw(RuntimeException) { + Message* getInputMessage() noexcept(false) { return (a_inputMessage == NULL) ? nullInputMessage() : a_inputMessage; } @@ -111,7 +91,7 @@ public: Returns the number of bytes reserved by this protocol for the intermediate buffer. @return number of bytes reserved by this protocol for the intermediate buffer. */ - int getOverQuotaSize() const throw() { return a_overQuotaSize; } + int getOverQuotaSize() const { return a_overQuotaSize; } /** Establece el numero de bytes que puede mantener este procotolo para cada uno de los @@ -121,7 +101,7 @@ public: \param overQuotaSize Numero de maximo de bytes que podemos mantener en la memoria intermedia. */ - void setOverQuotaSize(const int overQuotaSize) throw() { a_overQuotaSize = (overQuotaSize >= MinOverQuotaSize) ? overQuotaSize : MinOverQuotaSize; } + void setOverQuotaSize(const int overQuotaSize) { a_overQuotaSize = (overQuotaSize >= MinOverQuotaSize) ? overQuotaSize : MinOverQuotaSize; } /** Debe calcular el tamao previsto del mensaje actual. @@ -139,7 +119,7 @@ public: longitud del mensaje recibido y lanza una excepcion en este metodo el ClientSocket activara los sistemas de recuperacion, si es posible. */ - virtual int calculeSize(const DataBlock& dataBlock) throw(RuntimeException) = 0; + virtual int calculeSize(const DataBlock& dataBlock) noexcept(false) = 0; /** Debe establecer el modo en que el protocolo va a verificar que el mensaje obtenido @@ -155,7 +135,7 @@ public: \return Un bloque de memoria que contiene el mensaje recibido codificado segn las reglas del protocolo este protocolo de transporte */ - virtual const Message* decode(const DataBlock& message) throw(RuntimeException) = 0; + virtual const Message* decode(const DataBlock& message) noexcept(false) = 0; /** Debe establecer la forma en el protocolo va a preparar el envio a la capa de transporte. @@ -168,13 +148,13 @@ public: \warning De no indicarse ninguna otra implementacin devolvera el mensaje tal y como sea recibido. */ - virtual const DataBlock& code(Message& message) throw(RuntimeException) = 0; + virtual const DataBlock& code(Message& message) noexcept(false) = 0; /** Metodo que inicializa el estado de esta capa de transporte. Sera invocado automaticamente por el nucleo anna.comm. */ - virtual void clear() throw() { a_forCode.clear(); } + virtual void clear() { a_forCode.clear(); } protected: DataBlock a_forCode; /**< Bloque de memoria usado para guardar el contenido de la codificacion */ @@ -196,16 +176,11 @@ protected: Establece la instancia del mensaje asociada a este transporte. \param inputMessage Instancia del mensaje a asociar. */ - void setInputMessage(Message* inputMessage) throw() { a_inputMessage = inputMessage; } + void setInputMessage(Message* inputMessage) { a_inputMessage = inputMessage; } private: - static const int MinOverQuotaSize = 512; - int a_overQuotaSize; - Message* a_inputMessage; bool a_enableTimeout; - - static Message* nullInputMessage() throw(RuntimeException); }; }