21#include <google/protobuf/text_format.h>
55 static bool SendTo(std::string*
string, FILE* stream,
const char* buffer,
size_t length,
57 if (
string !=
nullptr) {
58 string->append(buffer, length);
61 bool okay = (fwrite(buffer, 1, length, stream) == length);
63 return returnErrors ? okay :
true;
138 std::string* std_err =
nullptr)
141 constexpr size_t kHeader_size = 4;
144 std::copy_n(b, l, std::back_inserter(
buffer_));
147 if (
buffer_.size() < kHeader_size) {
153 const std::string expected_size_hex = std::string(
buffer_.data(), kHeader_size);
154 const size_t expected_size = strtoull(expected_size_hex.c_str(),
nullptr, 16);
157 if (
buffer_.size() < expected_size + kHeader_size) {
163 binary_proto.ParseFromString(std::string(
buffer_.data() + kHeader_size, expected_size));
164 std::string string_proto;
165 google::protobuf::TextFormat::PrintToString(binary_proto, &string_proto);
171 SendToOut(string_proto.data(), string_proto.length());
199 const std::string& command,
bool disable_shell_protocol =
false,
211template <
typename ContainerT>
217 fprintf(stderr,
"adb: failed to run abb_exec. Error: %s\n",
error->c_str());
#define ABB_ARG_DELIMETER
Definition: adb.h:209
int adb_connect(std::string_view service, std::string *error)
Definition: adb_client.cpp:238
Definition: commandline.h:73
bool OnStdoutReceived(const char *buffer, size_t length) override
Definition: commandline.h:86
DefaultStandardStreamsCallback(std::string *stdout_str, std::string *stderr_str, bool returnErrors)
Definition: commandline.h:80
bool returnErrors_
Definition: commandline.h:116
DefaultStandardStreamsCallback(std::string *stdout_str, std::string *stderr_str)
Definition: commandline.h:77
void ReturnErrors(bool returnErrors)
Definition: commandline.h:109
int Done(int status)
Definition: commandline.h:105
std::string * stderr_str_
Definition: commandline.h:115
bool SendToErr(const char *buffer, size_t length)
Definition: commandline.h:101
bool SendToOut(const char *buffer, size_t length)
Definition: commandline.h:96
std::string * stdout_str_
Definition: commandline.h:114
DISALLOW_COPY_AND_ASSIGN(DefaultStandardStreamsCallback)
bool OnStderrReceived(const char *buffer, size_t length) override
Definition: commandline.h:91
Definition: commandline.h:135
bool OnStdoutReceived(const char *b, size_t l) override
Definition: commandline.h:140
DISALLOW_COPY_AND_ASSIGN(ProtoBinaryToText)
std::string message
Definition: commandline.h:185
std::vector< char > buffer_
Definition: commandline.h:184
ProtoBinaryToText(const std::string &m, std::string *std_out=nullptr, std::string *std_err=nullptr)
Definition: commandline.h:137
Definition: commandline.h:121
int Done(int status) final
Definition: commandline.h:126
SilentStandardStreamsCallbackInterface()=default
bool OnStderrReceived(const char *, size_t) final
Definition: commandline.h:125
bool OnStdoutReceived(const char *, size_t) final
Definition: commandline.h:124
Definition: commandline.h:35
virtual int Done(int status)=0
StandardStreamsCallbackInterface()
Definition: commandline.h:37
virtual bool OnStderrReceived(const char *buffer, size_t length)=0
static bool SendTo(std::string *string, FILE *stream, const char *buffer, size_t length, bool returnErrors)
Definition: commandline.h:55
DISALLOW_COPY_AND_ASSIGN(StandardStreamsCallbackInterface)
virtual bool OnStdoutReceived(const char *buffer, size_t length)=0
Definition: unique_fd.h:61
unique_fd send_abb_exec_command(const ContainerT &command_args, std::string *error)
Definition: commandline.h:212
int read_and_dump(borrowed_fd fd, bool use_shell_protocol=false, StandardStreamsCallbackInterface *callback=&DEFAULT_STANDARD_STREAMS_CALLBACK)
Definition: commandline.cpp:324
int send_shell_command(const std::string &command, bool disable_shell_protocol=false, StandardStreamsCallbackInterface *callback=&DEFAULT_STANDARD_STREAMS_CALLBACK)
Definition: commandline.cpp:1110
int adb_commandline(int argc, const char **argv)
Definition: commandline.cpp:1524
DefaultStandardStreamsCallback DEFAULT_STANDARD_STREAMS_CALLBACK
const std::optional< FeatureSet > & adb_get_feature_set_or_die()
Definition: commandline.cpp:1441
bool copy_to_file(int inFd, int outFd)
Definition: commandline.cpp:390
#define error(format, args...)
Definition: fec_private.h:201
int status()
Definition: health.cpp:42
std::string Join(const ContainerT &things, SeparatorT separator)
Definition: strings.h:98
Definition: unique_fd.h:292