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
newService
desaparece.El método
announce
dejará de estar disponible en la interfazMain
para 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
newService
existente 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
announce
cada 10s como máximo.Cada identificación exitosa por parte de un usuario a través de
refreshAuthorization
deberá ir acompañada de un envío denewToken
a 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
revokeToken
al 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
newUser
oremoveUser
en 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
announce
cada 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
addTags
o aremoveTags
.Cada vez que se renombre un fichero por parte de un administrador en una instancia, ésta deberá enviar el mensaje
renameTile
a 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
announce
cada 10s como máximo.El servicio deberá enviar al topic pertinente de manera periódica la lista de
mediaId
disponibles.El servicio deberá enviar siempre un mensaje de
announceFiles
cuando 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.