2010-11-10 8 views
1

j'ai un simple client TCP qui est connecté à l'aide torsadé:Suppression de clients du réacteur dans Twisted

reactor.connectTCP(host, port, SomeClientFactory()) 

Le programme est capable de recevoir un signal HUP pour déclencher un rechargement. Je voudrais essentiellement:

  1. Retirez les anciens clients
  2. Recharger config
  3. Créer de nouveaux clients basés sur une nouvelle configuration

Cependant, je ne peux pas sembler trouver un moyen de réaliser le premier de ces points. Des conseils?

Merci

Répondre

2

IReactorTCP.connectTCP retourne un fournisseur IConnector. Comme vous pouvez le voir sur le definition of the IConnector interface, la méthode disconnect fera quelque chose comme ce que vous voulez. Vous pouvez également utiliser la méthode loseConnection de l'attribut de transport de l'instance de protocole, bien sûr. Ce dernier serait plus approprié s'il y a une sorte de nettoyage que vous voulez que le protocole fasse avant de vous déconnecter, puisque vous pouvez mettre ce travail et un appel à loseConnection à la fin d'une méthode comme shutdown ou quit ou cleanup sur la classe de protocole et alors appelez ça.

+0

Tout d'abord, merci pour la réponse rapide. Je fais un appel à loseConnection dans le protocole et ranger la connexion tcp réelle, j'appelle aussi la méthode stopTrying de ReconnectingClientFactory que j'utilise, mais je suppose que l'instance de l'usine client est toujours référencée quelque part par le réacteur et devrait être retiré si je ne vais jamais l'utiliser à nouveau. Est-ce que l'usine cliente se fait énerver pour moi ou dois-je l'enlever d'une façon ou d'une autre? – Phil

+0

Je pense que le réacteur ne garde pas de trace des clients, plutôt que les clients ont une référence au réacteur qui gère leurs E/S. – stefanw

+0

Le réacteur garde un peu de trace, mais une fois que la connexion du client est fermée et que l'usine reçoit l'ordre d'arrêter, cet état de suivi sera nettoyé et mis au rebut. Ce n'est que lorsque la connexion est établie que le réacteur est au courant. –

Questions connexes