Android-cuttlefish cvd tool
Classes | Typedefs | Functions | Variables
incremental Namespace Reference

Classes

struct  BlockBuffer
 
class  File
 
class  IncrementalServer
 
class  ISDatabaseEntry
 
class  ISSignedDatabaseEntry
 
class  ISUnsignedDatabaseEntry
 
struct  RequestCommand
 
struct  ResponseHeader
 

Typedefs

using Files = std::vector< std::string >
 
using Args = std::vector< std::string_view >
 
using BlockSize = int16_t
 
using FileId = int16_t
 
using BlockIdx = int32_t
 
using NumBlocks = int32_t
 
using BlockType = int8_t
 
using CompressionType = int8_t
 
using RequestType = int16_t
 
using ChunkHeader = int32_t
 
using MagicType = uint32_t
 
using Size = int64_t
 

Functions

static bool requires_v4_signature (const std::string &file)
 
static std::optional< std::pair< std::vector< char >, int32_t > > read_signature (const std::string &signature_file, std::string *error)
 
static bool validate_signature (const std::vector< char > &signature, int32_t tree_size, size_t file_size, std::string *error)
 
static std::optional< std::string > encode_signature (const std::vector< char > &signature, std::string *error)
 
static std::optional< std::pair< unique_fd, size_t > > open_and_get_size (const std::string &file, std::string *error)
 
static std::optional< std::vector< std::unique_ptr< ISDatabaseEntry > > > build_database (const Files &files, std::string *error)
 
static std::optional< unique_fdconnect_and_send_database (const std::vector< std::unique_ptr< ISDatabaseEntry > > &database, const Args &passthrough_args, std::string *error)
 
bool can_install (const Files &files)
 
static bool send_unsigned_files (borrowed_fd connection_fd, const std::vector< std::unique_ptr< ISDatabaseEntry > > &database, std::string *error)
 
static bool wait_for_installation (int read_fd, std::string *error)
 
static std::optional< Processstart_inc_server_and_stream_signed_files (borrowed_fd connection_fd, const std::vector< std::unique_ptr< ISDatabaseEntry > > &database, std::string *error)
 
std::optional< Processinstall (const Files &files, const Args &passthrough_args, std::string *error)
 
std::optional< Processinstall (const Files &files, const Args &passthrough_args, bool silent)
 
static constexpr int64_t roundDownToBlockOffset (int64_t val)
 
static constexpr int64_t roundUpToBlockOffset (int64_t val)
 
static constexpr NumBlocks numBytesToNumBlocks (int64_t bytes)
 
static constexpr off64_t blockIndexToOffset (BlockIdx blockIdx)
 
template<typename T >
static constexpr T toBigEndian (T t)
 
template<typename T >
static constexpr T readBigEndian (void *data)
 
struct incremental::RequestCommand __attribute__ ((packed))
 
template<size_t Size = kBlockSize>
struct incremental::BlockBuffer __attribute__ ((packed))
 
static std::pair< unique_fd, int64_t > open_fd (const char *filepath)
 
static std::pair< unique_fd, int64_t > open_signature (int64_t file_size, const char *filepath)
 
bool serve (int connection_fd, int output_fd, int argc, const char **argv)
 
Size verity_tree_blocks_for_file (Size fileSize)
 
Size verity_tree_size_for_file (Size fileSize)
 
static std::optional< int32_t > read_int32 (borrowed_fd fd, std::string *error)
 
static bool skip_int (borrowed_fd fd, std::string *error)
 
static bool append_int (borrowed_fd fd, std::vector< char > *bytes, std::string *error)
 
static bool append_bytes_with_size (borrowed_fd fd, std::vector< char > *bytes, int *bytes_left, std::string *error)
 
static bool skip_bytes_with_size (borrowed_fd fd, std::string *error)
 
std::optional< std::pair< std::vector< char >, int32_t > > read_id_sig_headers (borrowed_fd fd, std::string *error)
 
std::optional< std::pair< off64_t, ssize_t > > skip_id_sig_headers (borrowed_fd fd, std::string *error)
 
template<class T >
static T valueAt (borrowed_fd fd, off64_t offset)
 
template<class T >
static void unduplicate (std::vector< T > &v)
 
std::vector< int32_t > PriorityBlocksForFile (const std::string &, borrowed_fd, Size)
 

Variables

static constexpr int kHashesPerBlock = kBlockSize / kDigestSize
 
static constexpr int kCompressedSizeMax = kBlockSize * 0.95
 
static constexpr int8_t kTypeData = 0
 
static constexpr int8_t kTypeHash = 1
 
static constexpr int8_t kCompressionNone = 0
 
static constexpr int8_t kCompressionLZ4 = 1
 
