Remove dynamic exceptions
[anna.git] / include / anna / comm / Delivery.hpp
index 0265b40..64c010a 100644 (file)
@@ -1,37 +1,9 @@
-// ANNA - Anna is Not Nothingness 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_Delivery_hpp
@@ -77,12 +49,12 @@ public:
      Devuelve el nombre del reparto. Coincide con el indicado en el constructor.
      \return el nombre del reparto. Coincide con el indicado en el constructor.
   */
-  const std::string& getName() const throw() { return a_name; }
+  const std::string& getName() const { return a_name; }
 
   /**
      Inicializa el reparto de recursos.
   */
-  void initialize() throw(RuntimeException);
+  void initialize() noexcept(false);
 
   /**
      Devuelve el estado anterior que tenia esta instancia. El resultado de #isAvailable
@@ -90,7 +62,7 @@ public:
      actual de los procesos asociados a este servicio, mientras que este metodo devuelve
      el estado en el que estaban la ultima vez que se hizo una comprobacion.
   */
-  bool wasAvailable() const throw() { return a_isAvailable; }
+  bool wasAvailable() const { return a_isAvailable; }
 
   /*
    * Obtiene el periodo de comprobacion de recuperacion de los recusos que han sido
@@ -98,7 +70,7 @@ public:
    *
    * \return El periodo de comprobacion de recuperacion
    */
-  const Millisecond &getRecoveryTime() const throw() { return a_recoveryTime; }
+  const Millisecond &getRecoveryTime() const { return a_recoveryTime; }
 
   /**
    * Establece el periodo de comprobacion de recuperacion de los recusos que han sido
@@ -106,7 +78,7 @@ public:
    *
    * \param recoveryTime Periodo de comprobacion de recuperacion.
    */
-  void setRecoveryTime(const Millisecond &recoveryTime) throw() { a_recoveryTime = recoveryTime; }
+  void setRecoveryTime(const Millisecond &recoveryTime) { a_recoveryTime = recoveryTime; }
 
   /**
      Comprueba la lista de recursos remotos para comprobar si hay alguno que este disponible
@@ -114,14 +86,14 @@ public:
 
      \return \em true si tiene algun recurso remoto utilizado o \em false en otro caso.
   */
-  virtual bool isAvailable() const throw();
+  virtual bool isAvailable() const ;
 
   /**
      Devuelve la instancia del recurso remoto que debemos usar en esta ocasion.
      @return La instancia del recurso remoto que debemos usar en esta ocasion.
      \warning Antes de invocar a este método la instancia se debe proteger de accesos concurrentes
   */
-  Resource* apply() throw(RuntimeException);
+  Resource* apply() noexcept(false);
 
   /**
      Este metodo sirve a nuestra aplicacion para notificar que el recurso ha dejado de
@@ -130,7 +102,7 @@ public:
      \return \em true si ninguno de los recursos asociados a este reparto de carga estan disponibles o \em false en otro caso.
      \warning Antes de invocar a este método la instancia se debe proteger de accesos concurrentes
   */
-  bool fault(const Resource* resource) throw();
+  bool fault(const Resource* resource) ;
 
   /**
      Este metodo sirve a nuestra aplicacion para que el recurso vuelve a estar disponible.
@@ -138,71 +110,71 @@ public:
      \return \em true si alguno de los recursos asociados a este reparto de carga pasa a estar disponible o \em false en otro caso.
      \warning Antes de invocar a este método la instancia se debe proteger de accesos concurrentes
   */
-  bool recover(const Resource* resource) throw();
+  bool recover(const Resource* resource) ;
 
   /**
      Indica si reparto contiene la referencia a un determinado recurso.
      \return \em true si contiene la referencia al recurso recibido como parametro o \em false
      en otro caso.
   */
-  bool contains(const Resource* resource) const throw();
+  bool contains(const Resource* resource) const ;
 
   /**
      Devuelve un iterador al comienzo de la lista de recursos remotos asociados a este reparto.
      \return Un iterador al comienzo de la lista de recursos remotos asociados a este reparto.
   */
-  iterator begin() throw() { return a_resources.begin(); }
+  iterator begin() { return a_resources.begin(); }
 
   /**
      Devuelve un iterador al comienzo de la lista de recursos remotos asociados a este reparto.
      \return Un iterador al comienzo de la lista de recursos remotos asociados a este reparto.
   */
-  const_iterator begin() const throw() { return a_resources.begin(); }
+  const_iterator begin() const { return a_resources.begin(); }
 
   /**
      Devuelve un iterador al final de la lista de recursos remotos asociados a este reparto.
      \return Un iterador al final de la lista de recursos remotos asociados a este reparto.
   */
