Le moteur collecte par le protocole IRC les informations sur les stats
(LUSERS), les links (LINKS) toutes les 6 minutes grace a un timer. Les
informations sur les channels (LIST) sont collectees toutes les 24 mn (4x6mn).
Les informations sur les utilisateurs sont faites en temps reel et
ne sont pas stockees, car elles sont trop volatiles (IRC est un protocole
temps reel), les utilisateurs se connectent et deconnectent rapidement,
ils peuvent changer de canal de discussion facilement.
Lorsqu'un client netscape par exemple fait une requete HTTP pour chercher un utilisateur, la partie HTTP analyse la requete et cree un Thread, qui se charge de stocker la requete dans une liste du moteur et de lui demander de lancer la requete. Lorsque le moteur a recu la reponse de tous les reseaux, il redirige les resultats sur le bon Thread (il peut y avoir plusieurs requetes a la fois) et met a jour sa liste de requetes. Le Thread qui avait lance la requete genere la page et la renvoie sur le client netscape en format HTML.
De cette facon, une requete lance apres une autre peut arriver avant
la 1ere. il est impossible de bloquer les requetes, si une reponse n'arrive
pas, les autres requetes peuvent toujours continuer. Le TimeOut se chargera
de stopper le Thread qui attend la requete et signifier au client un TimeOut.
Les statistiques sont realisees grace a un timer (Un Thread qui tourne
en permanence et qui lance une methode update() selon un cycle).
A chaque cycle, des commandes differentes sont envoyees (LINKS,LUSERS)
aux serveurs IRC connectes, les moyennes sont effectuees uniquement lorque
tous les reseaux ont repondus (a condition d'etre connectes). Cet aspect
est en cours d'amelioration, qui permettra de donner les stats meme si
tous les reseaux n'ont pas repondus avec un pourcentage de fiabilite (Cf
: futures versions).
Elles ne sont pas correctement redistribuees, du fait que le serveur
IRC n'indique pas pour quelle requete est la reponse. La reponse va au
premier WHO dans la liste des requetes. Le second aura la suite des reponses
quand le premier aura recu un message fin WHO, le troisieme aura la suite
quand le second aura recu un fin WHO etc ...
Ce point va etre ameliore dans les versions suivantes.