Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Unified Diff: tools/android/forwarder2/host_controller.cc

Issue 60033002: Make HostController/DeviceListener deletion fully synchronous. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/android/forwarder2/host_controller.h ('k') | tools/android/forwarder2/self_deleter_helper.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/android/forwarder2/host_controller.cc
diff --git a/tools/android/forwarder2/host_controller.cc b/tools/android/forwarder2/host_controller.cc
index efc288760f47c63609eaffd3ed8369032da99a75..94e63ecabb203d29d28a8d255c9d5bcb1df3e3a6 100644
--- a/tools/android/forwarder2/host_controller.cc
+++ b/tools/android/forwarder2/host_controller.cc
@@ -6,6 +6,7 @@
#include <string>
+#include "base/basictypes.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/logging.h"
@@ -56,10 +57,6 @@ scoped_ptr<HostController> HostController::Create(
HostController::~HostController() {
DCHECK(deletion_task_runner_->RunsTasksOnCurrentThread());
delete_controller_notifier_->Notify();
- // Note that the Forwarder instance (that also received a delete notification)
- // might still be running on its own thread at this point. This is not a
- // problem since it will self-delete once the socket that it is operating on
- // is closed.
}
void HostController::Start() {
@@ -101,7 +98,7 @@ void HostController::ReadCommandOnInternalThread() {
return;
}
// Try to connect to host server.
- scoped_ptr<Socket> host_server_data_socket(CreateSocket());
+ scoped_ptr<Socket> host_server_data_socket(new Socket());
if (!host_server_data_socket->ConnectTcp(std::string(), host_port_)) {
LOG(ERROR) << "Could not Connect HostServerData socket on port: "
<< host_port_;
@@ -114,7 +111,6 @@ void HostController::ReadCommandOnInternalThread() {
ReadNextCommandSoon();
return;
}
- LOG(ERROR) << "Will delete host controller: " << host_port_;
OnInternalThreadError();
return;
}
@@ -127,7 +123,7 @@ void HostController::ReadCommandOnInternalThread() {
void HostController::StartForwarder(
scoped_ptr<Socket> host_server_data_socket) {
- scoped_ptr<Socket> adb_data_socket(CreateSocket());
+ scoped_ptr<Socket> adb_data_socket(new Socket());
if (!adb_data_socket->ConnectTcp("", adb_port_)) {
LOG(ERROR) << "Could not connect AdbDataSocket on port: " << adb_port_;
OnInternalThreadError();
@@ -146,17 +142,10 @@ void HostController::StartForwarder(
OnInternalThreadError();
return;
}
- forwarder2::StartForwarder(
+ forwarders_manager_.CreateAndStartNewForwarder(
host_server_data_socket.Pass(), adb_data_socket.Pass());
}
-scoped_ptr<Socket> HostController::CreateSocket() {
- scoped_ptr<Socket> socket(new Socket());
- socket->AddEventFd(global_exit_notifier_fd_);
- socket->AddEventFd(delete_controller_notifier_->receiver_fd());
- return socket.Pass();
-}
-
void HostController::OnInternalThreadError() {
UnmapPortOnDevice();
self_deleter_helper_.MaybeSelfDeleteSoon();
« no previous file with comments | « tools/android/forwarder2/host_controller.h ('k') | tools/android/forwarder2/self_deleter_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698