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:
Andreas Sandberg
2014-09-09 04:36:43 -04:00
parent b0e4de667a
commit 53a24b01ab
2 changed files with 12 additions and 2 deletions

View File

@@ -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()
{

View File

@@ -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;
};
/**