Aller au contenu

Contrôler La Mainloop D'un Vd


jjacques68

Messages recommandés

Hello tous,

 

petite question sans encore avoir trouvé de réponses... ou mal cherché -_-

 

Dans un VD, le code saisi dans la MainLoop est exécuté toutes les 3-4 secondes.

Mais si celui-ci plante (pour diverse raison, dans mon cas une VG qui n'a pas été mise à  jour).

 

Comment se comporte la MainLoop ?

 

Est ce qu'elle se relance toute seule après les 3-4 secondes ?

 

ou comme dans les scènes avec une loop, celle-ci s'arrête ?

 

J'ai du mal à  le vérifier car la fenêtre de debug de la MainLoop semble ne pas être en temps réel (vu qu'il faut cliquer sur "démarrer"...)

 

Et peut-on demander de relancer le MainLoop d'un VD ??? en lua dans une scène ?

 

(ça me paraît étrange comme question :huh: ...)

 

 

Lien vers le commentaire
Partager sur d’autres sites

La Main Loop d'un VD démarre immédiatement après la sauvegarde du VD, ou après le boot de la box.

C'est une boucle infinie avec un sleep() forcé de 3 secondes

 

Donc elle fonctionne indéfiniment, sauf en cas de plantage.

Le plantage peut être vu par un message d'information dans la débug, ou parfois pas.... auquel cas c'est bien difficile de déterminer si cela toujours toujours. C'est la raison pour laquelle j'affiche toujours un message signalant le bon fonctionnement à  intervalle régulier.

Ainsi mon watchdog pour déterminer si la Main Loop est toujours vivante ou morte (auquel cas on la redémarre).

 

Enfin, pour voir le debug, il faut cliquer sur le bouton "Démarrer".... celui-ci porte très mal son nom, car il ne démarre pas la main loop, mais simplement l'affichage du debug. C'est idiot mais c'est ainsi.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

@Lazer :

 

Je me suis mis à  étudier ton watchdog... beau boulo !!

 

Petite question,

 

Dans la fonction restart, visiblement, tu fais un GET vers l'id du VD ou de la scène suivi immédiatement d'un PUT avec exactement le même chemin !!!

 

J'ai essayer de ne faire que la requête GET sans la PUT et vis versa, mais mon VD ne redémarre pas. Il faut qu'il y a ait les 2 !!!

 

J'ai presque tout compris sauf ça !!! :15: tu peux m'expliquer ?

Lien vers le commentaire
Partager sur d’autres sites

Le GET puis le PUT fait exactement la même chose que l'interface Web :

- GET = chargement du module virtuel

- PUT = enregistrement du module virtuel

 

L'enregistrement a pour effet de (re)-démarrer le module virtuel.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Ok compris.

Et bien ça fonctionne bien. Merci !!

D'après le debug du watchdog, c'est juste la mainloop d'un vd qui est relancé environ 2 fois par jour.

Et ça je pense que ça vient d'une VG qu'il interroge toutes les 3 secondes et celle-ci doit être mise àjour àun même moment.

Donc plantage certain car retour nul pour la VG.

il faut que je rajoute un "if VG ~= nil then " dans le code du VD...

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...