The BaseDriver - which I take to be the API that must be fulfilled by any transport implementation - has a listen() method taking a target, but no way to stop listening on that specific target.

Is this because there is no need to ever cancel a subscription?

There is a cleanup() method on the BaseDriver and the Transport object that contains it. However if more than one Transport object exists (e.g. because there are more than one Targets) then they will share the same driver, so calling cleanup on one would affect them all.

On the topic of relationship between Transport (and therefore RPCClient) and driver instances, it would be nice if there was some more explicit association. For example, some transport mechanisms may require some setup for sending to each distinct address, and would perhaps want to avoid doing that on every individual call. They could of course cache their own context against the target instance. However it seems like it might be generally useful for drivers to be aware of the lifecycle of the different Transports or RPCClient instances that use them (it might help inform other caching or pooling choices for example).

This is admittedly coming from a very limited understanding of the anticipated use cases, and perhaps assuming it is a more general purpose rpc mechanism than is actually intended.

--Gordon.


_______________________________________________
OpenStack-dev mailing list
[email protected]
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to