sim: Automatically unregister probe listeners
The ProbeListener base class automatically registers itself with a probe manager. Currently, the class does not unregister a itself when it is destroyed, which makes removing probes listeners somewhat cumbersome. This patch adds an automatic call to manager->removeListener in the ProbeListener destructor, which solves the problem.
This commit is contained in:
@@ -62,11 +62,17 @@ ProbeListenerObject::~ProbeListenerObject()
|
||||
listeners.clear();
|
||||
}
|
||||
|
||||
ProbeListener::ProbeListener(ProbeManager *manager, const std::string &name)
|
||||
ProbeListener::ProbeListener(ProbeManager *_manager, const std::string &_name)
|
||||
: manager(_manager), name(_name)
|
||||
{
|
||||
manager->addListener(name, *this);
|
||||
}
|
||||
|
||||
ProbeListener::~ProbeListener()
|
||||
{
|
||||
manager->removeListener(name, *this);
|
||||
}
|
||||
|
||||
ProbeListenerObject*
|
||||
ProbeListenerObjectParams::create()
|
||||
{
|
||||
|
||||
@@ -104,7 +104,11 @@ class ProbeListener
|
||||
{
|
||||
public:
|
||||
ProbeListener(ProbeManager *manager, const std::string &name);
|
||||
virtual ~ProbeListener() {}
|
||||
virtual ~ProbeListener();
|
||||
|
||||
protected:
|
||||
ProbeManager *const manager;
|
||||
const std::string name;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user