pub struct LinkedChainBuilder<'ring> { /* private fields */ }Expand description
Constructeur d’une chaîne d’opérations liées sur un IoUring en mode
staging (cf. module). Emprunte le ring &mut pour toute sa durée (aucune
soumission directe ne peut s’intercaler).
Implementations§
Source§impl LinkedChainBuilder<'_>
impl LinkedChainBuilder<'_>
Sourcepub fn first<F>(self, op: F) -> Result<Self, Errno>
pub fn first<F>(self, op: F) -> Result<Self, Errno>
Premier maillon : op appelle un submit_* normal, mis en attente
(staging). Ne pose aucun drapeau de lien (pas de prédécesseur).
§Errors
L’erreur du submit_* (ex. [Errno::EBUSY] si la SQ/le slab sont pleins) ;
la chaîne est alors rembobinée.
Sourcepub fn then<F>(self, op: F) -> Result<Self, Errno>
pub fn then<F>(self, op: F) -> Result<Self, Errno>
Maillon soft-lié au précédent (IOSQE_IO_LINK posé sur le précédent) :
une erreur de complétion du précédent (-errno, short read inclus)
rompt la chaîne (suivants -ECANCELED).
§Errors
Sourcepub fn then_hard<F>(self, op: F) -> Result<Self, Errno>
pub fn then_hard<F>(self, op: F) -> Result<Self, Errno>
Maillon hard-lié au précédent (IOSQE_IO_HARDLINK posé sur le
précédent) : une erreur de complétion du précédent n’interrompt pas la
chaîne (l’ordre reste garanti).
§Errors
Sourcepub fn with_link_timeout(
self,
spec: TimeoutSpec,
flags: TimeoutFlags,
) -> Result<Self, Errno>
pub fn with_link_timeout( self, spec: TimeoutSpec, flags: TimeoutFlags, ) -> Result<Self, Errno>
Borne dans le temps le maillon précédent via un LINK_TIMEOUT (op 15) :
si le timeout expire avant la fin du maillon, le maillon est annulé
(-ECANCELED) et la chaîne rompue (le timeout complète) ; si le maillon
finit avant, le timeout est annulé. Unique manière sûre d’émettre un
LINK_TIMEOUT (émission isolée refusée, Temps 2c).
§Errors
[Errno::EINVAL] s’il n’y a aucun maillon à borner ; sinon l’erreur du
staging (chaîne rembobinée).
Sourcepub fn submit(self) -> Result<ChainTokens, Errno>
pub fn submit(self) -> Result<ChainTokens, Errno>
Publie la chaîne entière, atomiquement (un seul store-release + un
io_uring_enter). Rend les jetons dans l’ordre de soumission.
§Errors
Les erreurs de IoUring::submit ([Errno::EINTR] remonté tel quel, etc.).
La réservation des slots ayant déjà réussi au staging, l’atomicité de la
chaîne est garantie en amont (jamais de chaîne partielle).