Grupo ARCO - Universidad de Castilla-La Mancha
Grupo ARCO - Universidad de Castilla-La Mancha
Grupo ARCO - Universidad de Castilla-La Mancha
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
5. DESARROLLO DEL PROYECTO 38<br />
struct VariableTypeCo<strong>de</strong> {<br />
string variableName;<br />
string variableType;<br />
};<br />
sequence TypeCo<strong>de</strong>;<br />
Listado 5.5: Tipo <strong>de</strong> código <strong>de</strong> los filtros<br />
DataDissector<br />
<strong>La</strong> clase DataDissector se utiliza internamente como un objecto que contiene la información<br />
necesaria <strong>de</strong> los filtros <strong>de</strong> un canal. Esta clase proporciona un método que<br />
comprueba que los valores <strong>de</strong> los datos enviados puedan circular por el canal, verificándolos<br />
en los filtros indicados en la creación <strong>de</strong>l canal.<br />
A<strong>de</strong>más <strong>de</strong> los componentes anteriores, la batería <strong>de</strong> pruebas aña<strong>de</strong> las siguientes características:<br />
Creación <strong>de</strong> un canal teniendo en cuenta los filtros indicados junto con el tipo <strong>de</strong> datos<br />
<strong>de</strong> los eventos que manejará el canal.<br />
Es necesario la realización <strong>de</strong> la clase Publisher ya que será la encargada <strong>de</strong> <strong>de</strong>cidir<br />
si un evento pue<strong>de</strong> ser enviado al canal, utilizando para ello una comprobación <strong>de</strong><br />
los filtros <strong>de</strong>l canal en el que se publica. <strong>La</strong> clase Publisher hereda <strong>de</strong> Blobject e<br />
implementará el método ice_invoke. Todas las llamadas remotas al sirviente serán<br />
manejadas a través <strong>de</strong> la función ice_invoke. Es en esta función don<strong>de</strong> se hace la<br />
comprobación para validar que los valores recibidos concuerdan con los filtros especificados,<br />
en este caso, en el canal.<br />
Para una mayor fiabilidad en los datos enviados, en la creación <strong>de</strong>l canal filtrado se comprueba<br />
que el tipo <strong>de</strong> código especificado y los filtros indicados coinci<strong>de</strong>n.<br />
En en listado 5.6 se pue<strong>de</strong> ver la especificación <strong>de</strong>l slice con todos los componentes añadidos<br />
en esta iteración.<br />
module DDS {<br />
struct VariableTypeCo<strong>de</strong> {<br />
string variableName;<br />
string variableType;<br />
};<br />
sequence TypeCo<strong>de</strong>;<br />
sequence FilterSeq;<br />
interface Topic {<br />
Object∗ getPublisher();<br />
Object∗ subscribeAndGetPublisher(Object∗ subscriber);<br />
};<br />
interface TopicManager {