Implémentation pas trop mauvaise de l'interface et canal de communication entre client et serveur établie.
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)