Gestion d'événements en C++

Gestion d'événements en C++ - C++ - Programmation

Marsh Posté le 15-07-2006 à 13:40:01    

Voila, je code actuellement un serveur IRC.
 
Pour celui ci, je souhaiterai y mettre une gestion des événements performante afin d'avoir quelque chose de simple à mettre en place.
 
Je voudrais quelque chose qui ressemble le plus possible à du C++, et non pas, du C avec une class...
 
J'ai pensé à quelque chose comme ça, mais je sais pas trop comment coder ça :
 

Code :
  1. bool OnPrivMsg_Before(const Client &, const std::string Destination &, const std::string &Message)
  2. {
  3.   return true;
  4. }
  5. bool OnPrivMsg_After(const Client &, const std::string Destination &, const std::string &Message)
  6. {
  7.   return true;
  8. }


 
ça seraient les fonctions qui seraient appellées lors de l'arrivée d'un message pour un salon ou un autre utilisateur... (sachant que je ferais en sorte, qu'on puisse, bien entendu, associer plusieurs fonctions a un événement).
 
et je voudrais faire queque chose comme ça pour définir un nouvel événement :
 

Code :
  1. /* class Evenement { ... } ; */
  2. Evenement::Register("IrcOnPrivmsg", bool (const Client &, const std::string Destination &, const std::string &Message));


 
biensur, ce code ne compile pas, mais je voudrais faire quelque chose dans cette idée;. c'est a dire, donner un nom a l'événement, et donner en meme temps, le prototype des fonctions appelées par cet event... (2 events, auront des protos différents).
 
et ensuite, pour associer une fonction a un event :  
 

Code :
  1. Evenement::New("IrcOnPrivmsg", OnPrivMsg_Before, OnPrivMsg_After);


 
et finallement, pour appeler les fonctions :  
 

Code :
  1. Evenement::Call_Before("IrcOnPrivmsg" ); // appel des fonction *_Before  
  2. Evenement::Call_After("IrcOnPrivmsg" ); // appel des fonction *_After


 
voila l'idée que j'avais.. mais mon soucis, et que je sais pas si c'est possible de passer un prototype de fonction en parametre.. et comment l'utiliser ensuite....
 
merci d'avance :)
 
 

Reply

Marsh Posté le 15-07-2006 à 13:40:01   

Reply

Marsh Posté le 16-07-2006 à 21:15:17    

je me suis redirigé sur tout autre chose, merci quand meme :)

Reply

Marsh Posté le 17-07-2006 à 22:48:45    

pourrais-tu tout de même donner l'information sur laquelle tu t'es redirigé ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed