Skip to content

Implémentation pas trop mauvaise de l'interface et canal de communication entre client et serveur établie.

Nathan Menny requested to merge 30-revoir-les-loggers into main

Sur l'interface, on peut maintenant :

  • choisir le graphique à afficher
  • mettre à jour automatiquement les infos à chaque nouvelle année
  • afficher les logs que le serveur envoi sans débordements hors de l'interface

Maintenant, si l'on veut que les agents puissent afficher des choses il faut faire les changements suivants :

1. Ajout de loggers dans les agents (cliquer pour voir plus)

La simulation gère un "objet" Loggers qui permet d'afficher aussi bien les données sur la console (avec un ConsoleLogger) que de les échanger avec le client (à l'aide d'un SocketLogger).

Lors de sa création, la simulation crée un nouveau Loggers et lui affecte un ConsoleLogger et lorsqu'un client arrive, le serveur ajoute un SocketLogger; l'idée c'est que tous les agents partagent ce même "objet" loggers afin qu'ils envoient tous les infos au même endroit.

Il faut donc :

  • que les agents (Entreprise, Employé et Recrutement) possèdent, dans leur structure, un pointeur sur un loggers ;
  • que dans leur constructeur, ils prennent un pointeur sur un loggers ;
  • que la simulation passe l'adresse de son loggers (simulation.logger) à son entreprise (qui le passera à son tour à tous ses employés) et à son recrutement.
2. Logguer les infos (cliquer pour voir plus)

Maintenant que tous les agents ont accès à un loggers, il leur suffit de faire appel aux méthodes associées (voir le fichier utils/logger/loggers.go pour toutes les méthodes) pour afficher des infos à la console et sur l'interface.

Pour l'entreprise, elle doit faire un log spécial à chaque nouvelle année. Ce log est de type LOG_GLOBALE et doit transmettre comme message une structure agt.SituationActuelle contenant les infos actuelles de l'entreprise.

Description rapide des loggers Les loggers permettent d'envoyer les mêmes messages à plusieurs destinations : à la console (ConsoleLogger), dans un fichier (FileLogger) ou sur un websocket (SocketLogger).

Afin de distinguer les différents types de log que l'on peut faire, le type LogType a été défini (voir utils/logger/logType.go et aussi agt/types.go). Voici les différents types et ce à quoi ils servent :

LogType Utilisation
INFO Donner une information générale (surtout utilisé en interne du package logger)
Err Afficher une erreur
LOG_AGRESSION Log les évènements en rapport avec les agressions
LOG_DEPART Log les évènements en rapport avec les départs
LOG_RECRUTEMENT Log les évènements en rapport avec le recrutement
LOG_ENTREPRISE Log généraux de l'entreprise
LOG_EVENEMENT Logs les évènements spéciaux (teambuilding, ...)
LOG_GLOBALE Log les infos en fin d'année (en passant comme message de log un structure SituationActuelle (voir agt/msgTypes.go)

Closes #30 (closed) #6 (closed) #16 (closed)

Edited by Nathan Menny

Merge request reports