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 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

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

Saved successfully!

Ooh no, something went wrong!