From bcf99dcfcf498d459e60be72aabcf34193fbe4c5 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 30 May 2023 18:11:55 +0200 Subject: Don't add DKDMs twice (#2545). --- src/lib/dkdm_wrapper.cc | 20 ++++++++++++++++++++ src/lib/dkdm_wrapper.h | 2 ++ 2 files changed, 22 insertions(+) (limited to 'src/lib') diff --git a/src/lib/dkdm_wrapper.cc b/src/lib/dkdm_wrapper.cc index 532bbb314..f5eb435f6 100644 --- a/src/lib/dkdm_wrapper.cc +++ b/src/lib/dkdm_wrapper.cc @@ -111,3 +111,23 @@ DKDMGroup::remove (shared_ptr child) } } } + + +bool +DKDMGroup::contains(string dkdm_id) const +{ + for (auto child: _children) { + if (auto child_group = dynamic_pointer_cast(child)) { + if (child_group->contains(dkdm_id)) { + return true; + } + } else if (auto child_dkdm = dynamic_pointer_cast(child)) { + if (child_dkdm->dkdm().id() == dkdm_id) { + return true; + } + } + } + + return false; +} + diff --git a/src/lib/dkdm_wrapper.h b/src/lib/dkdm_wrapper.h index 7227fdc86..d15f017c5 100644 --- a/src/lib/dkdm_wrapper.h +++ b/src/lib/dkdm_wrapper.h @@ -93,6 +93,8 @@ public: void add (std::shared_ptr child, std::shared_ptr previous = std::shared_ptr()); void remove (std::shared_ptr child); + bool contains(std::string dkdm_id) const; + private: std::string _name; std::list> _children; -- cgit v1.2.3