
On 4/4/07, Brian Costlow <brian.costlow@gmail.com> wrote:
But I'm looking at the Plugins as a way to abstract multiple back-end actions taken in response to data recieved by a number of asynchronous events (off of LineReciever and XML-RPC). The plug-in is going to need to keep some intermediate state data in some cases, which won't work if they all get the same object. So I was thinking of something along these lines:
# plugin class Foo(object): implements(IPlugin, imyplugins.IMyPlugIn)
def fooStuff(self): # do foo stuff
def fooFactory(self): return Foo()
f = Foo() # end plugin
#call plugin from app for n in getPlugins(imyplugins.IMyPlugIn): o = n.fooFactory() o.fooStuff()
Does this make sense? Is there a better way in the twisted framework to handle this?
Yep: making your plugins factories is a common pattern. There's also often a conditional checking something about 'n' before calling the fooFactory on it (for example, is it the one the user requested by name? etc) -- Christopher Armstrong International Man of Twistery http://radix.twistedmatrix.com/ http://twistedmatrix.com/ http://canonical.com/