@ -57,12 +57,12 @@
namespace grpc_core {
XdsApi : : XdsApi ( XdsClient * client , TraceFlag * tracer ,
const XdsBootstrap : : Node * node , upb : : SymbolTable * symtab ,
const XdsBootstrap : : Node * node , upb : : DefPool * def_pool ,
std : : string user_agent_name , std : : string user_agent_version )
: client_ ( client ) ,
tracer_ ( tracer ) ,
node_ ( node ) ,
symtab_ ( symtab ) ,
def_pool_ ( def_pool ) ,
user_agent_name_ ( std : : move ( user_agent_name ) ) ,
user_agent_version_ ( std : : move ( user_agent_version ) ) { }
@ -71,7 +71,7 @@ namespace {
struct XdsApiContext {
XdsClient * client ;
TraceFlag * tracer ;
upb_DefPool * symtab ;
upb_DefPool * def_pool ;
upb_Arena * arena ;
} ;
@ -183,7 +183,7 @@ void MaybeLogDiscoveryRequest(
if ( GRPC_TRACE_FLAG_ENABLED ( * context . tracer ) & &
gpr_should_log ( GPR_LOG_SEVERITY_DEBUG ) ) {
const upb_MessageDef * msg_type =
envoy_service_discovery_v3_DiscoveryRequest_getmsgdef ( context . symtab ) ;
envoy_service_discovery_v3_DiscoveryRequest_getmsgdef ( context . def_pool ) ;
char buf [ 10240 ] ;
upb_TextEncode ( request , msg_type , nullptr , 0 , buf , sizeof ( buf ) ) ;
gpr_log ( GPR_DEBUG , " [xds_client %p] constructed ADS request: %s " ,
@ -207,7 +207,8 @@ std::string XdsApi::CreateAdsRequest(
absl : : string_view nonce , const std : : vector < std : : string > & resource_names ,
absl : : Status status , bool populate_node ) {
upb : : Arena arena ;
const XdsApiContext context = { client_ , tracer_ , symtab_ - > ptr ( ) , arena . ptr ( ) } ;
const XdsApiContext context = { client_ , tracer_ , def_pool_ - > ptr ( ) ,
arena . ptr ( ) } ;
// Create a request.
envoy_service_discovery_v3_DiscoveryRequest * request =
envoy_service_discovery_v3_DiscoveryRequest_new ( arena . ptr ( ) ) ;
@ -270,7 +271,8 @@ void MaybeLogDiscoveryResponse(
if ( GRPC_TRACE_FLAG_ENABLED ( * context . tracer ) & &
gpr_should_log ( GPR_LOG_SEVERITY_DEBUG ) ) {
const upb_MessageDef * msg_type =
envoy_service_discovery_v3_DiscoveryResponse_getmsgdef ( context . symtab ) ;
envoy_service_discovery_v3_DiscoveryResponse_getmsgdef (
context . def_pool ) ;
char buf [ 10240 ] ;
upb_TextEncode ( response , msg_type , nullptr , 0 , buf , sizeof ( buf ) ) ;
gpr_log ( GPR_DEBUG , " [xds_client %p] received response: %s " , context . client ,
@ -283,7 +285,8 @@ void MaybeLogDiscoveryResponse(
absl : : Status XdsApi : : ParseAdsResponse ( absl : : string_view encoded_response ,
AdsResponseParserInterface * parser ) {
upb : : Arena arena ;
const XdsApiContext context = { client_ , tracer_ , symtab_ - > ptr ( ) , arena . ptr ( ) } ;
const XdsApiContext context = { client_ , tracer_ , def_pool_ - > ptr ( ) ,
arena . ptr ( ) } ;
// Decode the response.
const envoy_service_discovery_v3_DiscoveryResponse * response =
envoy_service_discovery_v3_DiscoveryResponse_parse (
@ -356,7 +359,8 @@ void MaybeLogLrsRequest(
if ( GRPC_TRACE_FLAG_ENABLED ( * context . tracer ) & &
gpr_should_log ( GPR_LOG_SEVERITY_DEBUG ) ) {
const upb_MessageDef * msg_type =
envoy_service_load_stats_v3_LoadStatsRequest_getmsgdef ( context . symtab ) ;
envoy_service_load_stats_v3_LoadStatsRequest_getmsgdef (
context . def_pool ) ;
char buf [ 10240 ] ;
upb_TextEncode ( request , msg_type , nullptr , 0 , buf , sizeof ( buf ) ) ;
gpr_log ( GPR_DEBUG , " [xds_client %p] constructed LRS request: %s " ,
@ -377,7 +381,8 @@ std::string SerializeLrsRequest(
std : : string XdsApi : : CreateLrsInitialRequest ( ) {
upb : : Arena arena ;
const XdsApiContext context = { client_ , tracer_ , symtab_ - > ptr ( ) , arena . ptr ( ) } ;
const XdsApiContext context = { client_ , tracer_ , def_pool_ - > ptr ( ) ,
arena . ptr ( ) } ;
// Create a request.
envoy_service_load_stats_v3_LoadStatsRequest * request =
envoy_service_load_stats_v3_LoadStatsRequest_new ( arena . ptr ( ) ) ;
@ -447,7 +452,8 @@ void LocalityStatsPopulate(
std : : string XdsApi : : CreateLrsRequest (
ClusterLoadReportMap cluster_load_report_map ) {
upb : : Arena arena ;
const XdsApiContext context = { client_ , tracer_ , symtab_ - > ptr ( ) , arena . ptr ( ) } ;
const XdsApiContext context = { client_ , tracer_ , def_pool_ - > ptr ( ) ,
arena . ptr ( ) } ;
// Create a request.
envoy_service_load_stats_v3_LoadStatsRequest * request =
envoy_service_load_stats_v3_LoadStatsRequest_new ( arena . ptr ( ) ) ;
@ -514,7 +520,8 @@ void MaybeLogLrsResponse(
if ( GRPC_TRACE_FLAG_ENABLED ( * context . tracer ) & &
gpr_should_log ( GPR_LOG_SEVERITY_DEBUG ) ) {
const upb_MessageDef * msg_type =
envoy_service_load_stats_v3_LoadStatsResponse_getmsgdef ( context . symtab ) ;
envoy_service_load_stats_v3_LoadStatsResponse_getmsgdef (
context . def_pool ) ;
char buf [ 10240 ] ;
upb_TextEncode ( response , msg_type , nullptr , 0 , buf , sizeof ( buf ) ) ;
gpr_log ( GPR_DEBUG , " [xds_client %p] received LRS response: %s " ,
@ -537,7 +544,8 @@ absl::Status XdsApi::ParseLrsResponse(absl::string_view encoded_response,
if ( decoded_response = = nullptr ) {
return absl : : UnavailableError ( " Can't decode response. " ) ;
}
const XdsApiContext context = { client_ , tracer_ , symtab_ - > ptr ( ) , arena . ptr ( ) } ;
const XdsApiContext context = { client_ , tracer_ , def_pool_ - > ptr ( ) ,
arena . ptr ( ) } ;
MaybeLogLrsResponse ( context , decoded_response ) ;
// Check send_all_clusters.
if ( envoy_service_load_stats_v3_LoadStatsResponse_send_all_clusters (
@ -585,7 +593,8 @@ std::string XdsApi::AssembleClientConfig(
// Fill-in the node information
auto * node = envoy_service_status_v3_ClientConfig_mutable_node ( client_config ,
arena . ptr ( ) ) ;
const XdsApiContext context = { client_ , tracer_ , symtab_ - > ptr ( ) , arena . ptr ( ) } ;
const XdsApiContext context = { client_ , tracer_ , def_pool_ - > ptr ( ) ,
arena . ptr ( ) } ;
PopulateNode ( context , node_ , user_agent_name_ , user_agent_version_ , node ) ;
// Dump each resource.
std : : vector < std : : string > type_url_storage ;