Skip to main content

Module transfer

Module transfer 

Source

Structs§

BatchHeader
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.
DecisionBoard
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).
Metadata

Constants§

ACK
CLOSE_CANCEL
code de fermeture QUIC d’une annulation : le pair sait distinguer « annulé » d’une simple erreur réseau
CLOSE_OK
code de fermeture QUIC d’une fin normale de transfert
DECISION_TIMEOUT
délai d’attente de la décision du destinataire (émetteur et récepteur)
REFUSE
réponse du récepteur pour refuser le transfert à la demande d’acceptation

Functions§

collect_entries
handle_incoming_connection
reçoit un lot de fichiers sur cette connexion et remonte la liste des fichiers recus
io_err
is_remote_cancel
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
make_client_endpoint
make_server_endpoint
quinn_to_err
convertit une erreur de lecture quinn en ToolError, en distinguant l’annulation distante (RemoteCancel) des autres erreurs réseau
read_json_line
send_entry
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.
write_json_line
write_quinn_to_err
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