-
Notifications
You must be signed in to change notification settings - Fork 6.6k
/
grpc_plugin_registry.cc
141 lines (129 loc) · 5.72 KB
/
grpc_plugin_registry.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
*
* Copyright 2016 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
// This file is copied from
// gRPC repo's src/core/plugin_registry/grpc_plugin_registry.cc then comment out
// sevaral lb plugins that have been stripped out by BUILD.chromium.gn.template
#include <grpc/support/port_platform.h>
#include <grpc/grpc.h>
#include "third_party/grpc/src/src/core/lib/config/core_configuration.h"
#include "third_party/grpc/src/src/core/lib/surface/builtins.h"
#include "third_party/grpc/src/src/core/lib/transport/http_connect_handshaker.h"
#include "third_party/grpc/src/src/core/lib/transport/tcp_connect_handshaker.h"
extern void grpc_register_extra_plugins(void);
void grpc_chttp2_plugin_init(void);
void grpc_chttp2_plugin_shutdown(void);
void grpc_client_channel_init(void);
void grpc_client_channel_shutdown(void);
void grpc_lb_policy_grpclb_init(void);
void grpc_lb_policy_grpclb_shutdown(void);
void grpc_lb_policy_priority_init(void);
void grpc_lb_policy_priority_shutdown(void);
void grpc_lb_policy_weighted_target_init(void);
void grpc_lb_policy_weighted_target_shutdown(void);
void grpc_lb_policy_pick_first_init(void);
void grpc_lb_policy_pick_first_shutdown(void);
void grpc_lb_policy_round_robin_init(void);
void grpc_lb_policy_round_robin_shutdown(void);
void grpc_resolver_dns_ares_init(void);
void grpc_resolver_dns_ares_shutdown(void);
namespace grpc_core {
void GrpcLbPolicyRingHashInit(void);
void GrpcLbPolicyRingHashShutdown(void);
#ifndef GRPC_NO_RLS
void RlsLbPluginInit();
void RlsLbPluginShutdown();
#endif // !GRPC_NO_RLS
} // namespace grpc_core
void grpc_register_built_in_plugins(void) {
grpc_register_plugin(grpc_client_channel_init, grpc_client_channel_shutdown);
// grpc_register_plugin(grpc_lb_policy_grpclb_init,
// grpc_lb_policy_grpclb_shutdown);
#ifndef GRPC_NO_RLS
grpc_register_plugin(grpc_core::RlsLbPluginInit,
grpc_core::RlsLbPluginShutdown);
#endif // !GRPC_NO_RLS
// grpc_register_plugin(grpc_lb_policy_priority_init,
// grpc_lb_policy_priority_shutdown);
// grpc_register_plugin(grpc_lb_policy_weighted_target_init,
// grpc_lb_policy_weighted_target_shutdown);
grpc_register_plugin(grpc_lb_policy_pick_first_init,
grpc_lb_policy_pick_first_shutdown);
// grpc_register_plugin(grpc_lb_policy_round_robin_init,
// grpc_lb_policy_round_robin_shutdown);
// grpc_register_plugin(grpc_core::GrpcLbPolicyRingHashInit,
// grpc_core::GrpcLbPolicyRingHashShutdown);
grpc_register_plugin(grpc_resolver_dns_ares_init,
grpc_resolver_dns_ares_shutdown);
grpc_register_extra_plugins();
}
namespace grpc_core {
extern void BuildClientChannelConfiguration(
CoreConfiguration::Builder* builder);
extern void SecurityRegisterHandshakerFactories(
CoreConfiguration::Builder* builder);
extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder);
extern void RegisterChannelIdleFilters(CoreConfiguration::Builder* builder);
extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder);
extern void RegisterGrpcLbLoadReportingFilter(
CoreConfiguration::Builder* builder);
extern void RegisterHttpFilters(CoreConfiguration::Builder* builder);
extern void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder);
extern void RegisterSecurityFilters(CoreConfiguration::Builder* builder);
extern void RegisterServiceConfigChannelArgFilter(
CoreConfiguration::Builder* builder);
extern void RegisterExtraFilters(CoreConfiguration::Builder* builder);
extern void RegisterResourceQuota(CoreConfiguration::Builder* builder);
extern void FaultInjectionFilterRegister(CoreConfiguration::Builder* builder);
extern void RegisterNativeDnsResolver(CoreConfiguration::Builder* builder);
extern void RegisterAresDnsResolver(CoreConfiguration::Builder* builder);
extern void RegisterSockaddrResolver(CoreConfiguration::Builder* builder);
extern void RegisterFakeResolver(CoreConfiguration::Builder* builder);
#ifdef GPR_SUPPORT_BINDER_TRANSPORT
extern void RegisterBinderResolver(CoreConfiguration::Builder* builder);
#endif
void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
// The order of the handshaker registration is crucial here.
// We want TCP connect handshaker to be registered last so that it is added to
// the start of the handshaker list.
RegisterHttpConnectHandshaker(builder);
RegisterTCPConnectHandshaker(builder);
BuildClientChannelConfiguration(builder);
SecurityRegisterHandshakerFactories(builder);
RegisterClientAuthorityFilter(builder);
RegisterChannelIdleFilters(builder);
// RegisterGrpcLbLoadReportingFilter(builder);
RegisterHttpFilters(builder);
RegisterDeadlineFilter(builder);
RegisterMessageSizeFilter(builder);
RegisterServiceConfigChannelArgFilter(builder);
RegisterResourceQuota(builder);
FaultInjectionFilterRegister(builder);
RegisterAresDnsResolver(builder);
RegisterNativeDnsResolver(builder);
RegisterSockaddrResolver(builder);
RegisterFakeResolver(builder);
#ifdef GPR_SUPPORT_BINDER_TRANSPORT
RegisterBinderResolver(builder);
#endif
// Run last so it gets a consistent location.
// TODO(ctiller): Is this actually necessary?
RegisterSecurityFilters(builder);
RegisterExtraFilters(builder);
RegisterBuiltins(builder);
}
} // namespace grpc_core