// the interface of the wrapper to back-end,
// synchronized collection of pointers
template
<
class Listener,
class Mutex,
class BagType
>
class ListenersCollection
{
// this is a helper class that locks a given mutex
// and unlocks when exiting the scope
class MutexHolder
{
// ...
};
public:
void add(Listener *p);
void remove(Listener *p);
BagType getFrozen() const;
private:
BagType bag_;
Mutex mutex_;
};