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.
Estudio IceStorm<br />
E<br />
Durante la fase <strong>de</strong>l proyecto en la cual se realiza un aprendizaje <strong>de</strong>l middleware ZeroC Ice<br />
y en particular <strong>de</strong>l servicio IceStorm, se realizó una comunicación entre un subscriptor y un<br />
publicador pero con la particularidad <strong>de</strong> que el sirviente sea <strong>de</strong> un <strong>de</strong>terminado tipo.<br />
Esto asegura que los suscriptores serán <strong>de</strong> un tipo <strong>de</strong>terminado, por lo que la información<br />
que maneja el canal pue<strong>de</strong> ser manipulada atendiendo a dicho tipo.<br />
<strong>La</strong> aplicación <strong>de</strong> este comportamiento al mo<strong>de</strong>lo <strong>de</strong> comunicaciones <strong>de</strong>sarrollado en este<br />
proyecto conllevaría a asegurar los tipos <strong>de</strong> datos que esperan los suscriptores, así como los<br />
datos que envían los publicadores. Por lo tanto, no sería necesario comunicar al canal el tipo<br />
<strong>de</strong> datos que manejará.<br />
E.1.<br />
Implementación<br />
Para conseguir este comportamiento se cuenta con un componente que actúa como intermediario<br />
(Delegate) entre los suscriptores/publicadores y el servicio IceStorm. Este componente<br />
es el que garantiza que los suscriptores serán <strong>de</strong> un tipo específico. En el listado E.1<br />
se muestra las interfaces que entran en juego en este sistema. <strong>La</strong> interfaz Listener es el sirviente<br />
y la interfaz ASDA es la que implementa el componente que actúa <strong>de</strong> intermediario.<br />
module ASD {<br />
interface Listener {<br />
void adv(string name);<br />
};<br />
interface ASDA {<br />
void addListener(ASD::Listener∗ listener);<br />
Listener∗ getPublisher();<br />
};<br />
};<br />
Listado E.1: Interfaces utilizadas para establecer un <strong>de</strong>terminado tipo <strong>de</strong> suscriptor)<br />
En el listado E.2 se muestra la implementación <strong>de</strong> la interfaz ASDA y la clase Delegate.<br />
Aquí, se crea el canal que será el que establezca la comunicación entre publicadores<br />
y suscriptores. <strong>La</strong> operación addListener se encarga <strong>de</strong> realizar la suscripción al canal<br />
89