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

            
3
namespace Envoy {
4
namespace Server {
5

            
6
62259
ConfigTracker::EntryOwnerPtr ConfigTrackerImpl::add(const std::string& key, Cb cb) {
7
62259
  auto insert_result = map_->emplace(key, std::move(cb));
8
62259
  return insert_result.second
9
62259
             ? std::make_unique<ConfigTrackerImpl::EntryOwnerImpl>(map_, std::move(key))
10
62259
             : nullptr;
11
62259
}
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
62258
    : map_(map), key_(key) {}
18

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

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