Android-cuttlefish cvd tool
Classes | Namespaces | Macros | Typedefs | Functions | Variables
incremental_server.cpp File Reference
#include "incremental_server.h"
#include <inttypes.h>
#include <lz4.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <array>
#include <deque>
#include <fstream>
#include <thread>
#include <type_traits>
#include <unordered_set>
#include <android-base/endian.h>
#include <android-base/strings.h>
#include "adb.h"
#include "adb_client.h"
#include "adb_io.h"
#include "adb_trace.h"
#include "adb_unique_fd.h"
#include "adb_utils.h"
#include "incremental_utils.h"
#include "sysdeps.h"
Include dependency graph for incremental_server.cpp:

Classes

struct  incremental::RequestCommand
 
struct  incremental::ResponseHeader
 
struct  incremental::BlockBuffer< Size >
 
class  incremental::File
 
class  incremental::IncrementalServer
 
struct  incremental::IncrementalServer::PrefetchState
 

Namespaces

namespace  incremental
 

Macros

#define TRACE_TAG   INCREMENTAL
 

Typedefs

using incremental::BlockSize = int16_t
 
using incremental::FileId = int16_t
 
using incremental::BlockIdx = int32_t
 
using incremental::NumBlocks = int32_t
 
using incremental::BlockType = int8_t
 
using incremental::CompressionType = int8_t
 
using incremental::RequestType = int16_t
 
using incremental::ChunkHeader = int32_t
 
using incremental::MagicType = uint32_t
 

Functions

static constexpr int64_t incremental::roundDownToBlockOffset (int64_t val)
 
static constexpr int64_t incremental::roundUpToBlockOffset (int64_t val)
 
static constexpr NumBlocks incremental::numBytesToNumBlocks (int64_t bytes)
 
static constexpr off64_t incremental::blockIndexToOffset (BlockIdx blockIdx)
 
template<typename T >
static constexpr T incremental::toBigEndian (T t)
 
template<typename T >
static constexpr T incremental::readBigEndian (void *data)
 
struct incremental::RequestCommand incremental::__attribute__ ((packed))
 
static constexpr size_t responseSizeFor (size_t dataSize)
 
template<size_t Size = kBlockSize>
struct incremental::BlockBuffer incremental::__attribute__ ((packed))
 
static std::pair< unique_fd, int64_t > incremental::open_fd (const char *filepath)
 
static std::pair< unique_fd, int64_t > incremental::open_signature (int64_t file_size, const char *filepath)
 
bool incremental::serve (int connection_fd, int output_fd, int argc, const char **argv)
 

Variables

static constexpr int incremental::kHashesPerBlock = kBlockSize / kDigestSize
 
static constexpr int incremental::kCompressedSizeMax = kBlockSize * 0.95
 
static constexpr int8_t incremental::kTypeData = 0
 
static constexpr int8_t incremental::kTypeHash = 1
 
static constexpr int8_t incremental::kCompressionNone = 0
 
static constexpr int8_t incremental::kCompressionLZ4 = 1
 
static constexpr int incremental::kCompressBound = std::max(kBlockSize, LZ4_COMPRESSBOUND(kBlockSize))
 
static constexpr auto incremental::kReadBufferSize = 128 * 1024
 
static constexpr int incremental::kPollTimeoutMillis = 300000
 
static constexpr MagicType incremental::INCR = 0x494e4352
 
static constexpr RequestType incremental::SERVING_COMPLETE = 0
 
static constexpr RequestType incremental::BLOCK_MISSING = 1
 
static constexpr RequestType incremental::PREFETCH = 2
 
static constexpr RequestType incremental::DESTROY = 3
 
RequestType request_type
 
FileId file_id
 
union {
   BlockIdx   block_idx
 
   NumBlocks   num_blocks
 
}; 
 
BlockType block_type
 
CompressionType compression_type
 
BlockSize block_size
 
ResponseHeader header
 
char data [Size]
 
class incremental::File incremental::__attribute__
 

Macro Definition Documentation

◆ TRACE_TAG

#define TRACE_TAG   INCREMENTAL

Function Documentation

◆ responseSizeFor()

static constexpr size_t __attribute__::responseSizeFor ( size_t  dataSize)
staticconstexpr

Variable Documentation

◆ 

union { ... }

◆ block_idx

BlockIdx block_idx

◆ block_size

BlockSize block_size

◆ block_type

BlockType block_type

◆ compression_type

CompressionType compression_type

◆ data

char data[Size]

◆ file_id

FileId file_id

◆ header

ResponseHeader header

◆ num_blocks

NumBlocks num_blocks

◆ request_type

RequestType request_type