Grupo ARCO - Universidad de Castilla-La Mancha
Grupo ARCO - Universidad de Castilla-La Mancha
Grupo ARCO - Universidad de Castilla-La Mancha
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.