Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


vwait, c'est pratique.
#1
Jusqu'a présent, l'utilisation de vwait était impossible sur les eggdrop (sauf avec le patch vwait pour la version 1.6.19).
Mais vous avez peut-être remarqué dans le changelog de la version 1.6.20 RC2 que toute l'eventloop TCL à été refaite pour permettre une meilleure utilisation de fileevent et de vwait.

vwait permet de faire "attendre" l'interprétation en cours, sans bloquer la détection d'évenements (donc, une autre interprétation peut se lancer pendant ce temps).
Sa syntaxe est: vwait <varname>
vwait va faire attendre TCL jusqu'a ce qu'un set soit effectué sur la variable en question.

On peut en faire de nombreuses utilisations.
Parmi elles on peut noter par exemple:

- Remplacer un timer, en utilisant after
Ca reste beaucoup plus lourd qu'utiliser directement un timer ou after, mais permet de garder tout le contexte de l'execution en cours.
Démonstration:

Code:
[10:00:00] <Artix> .tcl after 10000 {set trigger 1}; vwait trigger; putlog "boo!"; return test
[10:00:05] <Artix> Pendant ce temps, les events continuent de fonctionner
[10:00:10] boo!
[10:00:10] Tcl result: test
- Effectuer une opération simultanée de manière "asynchrone".
L'exemple est très simple: dans certains scripts, vous pouvez avoir besoin de faire un WHOIS sur quelqu'un par exemple.
Gérer ce genre de trucs avec des timers et des procédures qui s'appellent entre elles, c'est vraiment chiant. Avec vwait on peut se débarrasser de tout ça.
On demande à la procédure principale d'envoyer le whois, puis d'attendre une variable avec vwait.
Pendant ce temps - une autre procédure récupère le résultat du WHOIS (par un bind raw, toussa), et le met dans la variable.
Du coup, la procédure principale se relance et à déjà les résultats dans la variable!



Une dernière chose: si vous prévoyez d'integrer vwait, faites bien en sorte que votre script ne fonctionne pas avec les versions précédant la 1.6.20.
Utiliser vwait avec les autres fera bien attendre l'eggdrop, mais bloquera toutes les autres éxecutions, les binds, etc...


Messages In This Thread
vwait, c'est pratique. - by Artix - 21/07/2010, 08:24

Forum Jump:


Users browsing this thread: 1 Guest(s)