-  iterator end() throw() { return a_resources.end(); }
+  iterator end() { return a_resources.end(); }
 
   /**
      Devuelve el numero de recursos asociados a la lista.
      \return El numero de recursos asociados a la lista.
   */
-  int size() const throw() { return a_resources.size(); }
+  int size() const { return a_resources.size(); }
 
   /**
      Devuelve un iterador al final de la lista de recursos remotos asociados a este reparto.
      \return Un iterador al final de la lista de recursos remotos asociados a este reparto.
   */
-  const_iterator end() const throw() { return a_resources.end(); }
+  const_iterator end() const { return a_resources.end(); }
 
   /**
      Devuelve una cadena con la informacion referente a este objeto.
      @return Una cadena con la informacion referente a este objeto.
   */
-  virtual std::string asString() const throw();
+  virtual std::string asString() const ;
 
   /**
      Devuelve un nodo XML con la informacion referente a este objeto.
      \param parent Nodo XML a partir del cual introducir la informacion.
      \return Un nodo XML con la informacion referente a este objeto.
   */
-  virtual xml::Node* asXML(xml::Node* parent) const throw();
+  virtual xml::Node* asXML(xml::Node* parent) const ;
 
   /**
      Devuelve el recurso remoto apuntado por el iterador recibido como parametro.
      \param ii Iterador usado para recorrer los recursos asociados a este reparto.
      \return El recurso remoto apuntado por el iterador recibido como parametro.
   */
-  static Resource* resource(iterator& ii) throw() { return *ii; }
+  static Resource* resource(iterator& ii) { return *ii; }
 
   /**
      Devuelve el recurso remoto apuntado por el iterador recibido como parametro.
      \param ii Iterador usado para recorrer los recursos asociados a este reparto.
      \return El recurso remoto apuntado por el iterador recibido como parametro.
   */
-  static const Resource* resource(const_iterator& ii) throw() { return *ii; }
+  static const Resource* resource(const_iterator& ii) { return *ii; }
 
 protected:
   /**
@@ -219,18 +191,18 @@ protected:
      Conecta el recurso remoto recibido como parametro con este reparto.
      @param resource Instancia del recurso que vamos a registrar en este reparto.
   */
-  void add(Resource* resource) throw(RuntimeException);
+  void add(Resource* resource) noexcept(false);
 
   /**
      Inicializa el reparto de recursos.
   */
-  virtual void do_initialize() throw(RuntimeException) = 0;
+  virtual void do_initialize() noexcept(false) = 0;
 
   /**
      Devuelve la instancia del recurso remoto que debemos que debemos usar en esta ocasion.
      @return La instancia del recurso remoto que debemos usar en esta ocasion.
   */
-  virtual Resource* do_apply() throw(RuntimeException) = 0;
+  virtual Resource* do_apply() noexcept(false) = 0;
 
   /**
      Este metodo sirve a nuestra aplicacion para indicar que no fue posible usar el
@@ -238,32 +210,32 @@ protected:
      \param resource Recurso remoto que ha ocasionado el error.
      \return \em true si ninguno de los recursos asociados a este reparto de carga estan disponibles o \em false en otro caso.
   */
-  virtual bool do_fault(const Resource* resource) throw();
+  virtual bool do_fault(const Resource* resource) ;
 
   /**
      Este metodo sirve a nuestra aplicacion para indicar que ha recuperado la conexion
      con el recurso.
      \param resource Recurso remoto con el que ha recuperado la conexion.
   */
-  virtual bool do_recover(const Resource* resource) throw();
+  virtual bool do_recover(const Resource* resource) ;
 
   /**
      Este metodo sirve a nuestra aplicacion para indicar que ha recuperado la conexion
      con el recurso.
      \param resource Recurso remoto con el que ha recuperado la conexion.
   */
-  virtual bool do_contains(const Resource* resource) const throw();
+  virtual bool do_contains(const Resource* resource) const ;
 
 private:
   std::string a_name;
   Resources a_resources;
   bool a_isAvailable;
-  Millisecond a_timeStamp;
   Millisecond a_recoveryTime;
+  Millisecond a_timeStamp;
 
-  bool unsafe_recover(const Resource* resource) throw();
+  bool unsafe_recover(const Resource* resource) ;
 
-  static bool internalErrorDetected(const Resource* resource) throw();
+  static bool internalErrorDetected(const Resource* resource) ;
 };
 
 }