Servicios y cliente#
En esta sección se describirán los cambios más relevantes que deberán introducirse en los servicios y en el cliente de la práctica.
Servicio principal#
El método
newServicedesaparece.El método
announcedejará de estar disponible en la interfazMainpara estarlo en la interfazAnnouncement.En lugar de recibir los anunciamientos de manera individual, los recibirá subscribiéndose al topic IceStorm adecuado.
Además de recibir anunciamientos, también deberá enviarlos para que el resto de servicios y los clientes puedan descubrir su proxy.
El tiempo de espera antes de eliminar un servidor por no anunciarse debidamente pasa de 30s a 10s.
No se considera necesario el mensaje de
newServiceexistente en la versión anterior.
Servicio de autenticación#
El servicio deberá subscribirse al canal de anunciamientos de servicios, de modo que sólo aquellos que se estén anunciado correctamente se considerarán servicios válidos.
El servicio se anunciará a ese mismo canal de eventos, invocando el método
announcecada 10s como máximo.Cada identificación exitosa por parte de un usuario a través de
refreshAuthorizationdeberá ir acompañada de un envío denewTokena través del canal de eventos dedicado a la comunicación entre instancias de este tipo de servicio.Todos los tokens de usuario, ya sean generados por la propia instancia o recibidos a través del topic de IceStorm deberán ser revocados cada 2 minutos.
Cuando un token expire, todas las instancias enviarán el
revokeTokenal topic de IceStorm.Cuando se cree o se elimine a un usuario en una instancia, ésta deberá notificar al resto a través de una llamada a
newUseroremoveUseren el topic de IceStorm, según corresponda.En todo caso, cualquier mensaje que se reciba a través del topic de comunicación de servicios de autenticación incluye un
serviceId, que deberá ser comprobado como un identificador válido.
Servicio de catálogo#
El servicio deberá subscribirse al canal de anunciamientos de servicios, de modo que sólo aquellos que se estén anunciado correctamente se considerarán servicios válidos.
El servicio se anunciará a ese mismo canal de eventos, invocando el método
announcecada 10s como máximo.Cada actualización en los tags de un determinado usuario deberá ser enviada al resto de instancias a través del topic IceStorm pertienente, con una llamada a
addTagso aremoveTags.Cada vez que se renombre un fichero por parte de un administrador en una instancia, ésta deberá enviar el mensaje
renameTilea través del topic IceStorm adecuado.El servicio se deberá subscribir al topic donde los servidores de archivos anunciarán sus archivos disponibles periódicamente, actualizando la disponibilidad en base al proxy al servicio descubierto a través del canal de anunciamientos.
En todo caso, cualquier mensaje que se reciba a través de un topic de comunicación incluye un
serviceId, que deberá ser comprobado como un identificador válido.
Servicio de ficheros#
El servicio deberá subscribirse al canal de anunciamientos de servicios, de modo que sólo aquellos que se estén anunciado correctamente se considerarán servicios válidos.
El servicio se anunciará a ese mismo canal de eventos, invocando el método
announcecada 10s como máximo.El servicio deberá enviar al topic pertinente de manera periódica la lista de
mediaIddisponibles.El servicio deberá enviar siempre un mensaje de
announceFilescuando reciba alguna modificación por parte de un administrador (tanto añadir como eliminar un archivo).
Cliente#
El cliente deberá descubrir el servicio principal a través del topic de IceStorm de anunciamientos.
En modo administrador, el cliente deberá ser capaz de subscribirse a cualquiera de los canales de eventos descritos en el apartado anterior y mostrar por pantalla, de un modo legible, los eventos que se vayan recibiendo.