[Résolu] - NSStream et TimeOut

skimpyskimpy Membre
mai 2013 modifié dans API AppKit #1

Bonjour,


 


J'utilise la classe NSStream et ses sous-classes NSInputStream et NSOutputStream pour me connecter à  un serveur.


Lorsque j'ouvre un flux et que le serveur ne répond pas, le delegate me retourne l'event NSStreamEventErrorOccurred au bout de 75 sec (ce qui est assez long pour prévenir l'utilisateur et lui dire que la connexion a échoué).


 


Je pensais rajouter à  l'ouverture du flux une boucle de ce type :



NSDate *start = [NSDate date];
BOOL isStreamOpen = YES;

while ([self.inStream streamStatus] != NSStreamStatusOpen || ![self.outStream hasSpaceAvailable]) {
if (abs([start timeIntervalSinceNow]) > 10.0) {
isStreamOpen = NO;
[self close];
break;
}
}

Est-ce la bonne façon de procéder pour la gestion d'un timeout ?


 


Merci.


Réponses

  • Non ce n'est pas la bonne façon de procéder. En faisant comme ça tu sollicites le processeur inutilement ; il mouline pour ne rien faire, juste attendre.


     


    La bonne façon de faire est d'armer un Timer qui ferme la connexion si elle n'est pas effectivement ouverte au déclenchement du Timer.


  • skimpyskimpy Membre


    Non ce n'est pas la bonne façon de procéder. En faisant comme ça tu sollicites le processeur inutilement ; il mouline pour ne rien faire, juste attendre.


     


    La bonne façon de faire est d'armer un Timer qui ferme la connexion si elle n'est pas effectivement ouverte au déclenchement du Timer.




     


    Merci jpimbert, je viens de faire la modification avec le timer et c'est en effet beaucoup plus propre.

     

Connectez-vous ou Inscrivez-vous pour répondre.