1
#include "source/server/admin/config_tracker_impl.h"
2

            
3
namespace Envoy {
4
namespace Server {
5

            
6
62356
ConfigTracker::EntryOwnerPtr ConfigTrackerImpl::add(const std::string& key, Cb cb) {
7
62356
  auto insert_result = map_->emplace(key, std::move(cb));
8
62356
  return insert_result.second
9
62356
             ? std::make_unique<ConfigTrackerImpl::EntryOwnerImpl>(map_, std::move(key))
10
62356
             : nullptr;
11
62356
}
12

            
13
163
const ConfigTracker::CbsMap& ConfigTrackerImpl::getCallbacksMap() const { return *map_; }
14

            
15
ConfigTrackerImpl::EntryOwnerImpl::EntryOwnerImpl(const std::shared_ptr<ConfigTracker::CbsMap>& map,
16
                                                  const std::string& key)
17
62355
    : map_(map), key_(key) {}
18

            
19
62355
ConfigTrackerImpl::EntryOwnerImpl::~EntryOwnerImpl() {
20
62355
  size_t erased = map_->erase(key_);
21
62355
  ASSERT(erased == 1);
22
62355
}
23

            
24
} // namespace Server
25
} // namespace Envoy