[Twisted-Python] adapt from more than one interface

Esteve Fernandez esteve at sindominio.net
Sat Apr 11 14:41:35 MDT 2009


Hi all. I have a bunch of services, which implement a set of interfaces, and I 
use a bunch of adapters to turn them into factories, making those services 
protocol-independent.

The interface/adapter stuff works great and I'm able to expose those services 
to several protocols, without changing a single line in them. However, some 
of the protocols need some extra information to be passed, so I have to do 
this:

factory = IFooFactory(myService)
factory.bar = "some value"

it works, but I'd rather use this:

factory = IFooFactory(myService, configurationObject)

which would take a second argument, an object implementing another interface 
(e.g. IConfigurationDescriptor), containing all the necessary information for 
that adapter. I don't want to put that information in the service, as it's 
only useful to the protocol and would tie the service to a particular 
protocol.

In order to implement this, registerAdapter would have to be able to take a 
tuple of interfaces, like this:

components.registerAdapter(
    AdaptToFactory,
    (IFooService, IConfigurationDescriptor),
    IFooFactory)

would that feature make sense? If so, I'll file an issue right now :-)

Cheers.




More information about the Twisted-Python mailing list