Projet commun des modules Systèmes Distribués & IHM - 2016/17

Le but du projet commun interfaces homme-machines/spécification des systèmes distribués a pour but d'implémenter un chat entièrement distribué, sans partie serveur et en utilisant le framework de communication vu en TP.

Partie distribuée

Les messages entrés par une personne seront envoyés à tous les participants du chat via une diffusion causale implémentée par le principe des horloges de Mattern simplifiées vu en TD. Il sera également possible de discuter en privé avec une personne en particulier. Dans ce cas là, on utilisera le service de base de communication point à point du framework (sans gérer les contraintes d'ordre cette fois-ci).

Le contexte de faute est un système asynchrone avec crash de processus, sans perte de messages. Vous utiliserez la version non fiable de la couche de communication (paramètre reliable à faux pour l'objet ReliabilitySettings). Vous mettrez également des temps de transits de message très variables permettant de simuler un système asynchrone et de s'assurer du bon fonctionnement de la diffusion causale.

Partie IHM

Au lancement, le logiciel demandera le pseudo de la personne.

La fenêtre principale devra afficher la liste des personnes connectées, permettre d'entrer des messages et afficher la discussion en cours en respectant l'ordre causal d'émission des messages.

Chaque pseudo est affiché avec une couleur particulière parmi une palette fixe de 16 couleurs que vous définirez vous même. Chaque message commence par le pseudo de la personne affiché dans sa couleur. Dans un message, on peut mettre en avant le nom d'un participant en affichant son pseudo avec un @ devant et le pseudo s'affiche avec sa couleur. Exemple :

Roger> j'ai vu @Simone hier soir au bistrot

Si on fait un clic gauche sur un pseudo, que ce soit dans la liste de gauche ou dans un message, on lance une invitation à un message privé avec la personne. Celle-ci reçoit une notification et peut l'accepter ou la refuser. Si elle accepte, une nouvelle fenêtre de dialogue s'ouvre.

Si on fait un clic droit sur un pseudo, cela ouvre un pop-up affichant la palette des 16 couleurs. On peut alors sélectionner une autre couleur pour le pseudo de cette personne (chaque participant gère comme il le veut les couleurs de pseudos, sans lien avec ce que font les autres).

Quand une personne intègre le chat, un message particulier est affiché pour l'annoncer et on lui choisit automatiquement une certaine couleur. Quand une personne quitte le chat ou qu'on a détecté le crash de son processus, un message l'indique également. La liste des pseudos est mise à jour en temps réel en fonction des arrivées et départs.

Evaluation

TODO