1
#include "source/server/instance_impl.h"
2

            
3
#include "source/common/upstream/health_discovery_service.h"
4
#include "source/server/guarddog_impl.h"
5
#include "source/server/null_overload_manager.h"
6
#include "source/server/overload_manager_impl.h"
7

            
8
namespace Envoy {
9
namespace Server {
10
10671
void InstanceImpl::maybeCreateHeapShrinker() {
11
10671
  heap_shrinker_ =
12
10671
      std::make_unique<Memory::HeapShrinker>(dispatcher(), overloadManager(), *stats().rootScope());
13
10671
}
14

            
15
10671
absl::StatusOr<std::unique_ptr<OverloadManager>> InstanceImpl::createOverloadManager() {
16
10671
  return OverloadManagerImpl::create(
17
10671
      dispatcher(), *stats().rootScope(), threadLocal(), bootstrap().overload_manager(),
18
10671
      messageValidationContext().staticValidationVisitor(), api(), options());
19
10671
}
20

            
21
10671
std::unique_ptr<OverloadManager> InstanceImpl::createNullOverloadManager() {
22
10671
  return std::make_unique<NullOverloadManager>(threadLocal(), false);
23
10671
}
24

            
25
std::unique_ptr<Server::GuardDog>
26
InstanceImpl::maybeCreateGuardDog(absl::string_view name,
27
21328
                                  const Server::Configuration::Watchdog& config) {
28
21328
  return std::make_unique<Server::GuardDogImpl>(*stats().rootScope(), config, api(), name);
29
21328
}
30

            
31
std::unique_ptr<HdsDelegateApi>
32
InstanceImpl::maybeCreateHdsDelegate(Configuration::ServerFactoryContext& server_context,
33
                                     Stats::Scope& scope, Grpc::RawAsyncClientPtr&& async_client,
34
                                     Envoy::Stats::Store& stats,
35
40
                                     Ssl::ContextManager& ssl_context_manager) {
36
40
  return std::make_unique<Upstream::HdsDelegate>(server_context, scope, std::move(async_client),
37
40
                                                 stats, ssl_context_manager);
38
40
}
39

            
40
} // namespace Server
41
} // namespace Envoy