Bonjour tout le monde!
J'essaye actuellement de mettre en place la gestion d'exception au sein de mon application. Celle-ci est diviser en 3 parties:
- La bibliothèque coeur (une dll)
- L'interface graphique (écrite en Qt)
- Les plugins (une dll par plugin)
Le coeur et les plugins ne dépendent pas de Qt (et ne doivent pas en dépendre). La GUI et les plugins dépendent du coeur.
Le but est tout simplement de récupérer les exceptions lancées par les plugins et les afficher dans la GUI.
Je me suis donc dis pourquoi pas faire un singleton et un observable qui gère les exceptions au niveau de mon coeur qui me permettra de lancer les exceptions à tous les observateurs attachés.
Côté GUI, j'ai créé un widget qui demande en entrée le message d'erreur et récupère l'état de sortie (si on veut continuer l'exécution du plugin ou pas).
Toujours, côté GUI, j'ai créé un observateur qui observe mon singleton et créé mon widget à chaque fois que la méthode notify() de mon singleton/observable est appelé. Cet observateur est instancié lors de la création de mon interface graphique.
Le problème, c'est que la mémoire entre mon interface graphique et mes plugins n'est pas partagée donc lorsque j'appelle mon singleton dans un plugin, j'obtiens une autre instance que celle présente dans ma GUI.
J'ai regardé un peu du côté de la mémoire partagée mais je n'y connais rien du tout.
Est-ce que quelqu'un aurait une solution (pas trop os-dépendant si possible)?
Merci d'avance!
PS: J'ai pensé à passer en paramètre une instance de ma gestion d'exception lors de l'appel des plugins, mais il faudrait modifier tous les squelettes des fonctions... Donc si je peux éviter, ça serait parfait
Partager