
On Thu, Mar 13, 2008 at 1:18 AM, Kowalke Oliver (QD IT PA AS) <Oliver.Kowalke@qimonda.com> wrote:
Another would be to have the consumer keep a copy of the Boost.Signals connection object (for the connection between its producer and itself), and disconnect at will.
I would prefer this solution - maybe signals::filter can provide a bool connected() and void disconnect() function which internaly calls boost::signals::connection::disconnect()?
This is a great idea. I made a little proof of concept example here: http://tinyurl.com/2zl9ar There are some minimal comments that explain it. Basically, the example defines a new type of consumer (tracking_call_consumer) for which the connect operation will register the connection object with the consumer. It then implements a simple class (tracking_consumer) which is a tracking_call_consumer and will disconnect (from all registered producers) once it has received a specified number of signals. Something like this will be a good addition to the library - when I get more time I'll try to figure out a good way to integrate it with the existing components, so that any component can be made to track connections to its consumer ports. Regards, Stjepan