static constexpr int kCompressBound = std::max(kBlockSize, LZ4_COMPRESSBOUND(kBlockSize))
 
static constexpr auto kReadBufferSize = 128 * 1024
 
static constexpr int kPollTimeoutMillis = 300000
 
static constexpr MagicType INCR = 0x494e4352
 
static constexpr RequestType SERVING_COMPLETE = 0
 
static constexpr RequestType BLOCK_MISSING = 1
 
static constexpr RequestType PREFETCH = 2
 
static constexpr RequestType DESTROY = 3
 
class incremental::File __attribute__
 
constexpr int kBlockSize = 4096
 
constexpr int kSha256DigestSize = 32
 
constexpr int kDigestSize = kSha256DigestSize
 
constexpr int kMaxSignatureSize = 8096
 
constexpr std::string_view IDSIG = ".idsig"
 

Typedef Documentation

◆ Args

using incremental::Args = typedef std::vector<std::string_view>

◆ BlockIdx

using incremental::BlockIdx = typedef int32_t

◆ BlockSize

using incremental::BlockSize = typedef int16_t

◆ BlockType

using incremental::BlockType = typedef int8_t

◆ ChunkHeader

using incremental::ChunkHeader = typedef int32_t

◆ CompressionType

using incremental::CompressionType = typedef int8_t

◆ FileId

using incremental::FileId = typedef int16_t

◆ Files

using incremental::Files = typedef std::vector<std::string>

◆ MagicType

using incremental::MagicType = typedef uint32_t

◆ NumBlocks

using incremental::NumBlocks = typedef int32_t

◆ RequestType

using incremental::RequestType = typedef int16_t

◆ Size

using incremental::Size = typedef int64_t

Function Documentation

◆ __attribute__() [1/2]

struct incremental::RequestCommand incremental::__attribute__ ( (packed)  )

◆ __attribute__() [2/2]

template<size_t Size = kBlockSize>
struct incremental::BlockBuffer incremental::__attribute__ ( (packed)  )

◆ append_bytes_with_size()

static bool incremental::append_bytes_with_size ( borrowed_fd  fd,
std::vector< char > *  bytes,
int *  bytes_left,
std::string *  error 
)
inlinestatic

◆ append_int()

static bool incremental::append_int ( borrowed_fd  fd,
std::vector< char > *  bytes,
std::string *  error 
)
inlinestatic

◆ blockIndexToOffset()

static constexpr off64_t incremental::blockIndexToOffset ( BlockIdx  blockIdx)
inlinestaticconstexpr

◆ build_database()

static std::optional< std::vector< std::unique_ptr< ISDatabaseEntry > > > incremental::build_database ( const Files files,
std::string *  error 
)
static

◆ can_install()

bool incremental::can_install ( const Files files)

◆ connect_and_send_database()

static std::optional< unique_fd > incremental::connect_and_send_database ( const std::vector< std::unique_ptr< ISDatabaseEntry > > &  database,
const Args passthrough_args,
std::string *  error 
)
static

◆ encode_signature()

static std::optional< std::string > incremental::encode_signature ( const std::vector< char > &  signature,
std::string *  error 
)
static

◆ install() [1/2]

std::optional< Process > incremental::install ( const Files files,
const Args passthrough_args,
bool  silent 
)

◆ install() [2/2]

std::optional< Process > incremental::install ( const Files files,
const Args passthrough_args,
std::string *  error 
)

◆ numBytesToNumBlocks()

static constexpr NumBlocks incremental::numBytesToNumBlocks ( int64_t  bytes)
inlinestaticconstexpr

◆ open_and_get_size()

static std::optional< std::pair< unique_fd, size_t > > incremental::open_and_get_size ( const std::string &  file,
std::string *  error 
)
static

◆ open_fd()

static std::pair< unique_fd, int64_t > incremental::open_fd ( const char *  filepath)
static

◆ open_signature()

static std::pair< unique_fd, int64_t > incremental::open_signature ( int64_t  file_size,
const char *  filepath 
)
static

◆ PriorityBlocksForFile()

std::vector< int32_t > incremental::PriorityBlocksForFile ( const std::string &  ,
borrowed_fd  ,
Size   
)

◆ read_id_sig_headers()

std::optional< std::pair< std::vector< char >, int32_t > > incremental::read_id_sig_headers ( borrowed_fd  fd,
std::string *  error 
)

◆ read_int32()

static std::optional< int32_t > incremental::read_int32 ( borrowed_fd  fd,
std::string *  error 
)
inlinestatic

◆ read_signature()

static std::optional< std::pair< std::vector< char >, int32_t > > incremental::read_signature ( const std::string &  signature_file,
std::string *  error 
)
static

◆ readBigEndian()

