Android-cuttlefish cvd tool
cas_flags.h
Go to the documentation of this file.
1//
2// Copyright (C) 2024 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <stdint.h>
19
20#include <string>
21#include <vector>
22
25
26namespace cuttlefish {
27
28// Wrapper for flag values that tracks whether a value was user-specified
29// (via command-line or config file) versus using a default.
30template <typename T>
31class FlagValue {
32 public:
33 explicit FlagValue(const T& default_value) : default_value_(default_value) {}
34
35 // Use ref-qualifier to avoid calling value() on a temporary.
36 const T& value() const& { return value_ ? *value_ : default_value_; }
37 void set_value(const T& value) { value_.emplace(value); }
38 bool user_provided() const { return value_.has_value(); }
39
40 private:
41 friend struct CasDownloaderFlags;
42
43 cuttlefish::Flag Flag(const std::string& name) {
45 }
46
47 std::optional<T> value_;
49};
50
51inline constexpr int kDefaultMemoryLimit = 0; // 0 for no limit.
52inline constexpr int kDefaultCasConcurrency = 500;
53inline constexpr int kDefaultRpcTimeout = 120;
54inline constexpr int kDefaultGetCapabilitiesTimeout = 5;
55inline constexpr int kDefaultGetTreeTimeout = 5;
56inline constexpr int kDefaultBatchReadBlobsTimeout = 180;
57inline constexpr int kDefaultBatchUpdateBlobsTimeout = 60;
58
59// Default cache size for CAS cache: 8 GiB.
60// Note: this is only effective when cache_dir is set.
61inline constexpr int64_t kMinCacheMaxSize = 8LL * 1024 * 1024 * 1024;
62
63// Default path to CAS downloader config file.
64inline constexpr const char kDefaultCasConfigFilePath[] =
65 "/etc/casdownloader/config.json";
66
67// Default path to CAS downloader binary.
68inline constexpr const char kDefaultDownloaderPath[] = "/usr/bin/casdownloader";
69
70// Flags for the CAS downloader binary.
73 std::vector<Flag> Flags();
74
91};
92
93} // namespace cuttlefish
Definition: cas_flags.h:31
const T & value() const &
Definition: cas_flags.h:36
void set_value(const T &value)
Definition: cas_flags.h:37
bool user_provided() const
Definition: cas_flags.h:38
T default_value_
Definition: cas_flags.h:48
std::optional< T > value_
Definition: cas_flags.h:47
FlagValue(const T &default_value)
Definition: cas_flags.h:33
cuttlefish::Flag Flag(const std::string &name)
Definition: cas_flags.h:43
Definition: flag.h:32
char * name
Definition: libf2fs.c:1403
Definition: alloc_driver.h:20
Flag GflagsCompatFlag(const std::string &name, std::string &value)
Definition: gflags_compat.cpp:280
constexpr int kDefaultCasConcurrency
Definition: cas_flags.h:52
constexpr int kDefaultBatchReadBlobsTimeout
Definition: cas_flags.h:56
constexpr int kDefaultMemoryLimit
Definition: cas_flags.h:51
constexpr int kDefaultRpcTimeout
Definition: cas_flags.h:53
constexpr int kDefaultGetCapabilitiesTimeout
Definition: cas_flags.h:54
constexpr int64_t kMinCacheMaxSize
Definition: cas_flags.h:61
constexpr int kDefaultBatchUpdateBlobsTimeout
Definition: cas_flags.h:57
constexpr int kDefaultGetTreeTimeout
Definition: cas_flags.h:55
constexpr const char kDefaultDownloaderPath[]
Definition: cas_flags.h:68
constexpr const char kDefaultCasConfigFilePath[]
Definition: cas_flags.h:64
Definition: cas_flags.h:71
FlagValue< bool > prefer_uncompressed
Definition: cas_flags.h:77
FlagValue< int > batch_update_blobs_timeout
Definition: cas_flags.h:89
FlagValue< int > memory_limit
Definition: cas_flags.h:83
FlagValue< std::string > downloader_path
Definition: cas_flags.h:76
FlagValue< std::string > cas_config_filepath
Definition: cas_flags.h:75
FlagValue< std::string > invocation_id
Definition: cas_flags.h:79
FlagValue< int > get_capabilities_timeout
Definition: cas_flags.h:86
FlagValue< int > rpc_timeout
Definition: cas_flags.h:85
FlagValue< bool > use_hardlink
Definition: cas_flags.h:82
FlagValue< int64_t > cache_max_size
Definition: cas_flags.h:80
std::vector< Flag > Flags()
Definition: cas_flags.cc:61
FlagValue< std::string > cache_dir
Definition: cas_flags.h:78
CasDownloaderFlags()
Definition: cas_flags.cc:43
FlagValue< bool > cache_lock
Definition: cas_flags.h:81
FlagValue< bool > version
Definition: cas_flags.h:90
FlagValue< int > cas_concurrency
Definition: cas_flags.h:84
FlagValue< int > get_tree_timeout
Definition: cas_flags.h:87
FlagValue< int > batch_read_blobs_timeout
Definition: cas_flags.h:88