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_RoundRobinDelivery_hpp
10 #define anna_comm_RoundRobinDelivery_hpp
12 #include <anna/comm/Service.hpp>
23 Servicio de reparto de carga mediante un algoritmo RoundRobin, es decir, cada uno de los mensajes enviados tiene como
24 destino uno de los recursos definidos, cuando en el mensaje i-esimo se alcance el final de la lista de recursos
25 disponibles se vuelve a empezar por el primero.
27 class RoundRobinDelivery : public comm::Service {
31 \param name Nombre logico del servicio de reparto de carga.
32 \param isCritical Indica las caracteristicas del reparto de carga. Debe valor \em true si el
33 reparto de carga a crear es critico o \em false en otro caso.
35 RoundRobinDelivery(const char* name, const bool isCritical) :
36 comm::Service(name, isCritical),
40 std::string asString() const throw();
42 xml::Node* asXML(xml::Node* parent) const throw();
45 Metodo que devuelve el nombre completo de este selector de recursos.
46 Para evitar ambiguedades este nombre incluye la lista completa de \em namespaces
47 a los que pertenece la clase.
48 \return Una cadena con el nombre de este selector.
50 static const char* className() throw() { return "anna::comm::RoundRobinDelivery"; }
53 void do_initialize() throw(RuntimeException);
56 //------------------------------------------------------------------------------------
57 // - a_iiserver: iterador que apunta al servidor que debemos usar.
58 //------------------------------------------------------------------------------------
61 comm::Resource* do_apply() throw(RuntimeException);
62 iterator advance() throw();