template<typename T >
static constexpr T incremental::readBigEndian ( void *  data)
inlinestaticconstexpr

◆ requires_v4_signature()

static bool incremental::requires_v4_signature ( const std::string &  file)
static

◆ roundDownToBlockOffset()

static constexpr int64_t incremental::roundDownToBlockOffset ( int64_t  val)
inlinestaticconstexpr

◆ roundUpToBlockOffset()

static constexpr int64_t incremental::roundUpToBlockOffset ( int64_t  val)
inlinestaticconstexpr

◆ send_unsigned_files()

static bool incremental::send_unsigned_files ( borrowed_fd  connection_fd,
const std::vector< std::unique_ptr< ISDatabaseEntry > > &  database,
std::string *  error 
)
static

◆ serve()

bool incremental::serve ( int  connection_fd,
int  output_fd,
int  argc,
const char **  argv 
)

◆ skip_bytes_with_size()

static bool incremental::skip_bytes_with_size ( borrowed_fd  fd,
std::string *  error 
)
inlinestatic

◆ skip_id_sig_headers()

std::optional< std::pair< off64_t, ssize_t > > incremental::skip_id_sig_headers ( borrowed_fd  fd,
std::string *  error 
)

◆ skip_int()

static bool incremental::skip_int ( borrowed_fd  fd,
std::string *  error 
)
inlinestatic

◆ start_inc_server_and_stream_signed_files()

static std::optional< Process > incremental::start_inc_server_and_stream_signed_files ( borrowed_fd  connection_fd,
const std::vector< std::unique_ptr< ISDatabaseEntry > > &  database,
std::string *  error 
)
static

◆ toBigEndian()

template<typename T >
static constexpr T incremental::toBigEndian ( t)
inlinestaticconstexpr

◆ unduplicate()

template<class T >
static void incremental::unduplicate ( std::vector< T > &  v)
static

◆ validate_signature()

static bool incremental::validate_signature ( const std::vector< char > &  signature,
int32_t  tree_size,
size_t  file_size,
std::string *  error 
)
static

◆ valueAt()

template<class T >
static T incremental::valueAt ( borrowed_fd  fd,
off64_t  offset 
)
static

◆ verity_tree_blocks_for_file()

Size incremental::verity_tree_blocks_for_file ( Size  fileSize)

◆ verity_tree_size_for_file()

Size incremental::verity_tree_size_for_file ( Size  fileSize)

◆ wait_for_installation()

static bool incremental::wait_for_installation ( int  read_fd,
std::string *  error 
)
static

Variable Documentation

◆ __attribute__

struct incremental::ResponseHeader incremental::__attribute__

◆ BLOCK_MISSING

constexpr RequestType incremental::BLOCK_MISSING = 1
staticconstexpr

◆ DESTROY

constexpr RequestType incremental::DESTROY = 3
staticconstexpr

◆ IDSIG

constexpr std::string_view incremental::IDSIG = ".idsig"
constexpr

◆ INCR

constexpr MagicType incremental::INCR = 0x494e4352
staticconstexpr

◆ kBlockSize

constexpr int incremental::kBlockSize = 4096
constexpr

◆ kCompressBound

constexpr int incremental::kCompressBound = std::max(kBlockSize, LZ4_COMPRESSBOUND(kBlockSize))
staticconstexpr

◆ kCompressedSizeMax

constexpr int incremental::kCompressedSizeMax = kBlockSize * 0.95
staticconstexpr

◆ kCompressionLZ4

constexpr int8_t incremental::kCompressionLZ4 = 1
staticconstexpr

◆ kCompressionNone

constexpr int8_t incremental::kCompressionNone = 0
staticconstexpr

◆ kDigestSize

constexpr int incremental::kDigestSize = kSha256DigestSize
constexpr

◆ kHashesPerBlock

constexpr int incremental::kHashesPerBlock = kBlockSize / kDigestSize
staticconstexpr

◆ kMaxSignatureSize

constexpr int incremental::kMaxSignatureSize = 8096
constexpr

◆ kPollTimeoutMillis

constexpr int incremental::kPollTimeoutMillis = 300000
staticconstexpr

◆ kReadBufferSize

constexpr auto incremental::kReadBufferSize = 128 * 1024
staticconstexpr

◆ kSha256DigestSize

constexpr int incremental::kSha256DigestSize = 32
constexpr

◆ kTypeData

constexpr int8_t incremental::kTypeData = 0
staticconstexpr

◆ kTypeHash

constexpr int8_t incremental::kTypeHash = 1
staticconstexpr

◆ PREFETCH

constexpr RequestType incremental::PREFETCH = 2
staticconstexpr

◆ SERVING_COMPLETE

constexpr RequestType incremental::SERVING_COMPLETE = 0
staticconstexpr