GRPC Core  9.0.0
resolver_result_parsing.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2018 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_RESULT_PARSING_H
20 #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_RESULT_PARSING_H
21 
23 
33 #include "src/core/lib/iomgr/exec_ctx.h" // for grpc_millis
34 #include "src/core/lib/json/json.h"
36 
37 namespace grpc_core {
38 namespace internal {
39 
41  public:
42  struct RetryThrottling {
43  intptr_t max_milli_tokens = 0;
44  intptr_t milli_token_ratio = 0;
45  };
46 
51  const char* health_check_service_name)
52  : parsed_lb_config_(std::move(parsed_lb_config)),
53  parsed_deprecated_lb_policy_(std::move(parsed_deprecated_lb_policy)),
54  retry_throttling_(retry_throttling),
55  health_check_service_name_(health_check_service_name) {}
56 
58  return retry_throttling_;
59  }
60 
62  return parsed_lb_config_;
63  }
64 
65  const char* parsed_deprecated_lb_policy() const {
66  return parsed_deprecated_lb_policy_.get();
67  }
68 
69  const char* health_check_service_name() const {
70  return health_check_service_name_;
71  }
72 
73  private:
75  grpc_core::UniquePtr<char> parsed_deprecated_lb_policy_;
76  Optional<RetryThrottling> retry_throttling_;
77  const char* health_check_service_name_;
78 };
79 
81  public:
82  struct RetryPolicy {
83  int max_attempts = 0;
86  float backoff_multiplier = 0;
88  };
89 
92  std::unique_ptr<RetryPolicy> retry_policy)
93  : timeout_(timeout),
94  wait_for_ready_(wait_for_ready),
95  retry_policy_(std::move(retry_policy)) {}
96 
97  grpc_millis timeout() const { return timeout_; }
98 
99  Optional<bool> wait_for_ready() const { return wait_for_ready_; }
100 
101  const RetryPolicy* retry_policy() const { return retry_policy_.get(); }
102 
103  private:
104  grpc_millis timeout_ = 0;
105  Optional<bool> wait_for_ready_;
106  std::unique_ptr<RetryPolicy> retry_policy_;
107 };
108 
110  public:
111  std::unique_ptr<ServiceConfig::ParsedConfig> ParseGlobalParams(
112  const grpc_json* json, grpc_error** error) override;
113 
114  std::unique_ptr<ServiceConfig::ParsedConfig> ParsePerMethodParams(
115  const grpc_json* json, grpc_error** error) override;
116 
117  static size_t ParserIndex();
118  static void Register();
119 };
120 
121 } // namespace internal
122 } // namespace grpc_core
123 
124 #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_RESULT_PARSING_H */
Definition: optional.h:27
Definition: ref_counted_ptr.h:35
This is the base class that all service config parsers MUST use to store parsed service config data.
Definition: service_config.h:62
This is the base class that all service config parsers should derive from.
Definition: service_config.h:68
Definition: resolver_result_parsing.h:40
const char * health_check_service_name() const
Definition: resolver_result_parsing.h:69
RefCountedPtr< LoadBalancingPolicy::Config > parsed_lb_config() const
Definition: resolver_result_parsing.h:61
ClientChannelGlobalParsedConfig(RefCountedPtr< LoadBalancingPolicy::Config > parsed_lb_config, grpc_core::UniquePtr< char > parsed_deprecated_lb_policy, const Optional< RetryThrottling > &retry_throttling, const char *health_check_service_name)
Definition: resolver_result_parsing.h:47
Optional< RetryThrottling > retry_throttling() const
Definition: resolver_result_parsing.h:57
const char * parsed_deprecated_lb_policy() const
Definition: resolver_result_parsing.h:65
Definition: resolver_result_parsing.h:80
const RetryPolicy * retry_policy() const
Definition: resolver_result_parsing.h:101
grpc_millis timeout() const
Definition: resolver_result_parsing.h:97
ClientChannelMethodParsedConfig(grpc_millis timeout, const Optional< bool > &wait_for_ready, std::unique_ptr< RetryPolicy > retry_policy)
Definition: resolver_result_parsing.h:90
Optional< bool > wait_for_ready() const
Definition: resolver_result_parsing.h:99
Definition: resolver_result_parsing.h:109
static void Register()
Definition: resolver_result_parsing.cc:55
std::unique_ptr< ServiceConfig::ParsedConfig > ParsePerMethodParams(const grpc_json *json, grpc_error **error) override
Definition: resolver_result_parsing.cc:449
std::unique_ptr< ServiceConfig::ParsedConfig > ParseGlobalParams(const grpc_json *json, grpc_error **error) override
Definition: resolver_result_parsing.cc:266
static size_t ParserIndex()
Definition: resolver_result_parsing.cc:51
A set of grpc_status_code values.
Definition: status_util.h:41
int64_t grpc_millis
Definition: exec_ctx.h:35
Round Robin Policy.
Definition: backend_metric.cc:24
std::unique_ptr< T, DefaultDeleteChar > UniquePtr
Definition: memory.h:45
intptr_t milli_token_ratio
Definition: resolver_result_parsing.h:44
intptr_t max_milli_tokens
Definition: resolver_result_parsing.h:43
int max_attempts
Definition: resolver_result_parsing.h:83
grpc_millis initial_backoff
Definition: resolver_result_parsing.h:84
float backoff_multiplier
Definition: resolver_result_parsing.h:86
StatusCodeSet retryable_status_codes
Definition: resolver_result_parsing.h:87
grpc_millis max_backoff
Definition: resolver_result_parsing.h:85
Definition: error_internal.h:39
Definition: json.h:32