Actuellement en test : le code GitHub sera ouvert une fois terminé.

T · Timeout

Structurerefresh

Envoyé quand une requête d'acquisition (A) n'a pas pu obtenir le verrou dans le délai wait — le serveur a abandonné sans l'octroyer (ce n'est pas une erreur).

Notation des octets : op est un caractère ASCII, owner est binaire (u64, big-endian), et key est du texte UTF-8 (longueur variable, notée N dans la structure). Le \n final est 0A. L'en-tête fixe est une valeur binaire et peut contenir 0x0A : il faut donc le consommer d'abord selon son nombre d'octets, avant de chercher le retour à la ligne.

owner est le corrélateur : la valeur envoyée dans la requête, renvoyée telle quelle. C'est par elle que le client identifie de quelle requête ceci est la réponse (Règles de correspondance des réponses).

Flux

Client
Serveur
A · acquisition (key · wait · lease · owner)
détenue → mise en file
le tour n'arrive pas dans les wait secondes
T · timeout
retirée de la file — envoyez un nouveau A pour réessayer
requêteréponse

Au moment où T arrive, cette requête a déjà été retirée de la file, si bien que le verrou ne peut jamais lui être octroyé plus tard. Aucun jeton n'ayant été émis non plus, il n'y a rien à nettoyer — il suffit de réessayer.