IX. Algorithmes de l'interpréteur des appels système
Chaque appel système est examiné, avec les changements d'état qu'il peut provoquer :
CONNECT
S'il n'y a pas d'entrée, en créer une, émettre un RFC et entrer dans l'état RFC-SENT.
Si CS = PENDING, parcourir la file et rejeter toutes les requêtes non correspondantes. Si aucune correspondance n'est trouvée, émettre un RFC et entrer dans l'état RFC-SENT. Si une correspondance est trouvée, émettre un RFC et entrer dans l'état OPEN. La transmission peut commencer dès que l'espace tampon a été alloué.
Dans tout autre état, cette commande est illégale.
LISTEN
Si aucune entrée n'existe, en créer une et entrer dans l'état LISTENING.
Si CS = PENDING, informer l'utilisateur et entrer dans l'état RFC-RCVD.
Dans tout autre état, cette commande est illégale.
ACCEPT
Si CS = RFC-RCVD, alors émettre un RFC et entrer dans l'état OPEN. La transmission de données peut avoir lieu dès que l'espace tampon est alloué.
Si CS = ABORT, informer l'utilisateur de la terminaison prématurée de la connexion. Si la file des appels en attente est vide, supprimer l'entrée ; sinon, entrer dans l'état PENDING.
Cette commande ne peut être exécutée légalement dans aucun autre état.
CLOSE
Si CS =
- LISTENING, alors supprimer l'entrée.
- RFC-RCVD, alors émettre un CLS et entrer dans l'état CLS-WAIT.
- ABORT, informer l'utilisateur de la terminaison prématurée de la connexion. Si la file des appels en attente est vide, supprimer l'entrée ; sinon, entrer dans l'état PENDING.
- RFC-SENT, alors émettre un CLS et entrer dans l'état CLS-WAIT.
- OPEN, si nous sommes du côté émission et que la file de données n'est pas vide, ou si un Data-RFNM est encore en attente, entrer dans l'état DATA-WAIT ; sinon, émettre un CLS et entrer dans l'état CLS-WAIT.
- CLS-WAIT, émettre un CLOSE dans cet état est une USER ERROR (erreur de l'utilisateur).
- DATA-WAIT, émettre un CLOSE dans cet état constitue également une séquence illégale.
- RFNM-WAIT, ignorer le CLOSE.
Un CLOSE valide ne peut pas être émis si aucune entrée n'existe, ou si un socket est dans l'état PENDING.
Note: undefined