xref: /aosp_15_r20/external/cronet/net/quic/set_quic_flag.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2022 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "net/quic/set_quic_flag.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "base/strings/string_number_conversions.h"
8*6777b538SAndroid Build Coastguard Worker #include "net/third_party/quiche/src/quiche/common/platform/api/quiche_flags.h"
9*6777b538SAndroid Build Coastguard Worker #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_flags.h"
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker namespace net {
12*6777b538SAndroid Build Coastguard Worker 
13*6777b538SAndroid Build Coastguard Worker namespace {
14*6777b538SAndroid Build Coastguard Worker 
SetQuicFlagByName_bool(bool * flag,const std::string & value)15*6777b538SAndroid Build Coastguard Worker void SetQuicFlagByName_bool(bool* flag, const std::string& value) {
16*6777b538SAndroid Build Coastguard Worker   if (value == "true" || value == "True")
17*6777b538SAndroid Build Coastguard Worker     *flag = true;
18*6777b538SAndroid Build Coastguard Worker   else if (value == "false" || value == "False")
19*6777b538SAndroid Build Coastguard Worker     *flag = false;
20*6777b538SAndroid Build Coastguard Worker }
SetQuicFlagByName_double(double * flag,const std::string & value)21*6777b538SAndroid Build Coastguard Worker void SetQuicFlagByName_double(double* flag, const std::string& value) {
22*6777b538SAndroid Build Coastguard Worker   double val;
23*6777b538SAndroid Build Coastguard Worker   if (base::StringToDouble(value, &val))
24*6777b538SAndroid Build Coastguard Worker     *flag = val;
25*6777b538SAndroid Build Coastguard Worker }
26*6777b538SAndroid Build Coastguard Worker 
SetQuicFlagByName_uint64_t(uint64_t * flag,const std::string & value)27*6777b538SAndroid Build Coastguard Worker void SetQuicFlagByName_uint64_t(uint64_t* flag, const std::string& value) {
28*6777b538SAndroid Build Coastguard Worker   uint64_t val;
29*6777b538SAndroid Build Coastguard Worker   if (base::StringToUint64(value, &val) && val >= 0)
30*6777b538SAndroid Build Coastguard Worker     *flag = val;
31*6777b538SAndroid Build Coastguard Worker }
32*6777b538SAndroid Build Coastguard Worker 
SetQuicFlagByName_int32_t(int32_t * flag,const std::string & value)33*6777b538SAndroid Build Coastguard Worker void SetQuicFlagByName_int32_t(int32_t* flag, const std::string& value) {
34*6777b538SAndroid Build Coastguard Worker   int val;
35*6777b538SAndroid Build Coastguard Worker   if (base::StringToInt(value, &val))
36*6777b538SAndroid Build Coastguard Worker     *flag = val;
37*6777b538SAndroid Build Coastguard Worker }
38*6777b538SAndroid Build Coastguard Worker 
SetQuicFlagByName_int64_t(int64_t * flag,const std::string & value)39*6777b538SAndroid Build Coastguard Worker void SetQuicFlagByName_int64_t(int64_t* flag, const std::string& value) {
40*6777b538SAndroid Build Coastguard Worker   int64_t val;
41*6777b538SAndroid Build Coastguard Worker   if (base::StringToInt64(value, &val))
42*6777b538SAndroid Build Coastguard Worker     *flag = val;
43*6777b538SAndroid Build Coastguard Worker }
44*6777b538SAndroid Build Coastguard Worker 
45*6777b538SAndroid Build Coastguard Worker }  // namespace
46*6777b538SAndroid Build Coastguard Worker 
SetQuicFlagByName(const std::string & flag_name,const std::string & value)47*6777b538SAndroid Build Coastguard Worker void SetQuicFlagByName(const std::string& flag_name, const std::string& value) {
48*6777b538SAndroid Build Coastguard Worker #define QUIC_FLAG(flag, default_value)            \
49*6777b538SAndroid Build Coastguard Worker   if (flag_name == "FLAGS_" #flag) {              \
50*6777b538SAndroid Build Coastguard Worker     SetQuicFlagByName_bool(&FLAGS_##flag, value); \
51*6777b538SAndroid Build Coastguard Worker     return;                                       \
52*6777b538SAndroid Build Coastguard Worker   }
53*6777b538SAndroid Build Coastguard Worker #include "net/third_party/quiche/src/quiche/quic/core/quic_flags_list.h"
54*6777b538SAndroid Build Coastguard Worker #undef QUIC_FLAG
55*6777b538SAndroid Build Coastguard Worker 
56*6777b538SAndroid Build Coastguard Worker #define QUICHE_PROTOCOL_FLAG(type, flag, ...)       \
57*6777b538SAndroid Build Coastguard Worker   if (flag_name == "FLAGS_" #flag) {                \
58*6777b538SAndroid Build Coastguard Worker     SetQuicFlagByName_##type(&FLAGS_##flag, value); \
59*6777b538SAndroid Build Coastguard Worker     return;                                         \
60*6777b538SAndroid Build Coastguard Worker   }
61*6777b538SAndroid Build Coastguard Worker #include "net/third_party/quiche/src/quiche/common/quiche_protocol_flags_list.h"
62*6777b538SAndroid Build Coastguard Worker #undef QUICHE_PROTOCOL_FLAG
63*6777b538SAndroid Build Coastguard Worker }
64*6777b538SAndroid Build Coastguard Worker 
65*6777b538SAndroid Build Coastguard Worker }  // namespace net
66