I'm sure you're saying only good things but I'm so inexpert in twisted that I can't understand very well what to do. I'll try to explain all that I want to do and how I did it wrongly: first I have to call the connect method from the api and it returns a deferred so I do: in conn_to_ctrl i have: d = api.connect(...) return d
now I do some operations with config files to call many times the start method from the api (I have to start many virtual machines) and the api.start returns a deferred so what have I to do now? I do so: in examinecfg i have: # tha same d that i used to add api.connect! self.d.addCallback(api.start, (method_args)) return d Then I have to call the disconnect method from the api. But i tried to print out something to fallow the executing but I only see printing the first method that call the connection. after that the process ends. In the main I have: defer = conn_to_ctrl() or have I to add to defer also the examinecfg? thank you very much 2009/5/11 Jean-Paul Calderone <exar...@divmod.com> > On Mon, 11 May 2009 12:24:54 +0200, Luigi Conte < > luigiandcosoluti...@gmail.com> wrote: > >Hi people, > >I'm luigi and I'm a student at Politecnico di Milano, Italy. I'm working > for > >a graduate thesis on a framework called usher. It provides an API to do > >connect e command operations. It manages all those calls with a defferred > >object (i think). In fact when I call the connect it returns me a > defferred > >object. All that i want to know is how to call the other operations with > >this object and how to know when an operation is completely done. > >The procedure I call is simple: connect method, start method many times, > >stop method, disconnect method. I want to call these methods sequentially > >because I have to fallow a list of commands so I have to be sure the > >previous methods are already been invoked. I'll post the main methods > hoping > >someone could help me in how to add the method in the deferred and how to > >know when it is completely invoked. > > The Deferred tells you two things. It tells you when an operation has > completed and it tells you the result of the operation. It tells you > *when* by calling your callback function at that time. It tells you > what *result* by the value it passes to that callback function. > > So if you want to connect, then do the "start" operation many times, then > stop, then disconnect, you have some Deferreds and a simple recursion- > or loop-like structure. For example, > > # First, set up the connection. > taskDeferred = connect(...) > def cbConnected(connectResult): > # This function will run once the Deferred returned by `connect´ > # fires. Here, "start" something. > return start(...) > taskDeferred.addCallback(cbConnected) > > def cbStarted(startResult): > # Now the Deferred returned by `start´ has fired. > if someStopCondition: > # If we decide it is time to stop, then stop. > return stop(...) > # Otherwise, run `start´ again > startAgainDeferred = start(...) > # And call this callback again with this new call's result. > startAgainDeferred.addCallback(cbStarted) > return startAgainDeferred > taskDeferred.addCallback(cbStarted) > > def cbStopped(stopResult): > # The only exit from the earlier "loop" is through the code path > # which calls `stop´. This callback is called when the Deferred > # returned by that call fires. Do the disconnect now. > return disconnect(...) > taskDeferred.addCallback(cbStopped) > > def cbDisconnected(disconnectResult): > print "All done" > taskDeferred.addCallback(cbDisconnected) > > # It's possible something will go wrong in the above. To make sure any > # exceptions are reported, add a logging errback at the very end to > # display whatever might go wrong. > taskDeferred.addErrback(twisted.python.log.err) > > Hope this helps, > > Jean-Paul > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python