Android-cuttlefish cvd tool
Namespaces | Macros | Typedefs | Functions | Variables
transport.cpp File Reference
#include "sysdeps.h"
#include "transport.h"
#include <ctype.h>
#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <algorithm>
#include <list>
#include <memory>
#include <mutex>
#include <set>
#include <string>
#include <thread>
#include <adb/crypto/rsa_2048_key.h>
#include <adb/crypto/x509_generator.h>
#include <adb/tls/tls_connection.h>
#include <android-base/logging.h>
#include <android-base/no_destructor.h>
#include <android-base/parsenetaddress.h>
#include <android-base/stringprintf.h>
#include <android-base/strings.h>
#include <android-base/thread_annotations.h>
#include <diagnose_usb.h>
#include "adb.h"
#include "adb_auth.h"
#include "adb_io.h"
#include "adb_trace.h"
#include "adb_utils.h"
#include "fdevent/fdevent.h"
#include "sysdeps/chrono.h"
Include dependency graph for transport.cpp:

Namespaces

namespace  anonymous_namespace{transport.cpp}
 

Macros

#define TRACE_TAG   TRANSPORT
 

Typedefs

using TlsError = TlsConnection::TlsError
 

Functions

static void remove_transport (atransport *transport)
 
static void transport_destroy (atransport *transport)
 
TransportId NextTransportId ()
 
void send_packet (apacket *p, atransport *t)
 
void kick_transport (atransport *t, bool reset)
 
void update_transports ()
 
static void fdevent_unregister_transport (atransport *t)
 
static void fdevent_register_transport (atransport *t)
 
void kick_all_transports ()
 
void kick_all_tcp_tls_transports ()
 
void kick_all_transports_by_auth_key (std::string_view auth_key)
 
void register_transport (atransport *transport)
 
const FeatureSetsupported_features ()
 
std::string FeatureSetToString (const FeatureSet &features)
 
FeatureSet StringToFeatureSet (const std::string &features_string)
 
template<class Range , class Value >
static bool contains (const Range &r, const Value &v)
 
bool CanUseFeature (const FeatureSet &feature_set, const std::string &feature)
 
bool validate_transport_list (const std::list< atransport * > &list, const std::string &serial, atransport *t, int *error)
 
bool register_socket_transport (unique_fd s, std::string serial, int port, bool is_emulator, atransport::ReconnectCallback reconnect, bool use_tls, int *error)
 
bool check_header (apacket *p, atransport *t)
 

Variables

static auto & transport_lock = *new std::recursive_mutex()
 
static auto & pending_list = *new std::list<atransport*>()
 
static auto & transport_list = *new std::list<atransport*>()
 
const char *const kFeatureShell2 = "shell_v2"
 
const char *const kFeatureCmd = "cmd"
 
const char *const kFeatureStat2 = "stat_v2"
 
const char *const kFeatureLs2 = "ls_v2"
 
const char *const kFeatureLibusb = "libusb"
 
const char *const kFeaturePushSync = "push_sync"
 
const char *const kFeatureApex = "apex"
 
const char *const kFeatureFixedPushMkdir = "fixed_push_mkdir"
 
const char *const kFeatureAbb = "abb"
 
const char *const kFeatureFixedPushSymlinkTimestamp = "fixed_push_symlink_timestamp"
 
const char *const kFeatureAbbExec = "abb_exec"
 
const char *const kFeatureRemountShell = "remount_shell"
 
const char *const kFeatureTrackApp = "track_app"
 
const char *const kFeatureSendRecv2 = "sendrecv_v2"
 
const char *const kFeatureSendRecv2Brotli = "sendrecv_v2_brotli"
 
const char *const kFeatureSendRecv2LZ4 = "sendrecv_v2_lz4"
 
const char *const kFeatureSendRecv2Zstd = "sendrecv_v2_zstd"
 
const char *const kFeatureSendRecv2DryRunSend = "sendrecv_v2_dry_run_send"
 
const char *const kFeatureDelayedAck = "delayed_ack"
 
const char *const kFeatureOpenscreenMdns = "openscreen_mdns"
 
const char *const kFeatureDeviceTrackerProtoFormat = "devicetracker_proto_format"
 
const char *const kFeatureDevRaw = "devraw"
 
const char *const kFeatureAppInfo = "app_info"
 
const char *const kFeatureServerStatus = "server_status"
 
const char *const kFeatureTrackMdns = "track_mdns"
 

Macro Definition Documentation

◆ TRACE_TAG

#define TRACE_TAG   TRANSPORT

Typedef Documentation

◆ TlsError

Function Documentation

◆ CanUseFeature()

bool CanUseFeature ( const FeatureSet feature_set,
const std::string &  feature 
)

