Loading adb/client/commandline.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -1326,9 +1326,9 @@ static bool _use_legacy_install() { } int adb_commandline(int argc, const char** argv) { int no_daemon = 0; int is_daemon = 0; int is_server = 0; bool no_daemon = false; bool is_daemon = false; bool is_server = false; int r; TransportType transport_type = kTransportAny; int ack_reply_fd = -1; Loading @@ -1348,12 +1348,12 @@ int adb_commandline(int argc, const char** argv) { while (argc > 0) { if (!strcmp(argv[0],"server")) { is_server = 1; is_server = true; } else if (!strcmp(argv[0],"nodaemon")) { no_daemon = 1; no_daemon = true; } else if (!strcmp(argv[0], "fork-server")) { /* this is a special flag used only when the ADB client launches the ADB Server */ is_daemon = 1; is_daemon = true; } else if (!strcmp(argv[0], "--reply-fd")) { if (argc < 2) return syntax_error("--reply-fd requires an argument"); const char* reply_fd_str = argv[1]; Loading adb/client/main.cpp +13 −3 Original line number Diff line number Diff line Loading @@ -118,10 +118,20 @@ int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply init_transport_registration(); init_reconnect_handler(); if (!getenv("ADB_MDNS") || strcmp(getenv("ADB_MDNS"), "0") != 0) { init_mdns_transport_discovery(); } if (!getenv("ADB_USB") || strcmp(getenv("ADB_USB"), "0") != 0) { usb_init(); } else { adb_notify_device_scan_complete(); } if (!getenv("ADB_EMU") || strcmp(getenv("ADB_EMU"), "0") != 0) { local_init(DEFAULT_ADB_LOCAL_TRANSPORT_PORT); } std::string error; Loading adb/transport.cpp +13 −11 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ #include <deque> #include <list> #include <mutex> #include <queue> #include <set> #include <thread> #include <android-base/logging.h> Loading Loading @@ -108,9 +108,11 @@ class ReconnectHandler { size_t attempts_left; bool operator<(const ReconnectAttempt& rhs) const { // std::priority_queue returns the largest element first, so we want attempts that have // less time remaining (i.e. smaller time_points) to compare greater. return reconnect_time > rhs.reconnect_time; if (reconnect_time == rhs.reconnect_time) { return reinterpret_cast<uintptr_t>(transport) < reinterpret_cast<uintptr_t>(rhs.transport); } return reconnect_time < rhs.reconnect_time; } }; Loading @@ -123,7 +125,7 @@ class ReconnectHandler { bool running_ GUARDED_BY(reconnect_mutex_) = true; std::thread handler_thread_; std::condition_variable reconnect_cv_; std::priority_queue<ReconnectAttempt> reconnect_queue_ GUARDED_BY(reconnect_mutex_); std::set<ReconnectAttempt> reconnect_queue_ GUARDED_BY(reconnect_mutex_); DISALLOW_COPY_AND_ASSIGN(ReconnectHandler); }; Loading @@ -145,8 +147,8 @@ void ReconnectHandler::Stop() { // Drain the queue to free all resources. std::lock_guard<std::mutex> lock(reconnect_mutex_); while (!reconnect_queue_.empty()) { ReconnectAttempt attempt = reconnect_queue_.top(); reconnect_queue_.pop(); ReconnectAttempt attempt = *reconnect_queue_.begin(); reconnect_queue_.erase(reconnect_queue_.begin()); remove_transport(attempt.transport); } } Loading Loading @@ -176,7 +178,7 @@ void ReconnectHandler::Run() { // system_clock as its clock, so we're probably hosed if the clock changes, // even if we use steady_clock throughout. This problem goes away once we // switch to libc++. reconnect_cv_.wait_until(lock, reconnect_queue_.top().reconnect_time); reconnect_cv_.wait_until(lock, reconnect_queue_.begin()->reconnect_time); } else { reconnect_cv_.wait(lock); } Loading @@ -187,12 +189,12 @@ void ReconnectHandler::Run() { // Go back to sleep in case |reconnect_cv_| woke up spuriously and we still // have more time to wait for the current attempt. auto now = std::chrono::steady_clock::now(); if (reconnect_queue_.top().reconnect_time > now) { if (reconnect_queue_.begin()->reconnect_time > now) { continue; } attempt = reconnect_queue_.top(); reconnect_queue_.pop(); attempt = *reconnect_queue_.begin(); reconnect_queue_.erase(reconnect_queue_.begin()); if (attempt.transport->kicked()) { D("transport %s was kicked. giving up on it.", attempt.transport->serial.c_str()); remove_transport(attempt.transport); Loading Loading
adb/client/commandline.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -1326,9 +1326,9 @@ static bool _use_legacy_install() { } int adb_commandline(int argc, const char** argv) { int no_daemon = 0; int is_daemon = 0; int is_server = 0; bool no_daemon = false; bool is_daemon = false; bool is_server = false; int r; TransportType transport_type = kTransportAny; int ack_reply_fd = -1; Loading @@ -1348,12 +1348,12 @@ int adb_commandline(int argc, const char** argv) { while (argc > 0) { if (!strcmp(argv[0],"server")) { is_server = 1; is_server = true; } else if (!strcmp(argv[0],"nodaemon")) { no_daemon = 1; no_daemon = true; } else if (!strcmp(argv[0], "fork-server")) { /* this is a special flag used only when the ADB client launches the ADB Server */ is_daemon = 1; is_daemon = true; } else if (!strcmp(argv[0], "--reply-fd")) { if (argc < 2) return syntax_error("--reply-fd requires an argument"); const char* reply_fd_str = argv[1]; Loading
adb/client/main.cpp +13 −3 Original line number Diff line number Diff line Loading @@ -118,10 +118,20 @@ int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply init_transport_registration(); init_reconnect_handler(); if (!getenv("ADB_MDNS") || strcmp(getenv("ADB_MDNS"), "0") != 0) { init_mdns_transport_discovery(); } if (!getenv("ADB_USB") || strcmp(getenv("ADB_USB"), "0") != 0) { usb_init(); } else { adb_notify_device_scan_complete(); } if (!getenv("ADB_EMU") || strcmp(getenv("ADB_EMU"), "0") != 0) { local_init(DEFAULT_ADB_LOCAL_TRANSPORT_PORT); } std::string error; Loading
adb/transport.cpp +13 −11 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ #include <deque> #include <list> #include <mutex> #include <queue> #include <set> #include <thread> #include <android-base/logging.h> Loading Loading @@ -108,9 +108,11 @@ class ReconnectHandler { size_t attempts_left; bool operator<(const ReconnectAttempt& rhs) const { // std::priority_queue returns the largest element first, so we want attempts that have // less time remaining (i.e. smaller time_points) to compare greater. return reconnect_time > rhs.reconnect_time; if (reconnect_time == rhs.reconnect_time) { return reinterpret_cast<uintptr_t>(transport) < reinterpret_cast<uintptr_t>(rhs.transport); } return reconnect_time < rhs.reconnect_time; } }; Loading @@ -123,7 +125,7 @@ class ReconnectHandler { bool running_ GUARDED_BY(reconnect_mutex_) = true; std::thread handler_thread_; std::condition_variable reconnect_cv_; std::priority_queue<ReconnectAttempt> reconnect_queue_ GUARDED_BY(reconnect_mutex_); std::set<ReconnectAttempt> reconnect_queue_ GUARDED_BY(reconnect_mutex_); DISALLOW_COPY_AND_ASSIGN(ReconnectHandler); }; Loading @@ -145,8 +147,8 @@ void ReconnectHandler::Stop() { // Drain the queue to free all resources. std::lock_guard<std::mutex> lock(reconnect_mutex_); while (!reconnect_queue_.empty()) { ReconnectAttempt attempt = reconnect_queue_.top(); reconnect_queue_.pop(); ReconnectAttempt attempt = *reconnect_queue_.begin(); reconnect_queue_.erase(reconnect_queue_.begin()); remove_transport(attempt.transport); } } Loading Loading @@ -176,7 +178,7 @@ void ReconnectHandler::Run() { // system_clock as its clock, so we're probably hosed if the clock changes, // even if we use steady_clock throughout. This problem goes away once we // switch to libc++. reconnect_cv_.wait_until(lock, reconnect_queue_.top().reconnect_time); reconnect_cv_.wait_until(lock, reconnect_queue_.begin()->reconnect_time); } else { reconnect_cv_.wait(lock); } Loading @@ -187,12 +189,12 @@ void ReconnectHandler::Run() { // Go back to sleep in case |reconnect_cv_| woke up spuriously and we still // have more time to wait for the current attempt. auto now = std::chrono::steady_clock::now(); if (reconnect_queue_.top().reconnect_time > now) { if (reconnect_queue_.begin()->reconnect_time > now) { continue; } attempt = reconnect_queue_.top(); reconnect_queue_.pop(); attempt = *reconnect_queue_.begin(); reconnect_queue_.erase(reconnect_queue_.begin()); if (attempt.transport->kicked()) { D("transport %s was kicked. giving up on it.", attempt.transport->serial.c_str()); remove_transport(attempt.transport); Loading