23.04.2015 Views

Grupo ARCO - Universidad de Castilla-La Mancha

Grupo ARCO - Universidad de Castilla-La Mancha

Grupo ARCO - Universidad de Castilla-La Mancha

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!