Bonjour,
Je développe actuellement une application qui va venir interagir avec bon nombre de fichiers, dont certains situés sur un réseau.
Mon problème c’est que je ne trouve pas de solution propre pour tester l’accessibilité d’un fichier sur le réseau en mode asynchrone. Toutes les méthodes que j’ai essayé sont synchrones et donc bloquantes (avec des temps de traitement variable à chaque fois ).
Je sais que le principal problème est bien évidemment la mise en place du réseau ou je travaille, mais malheureusement je ne peux pas y remédier :(.
J’ai déjà testé plusieurs choses :
1) IOCP avec la méthode ReadFile
Le problème avec cette méthode, c’est que pour utiliser ReadFile, il faut au préalable créer un handle de fichier avec la méthode CreateFile (qui elle n’est pas asynchrone :() Donc pour un fichier non accessible, la méthode CreateFile va mouliner dans le vide un certain nombre de temps.
2) std::filesystem
J’ai essayé plusieurs méthodes avec la bibliothèque de gestion de fichiers, dont la méthode Exists, mais une nouvelle fois, l’opération est encore synchrone.
3) std::future, std::promise, std::async
J’ai aussi essayé plusieurs méthodes de la bibliothèque de gestion d’opérations asynchrones, mais une nouvelle fois, les résultats n’ont pas été concluants !
Conclusion :
Au vu de tous ces échecs, j’ai vraiment l’impression que ce genre de cas (une demande d’accès vers un fichier sur le réseau) n’est pas pris en compte ou alors n’est pas censé arriver, ce qui expliquerait le manque de solution pour réaliser cela ?
Deuxième conclusion :
Je suis totalement à côté de la plaque, et il existe bien une solution !
N’hésitez pas à proposer votre aide !
Merci d’avance !