Remove dynamic exceptions
[anna.git] / include / anna / comm / Transport.hpp
index d4d5a29..096bc05 100644 (file)
@@ -1,37 +1,9 @@
-// ANNA - Anna is Not 'N' Anymore
-//
-// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
-//
-// https://bitbucket.org/testillano/anna
-//
-// 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 Google Inc. 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);
 };
 
 }