Grupo ARCO - Universidad de Castilla-La Mancha
Grupo ARCO - Universidad de Castilla-La Mancha
Grupo ARCO - Universidad de Castilla-La Mancha
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
5. DESARROLLO DEL PROYECTO 46<br />
5.4.6. Modificación <strong>de</strong> filtros <strong>de</strong> un suscriptor<br />
Análisis y diseño<br />
Los suscriptores que están interesados en <strong>de</strong>terminados datos pue<strong>de</strong>n cambiar <strong>de</strong> criterio<br />
según la condiciones en un momento <strong>de</strong>terminado. Por ello, el sistema <strong>de</strong>be dar soporte para<br />
po<strong>de</strong>r cambiar los criterios <strong>de</strong> filtrado <strong>de</strong> un suscriptor. De esta manera, los eventos que se<br />
reciben en los suscriptores podrán cambiar según las necesida<strong>de</strong>s <strong>de</strong> estos en <strong>de</strong>terminadas<br />
situaciones.<br />
Implementación<br />
Según el mecanismo que se sigue para realizar una suscripción con filtros, un nuevo canal<br />
es creado con los filtros específicos que se indican en la suscripción. Por medio <strong>de</strong> este canal<br />
es <strong>de</strong>s<strong>de</strong> don<strong>de</strong> realmente el suscriptor recibe los eventos, por lo tanto, es este canal el que<br />
<strong>de</strong>be ser modificado.<br />
Para cambiar el filtro <strong>de</strong>l canal, se aña<strong>de</strong> la operación setFilters. Este método se encarga<br />
<strong>de</strong> cambiar los filtros específicos <strong>de</strong>l canal y modificar su publicador para hacer constar<br />
que el filtro para limitar el transporte <strong>de</strong> datos ha sido cambiado. El canal en el que realmente<br />
está registrado el subscriptor se obtiene al hacer la suscripción, es <strong>de</strong>cir, el método subscribeWithFilters<br />
<strong>de</strong>vuelve el canal creado para, más tar<strong>de</strong>, po<strong>de</strong>r modificar sus filtros.<br />
Esto conlleva cambiar el tipo <strong>de</strong>l objeto <strong>de</strong>vuelto en la función subscribeWithFilters por<br />
Topic*, es <strong>de</strong>cir, un objeto tipo canal.<br />
A<strong>de</strong>más <strong>de</strong> po<strong>de</strong>r cambiar los filtros, también se aña<strong>de</strong> una operación para conocer los filtros<br />
que tiene un canal <strong>de</strong>terminado. Esta operación será getFilters, que <strong>de</strong>vuelve el conjunto<br />
<strong>de</strong> filtros asociado al canal.<br />
En el listado 5.10 se pue<strong>de</strong>n ver las dos operaciones que se aña<strong>de</strong>n en el SLICE y que son<br />
implementadas por la API IceDDS.<br />
FilterSeq getFilters();<br />
void setFilters(FilterSeq filters, TypeCo<strong>de</strong> eventTypeco<strong>de</strong>);<br />
Listado 5.10: Obtención y modificación <strong>de</strong> los filtros asociados a un canal<br />
5.4.7. Operaciones <strong>de</strong>l servicio IceStorm<br />
Análisis y diseño<br />
El mo<strong>de</strong>lo <strong>de</strong> comunicaciones IceDDS <strong>de</strong>be realizar las mismas operaciones que ofrece<br />
el servicio IceStorm a<strong>de</strong>más <strong>de</strong> las <strong>de</strong>scritas anteriormente. Entonces, se <strong>de</strong>ben añadir las<br />
funcionalida<strong>de</strong>s que faltan al mo<strong>de</strong>lo <strong>de</strong> comunicaciones que se <strong>de</strong>sarrolla en el presente<br />
proyecto.<br />
Se usará el servicio IceStorm para <strong>de</strong>legarle todas estas funcionalida<strong>de</strong>s.