◆ check_header()

bool check_header ( apacket p,
atransport t 
)

◆ contains()

template<class Range , class Value >
static bool contains ( const Range &  r,
const Value &  v 
)
static

◆ fdevent_register_transport()

static void fdevent_register_transport ( atransport t)
static

◆ fdevent_unregister_transport()

static void fdevent_unregister_transport ( atransport t)
static

◆ FeatureSetToString()

std::string FeatureSetToString ( const FeatureSet features)

◆ kick_all_tcp_tls_transports()

void kick_all_tcp_tls_transports ( )

◆ kick_all_transports()

void kick_all_transports ( )

◆ kick_all_transports_by_auth_key()

void kick_all_transports_by_auth_key ( std::string_view  auth_key)

◆ kick_transport()

void kick_transport ( atransport t,
bool  reset 
)

◆ NextTransportId()

TransportId NextTransportId ( )

◆ register_socket_transport()

bool register_socket_transport ( unique_fd  s,
std::string  serial,
int  port,
bool  is_emulator,
atransport::ReconnectCallback  reconnect,
bool  use_tls,
int *  error 
)

◆ register_transport()

void register_transport ( atransport transport)

◆ remove_transport()

static void remove_transport ( atransport transport)
static

◆ send_packet()

void send_packet ( apacket p,
atransport t 
)

◆ StringToFeatureSet()

FeatureSet StringToFeatureSet ( const std::string &  features_string)

◆ supported_features()

const FeatureSet & supported_features ( )

◆ transport_destroy()

static void transport_destroy ( atransport transport)
static

◆ update_transports()

void update_transports ( )

◆ validate_transport_list()

bool validate_transport_list ( const std::list< atransport * > &  list,
const std::string &  serial,
atransport t,
int *  error 
)

Variable Documentation

◆ kFeatureAbb

const char* const kFeatureAbb = "abb"

◆ kFeatureAbbExec

const char* const kFeatureAbbExec = "abb_exec"

◆ kFeatureApex

const char* const kFeatureApex = "apex"

◆ kFeatureAppInfo

const char* const kFeatureAppInfo = "app_info"

◆ kFeatureCmd

const char* const kFeatureCmd = "cmd"

◆ kFeatureDelayedAck

const char* const kFeatureDelayedAck = "delayed_ack"

◆ kFeatureDeviceTrackerProtoFormat

const char* const kFeatureDeviceTrackerProtoFormat = "devicetracker_proto_format"

◆ kFeatureDevRaw

const char* const kFeatureDevRaw = "devraw"

◆ kFeatureFixedPushMkdir

const char* const kFeatureFixedPushMkdir = "fixed_push_mkdir"

◆ kFeatureFixedPushSymlinkTimestamp

const char* const kFeatureFixedPushSymlinkTimestamp = "fixed_push_symlink_timestamp"

◆ kFeatureLibusb

const char* const kFeatureLibusb = "libusb"

◆ kFeatureLs2

const char* const kFeatureLs2 = "ls_v2"

◆ kFeatureOpenscreenMdns

const char* const kFeatureOpenscreenMdns = "openscreen_mdns"

◆ kFeaturePushSync

const char* const kFeaturePushSync = "push_sync"

◆ kFeatureRemountShell

const char* const kFeatureRemountShell = "remount_shell"

◆ kFeatureSendRecv2

const char* const kFeatureSendRecv2 = "sendrecv_v2"

◆ kFeatureSendRecv2Brotli

const char* const kFeatureSendRecv2Brotli = "sendrecv_v2_brotli"

◆ kFeatureSendRecv2DryRunSend

const char* const kFeatureSendRecv2DryRunSend = "sendrecv_v2_dry_run_send"

◆ kFeatureSendRecv2LZ4

const char* const kFeatureSendRecv2LZ4 = "sendrecv_v2_lz4"

◆ kFeatureSendRecv2Zstd

const char* const kFeatureSendRecv2Zstd = "sendrecv_v2_zstd"

◆ kFeatureServerStatus

const char* const kFeatureServerStatus = "server_status"

◆ kFeatureShell2

const char* const kFeatureShell2 = "shell_v2"

◆ kFeatureStat2

const char* const kFeatureStat2 = "stat_v2"

◆ kFeatureTrackApp

const char* const kFeatureTrackApp = "track_app"

◆ kFeatureTrackMdns

const char* const kFeatureTrackMdns = "track_mdns"

◆ pending_list

auto& pending_list = *new std::list<atransport*>()
static

◆ transport_list

auto& transport_list = *new std::list<atransport*>()
static

◆ transport_lock

auto& transport_lock = *new std::recursive_mutex()
static