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 40<br />
publicadores habrá que indicar, a<strong>de</strong>más <strong>de</strong>l filtrado que se quiere hacer en un <strong>de</strong>terminado<br />
publicador, los filtros propios <strong>de</strong>l canal en que se <strong>de</strong>sea publicar.<br />
Una particularidad que no se ha tenido en cuenta hasta este momento es la comprobación<br />
<strong>de</strong> que las expresiones que <strong>de</strong>finen los filtros sean proporcionadas <strong>de</strong> la manera correcta, es<br />
<strong>de</strong>cir, con la estructura que se <strong>de</strong>fine en la iteración anterior: “NombreVariable operador/es(tabla<br />
5.1) valor/es”.<br />
Implementación<br />
<strong>La</strong> colección <strong>de</strong> pruebas para esta nueva funcionalidad exige la creación <strong>de</strong> una nueva<br />
operación cuyos parámetros son un nombre que i<strong>de</strong>ntifique unívocamente al publicador <strong>de</strong><br />
un <strong>de</strong>terminado canal en el dominio <strong>de</strong>l sistema, los filtros que el publicador utilizará para<br />
enviar sólo ciertos eventos y el tipo que tienen los datos que se envían.<br />
El listado 5.7 muestra el SLICE que se <strong>de</strong>fine en este punto <strong>de</strong>l <strong>de</strong>sarrollo <strong>de</strong>l proyecto.<br />
Como se pue<strong>de</strong> observar en este listado, se introduce el lanzamiento <strong>de</strong> la excepción FilterError<br />
mediante la cual se indica un error en la <strong>de</strong>finición <strong>de</strong> un cierto filtro y a<strong>de</strong>más, en<br />
el mensaje <strong>de</strong>l error se especifica la manera correcta <strong>de</strong> <strong>de</strong>finir esa expresión.<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 />
Object∗ subscribeAndGetPublisher(Object∗ subscriber);<br />
};<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.7: SLICE para el mo<strong>de</strong>lo <strong>de</strong> comunicaciones DDS con ZeroC Ice