en-tête de lot envoyé par l’émetteur sur le premier flux de la connexion :
le récepteur connaît le transfer_id, le total du lot, l’émetteur et la
liste des fichiers à l’avance, afin d’afficher la demande d’acceptation et
la même progression globale que l’émetteur dès le premier fichier. sender
et files sont tolérants (serde default) pour rester compatibles avec un
ancien émetteur qui n’envoie pas ces champs.
registre des demandes d’acceptation en attente : le récepteur y dépose un
canal oneshot sous le transfer_id, et la commande respond_transfer le
résout quand l’utilisateur clique sur accepter/refuser. auto_accept permet
aux tests de sauter la validation (comportement historique).
je détecte si une erreur de lecture quinn correspond à une annulation
distante : soit un flux reset par l’émetteur (arrêt utilisateur), soit une
connexion fermée avec le code CLOSE_CANCEL
envoie un fichier ou dossier dans la connexion QUIC établie : les paquets
sont fiables grâce à QUIC (pas de retry applicatif), je copie le contenu en
blocs et je signale la progression via l’interface UI.
convertit une erreur d’écriture quinn en ToolError, en distinguant
l’annulation distante (connexion fermée avec CLOSE_CANCEL) des erreurs
réseau : sans ça, un write_all qui échoue quand le récepteur annule serait
signalé comme une erreur au lieu d’une annulation