X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fcomm%2FReceiverFactory.hpp;h=68bf460c4d15606028c507fb948585700be873a6;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=19578e501b57fd3e5730c192087129a8962636f8;hpb=4e12ac57e93c052f716a6305ad8fc099c45899d1;p=anna.git diff --git a/include/anna/comm/ReceiverFactory.hpp b/include/anna/comm/ReceiverFactory.hpp index 19578e5..68bf460 100644 --- a/include/anna/comm/ReceiverFactory.hpp +++ b/include/anna/comm/ReceiverFactory.hpp @@ -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_ReceiverFactory_hpp @@ -52,10 +24,9 @@ namespace comm { class Receiver; /** - Interfaz que deben cumplir las factorias de receptores. + Interface for receivers factories. - Es muy aconsejable que la implementacion particular de esta clase que use nuestra - aplicacion este basada en el uso de #Recycler. Como muestra el siguiente ejemplo: + Is recommended (performance issues) to use #Recycler as in the following example: \code @@ -68,14 +39,13 @@ class Receiver; private: anna::Recycler a_receivers; - Receiver* do_create () throw () { return a_receivers.create (); } - void do_release (Receiver* receiver) throw () { a_receivers.release (static_cast (receiver)); } + Receiver* do_create () { return a_receivers.create (); } + void do_release (Receiver* receiver) { a_receivers.release (static_cast (receiver)); } }; \endcode - En la mayoria de los casos seria aconsejable usar un instancia de comm::ReceiverFactoryImpl - instanciado con el tipo de receptor usado por nuestra aplicacion. + In most of cases, is recommended to use an comm::ReceiverFactoryImpl instance with the receiver type used in our application. \see Receiver \see ReceiverFactoryImpl @@ -83,81 +53,68 @@ class Receiver; class ReceiverFactory : public Mutex { public: /** - Devuelve el nombre logico de este gestor de receptores. - \return el nombre logico de este gestor de receptores. + Returns the logical name for this receiver factory. + @return logical name for this receiver factory. */ - const std::string& getName() const throw() { return a_name; } + const std::string& getName() const { return a_name; } /** - Crea una instancia del receptor asociado a esta factoria, realiza las comprobaciones - necesarias para optimizar el reuso de instancias de la clase Receiver. + Creates a receiver instance for this factory. Reuse resources when needed. - \return La instancia de un nuevo receiver. - \warning Cada uno de los receptores obtenidos debera ser liberado invocando a #release. + \return The new receiver instance. + \warning All the receivers obtained shall be released by mean #release. */ - Receiver* create() throw(RuntimeException); + Receiver* create() noexcept(false); /** - Libera la instancia del receptor recibido como parametro. Realiza las comprobaciones - necesarias para optimizar el reuso de instancias de la clase Receiver. + Release the receiver instance provided. - \param receiver Instancia del receiver a liberar. - \warning El transporte recibido como parametro debera haberse obtenido mediante #create. + \return The receiver instance to be released. + \warning The parameter should have been obtained by mean #create. */ - void release(Receiver* receiver) throw(); + void release(Receiver* receiver) ; /** - Devuelve una cadena con la informacion relevante sobre esta instancia. - \return una cadena con la informacion relevante sobre esta instancia. + Returns a string with relevant information for this instance. + @return string with relevant information for this instance. */ std::string asString() const - throw() { + { std::string msg("anna::comm::ReceiverFactory { Name: "); msg += a_name; return msg += " }"; } /** - Devuelve un documento XML con la informacion relevante sobre esta instancia. - \param parent Nodo XML del que debe depender el documento generado. - \return un documento XML con la informacion relevante sobre esta instancia. + Returns a XML document with relevant information for this instance. + \param parent XML node from which created data will depend on. + @return a XML document with relevant information for this instance. */ - xml::Node* asXML(xml::Node* parent) const throw(); + xml::Node* asXML(xml::Node* parent) const ; protected: /** - Constructor - \param name Nombre logico de esta factoria de receptores. + Constructor. + \param name Logical name for this receivers factory. */ ReceiverFactory(const char* name); /** - Crea realmente la instancia del receptor asociado a esta factoria, solo sera invocado - en caso de que no haya ninguna otra instancia disponible que pueda ser reusada. + Creates the receiver instance if no other reusable instance is found. This method is + called from a critical section activated for this instance. - La invocacion a este metodo se realiza desde una seccion critica activada sobre esta - instancia. - - Es muy aconsejable que la implementacion particular de este metodo este basada en el - uso de #Recycler. - - \return La instancia de un nuevo receiver. - \warning Cada uno de los receptores obtenidos debera ser liberado invocando a #release. + \return The new receiver instance. + \warning All the receivers obtained shall be released by mean #release. */ - virtual Receiver* do_create() throw() = 0; + virtual Receiver* do_create() = 0; /** - Libera realmente la instancia del receptor recibido como parametro. - - Es muy aconsejable que la implementacion particular de este metodo este basada en el - uso de #Recycler. - - La invocacion a este metodo se realiza desde una seccion critica activada sobre esta - instancia. + Release the receiver provided. This method is called from a critical section activated + for this instance. - \param receiver Instancia del receiver a liberar. + \param The receiver instance to be released. */ - virtual void do_release(Receiver* receiver) throw() = 0; + virtual void do_release(Receiver* receiver) = 0; private: const std::string a_name;