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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5. DESARROLLO DEL PROYECTO 42<br />

Implementación<br />

<strong>La</strong> batería <strong>de</strong> pruebas implementadas para esta iteración hacen que se necesite la implementación<br />

<strong>de</strong> una nueva operación para que el suscriptor pueda especificar que se quiere<br />

suscribir a un <strong>de</strong>terminado canal con unos filtros establecidos. A<strong>de</strong>más, se aña<strong>de</strong> la funcionalidad<br />

<strong>de</strong> po<strong>de</strong>r cancelar una suscripción <strong>de</strong> un canal.<br />

Como el formato <strong>de</strong> los filtros se ha <strong>de</strong>finido en iteraciones anteriores, solamente hace falta<br />

la implementación <strong>de</strong>l propio método que es necesario. De esta manera se aña<strong>de</strong> al SLICE <strong>de</strong>l<br />

sistema como la función subscribeWithFilters quedando <strong>de</strong>finido como se muestran en<br />

el listado 5.8.<br />

module DDS {<br />

};<br />

struct VariableTypeCo<strong>de</strong> {<br />

string variableName;<br />

string variableType;<br />

};<br />

sequence TypeCo<strong>de</strong>;<br />

sequence FilterSeq;<br />

exception FilterError {<br />

string msg;<br />

};<br />

interface Topic {<br />

Object∗ getPublisher();<br />

Object∗ getFilteredPublisher(string publisherName, FilterSeq filters,<br />

TypeCo<strong>de</strong> eventTypeco<strong>de</strong>) throws<br />

FilterError;<br />

};<br />

Object∗ subscribeAndGetPublisher(Object∗ subscriber);<br />

Object∗ subscribeWithFilters(Object∗ subscriber, FilterSeq filters,<br />

TypeCo<strong>de</strong> eventTypeco<strong>de</strong>) throws FilterError;<br />

void unsubscribe(Object∗ subscriber);<br />

interface TopicManager {<br />

Topic∗ createTopic(string name);<br />

Topic∗ createFilteredTopic(string name, FilterSeq filters,<br />

TypeCo<strong>de</strong> eventTypeco<strong>de</strong>);<br />

};<br />

Listado 5.8: SLICE para el mo<strong>de</strong>lo <strong>de</strong> comunicaciones DDS con ZeroC Ice<br />

El mecanismo que se sigue en la operación suscribir con filtros es el siguiente:<br />

1. Se crea un nuevo canal indicando un nuevo nombre y los filtros que se indican en la<br />

suscripción.<br />

2. Se aña<strong>de</strong> el nuevo canal creado al adaptador <strong>de</strong> objetos <strong>de</strong>l sistema.

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

Saved successfully!

Ooh no, something went wrong!