| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <errno.h> | 5 #include <errno.h> |
| 6 #include <signal.h> | 6 #include <signal.h> |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <sys/types.h> | 9 #include <sys/types.h> |
| 10 #include <sys/wait.h> | 10 #include <sys/wait.h> |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 const std::string& device_serial) { | 233 const std::string& device_serial) { |
| 234 base::hash_map<std::string, int>::const_iterator it = | 234 base::hash_map<std::string, int>::const_iterator it = |
| 235 device_serial_to_adb_port_map_.find(device_serial); | 235 device_serial_to_adb_port_map_.find(device_serial); |
| 236 if (it == device_serial_to_adb_port_map_.end()) | 236 if (it == device_serial_to_adb_port_map_.end()) |
| 237 return; | 237 return; |
| 238 | 238 |
| 239 int port = it->second; | 239 int port = it->second; |
| 240 const std::string prefix = base::StringPrintf("%d:", port); | 240 const std::string prefix = base::StringPrintf("%d:", port); |
| 241 for (HostControllerMap::const_iterator others = controllers_->begin(); | 241 for (HostControllerMap::const_iterator others = controllers_->begin(); |
| 242 others != controllers_->end(); ++others) { | 242 others != controllers_->end(); ++others) { |
| 243 if (others->first.find(prefix) == 0U) | 243 if (base::StartsWith(others->first, prefix, base::CompareCase::SENSITIVE)) |
| 244 return; | 244 return; |
| 245 } | 245 } |
| 246 // No other port is being forwarded to this device: | 246 // No other port is being forwarded to this device: |
| 247 // - Remove it from our internal serial -> adb port map. | 247 // - Remove it from our internal serial -> adb port map. |
| 248 // - Remove from "adb forward" command. | 248 // - Remove from "adb forward" command. |
| 249 LOG(INFO) << "Device " << device_serial << " has no more ports."; | 249 LOG(INFO) << "Device " << device_serial << " has no more ports."; |
| 250 device_serial_to_adb_port_map_.erase(device_serial); | 250 device_serial_to_adb_port_map_.erase(device_serial); |
| 251 const std::string serial_part = device_serial.empty() ? | 251 const std::string serial_part = device_serial.empty() ? |
| 252 std::string() : std::string("-s ") + device_serial; | 252 std::string() : std::string("-s ") + device_serial; |
| 253 const std::string command = base::StringPrintf( | 253 const std::string command = base::StringPrintf( |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 std::unique_ptr<HostControllerMap> controllers_; | 311 std::unique_ptr<HostControllerMap> controllers_; |
| 312 bool has_failed_; | 312 bool has_failed_; |
| 313 std::unique_ptr<base::AtExitManager> | 313 std::unique_ptr<base::AtExitManager> |
| 314 at_exit_manager_; // Needed by base::Thread. | 314 at_exit_manager_; // Needed by base::Thread. |
| 315 std::unique_ptr<base::Thread> thread_; | 315 std::unique_ptr<base::Thread> thread_; |
| 316 base::WeakPtrFactory<HostControllersManager> weak_ptr_factory_; | 316 base::WeakPtrFactory<HostControllersManager> weak_ptr_factory_; |
| 317 }; | 317 }; |
| 318 | 318 |
| 319 class ServerDelegate : public Daemon::ServerDelegate { | 319 class ServerDelegate : public Daemon::ServerDelegate { |
| 320 public: | 320 public: |
| 321 ServerDelegate(const std::string& adb_path) | 321 explicit ServerDelegate(const std::string& adb_path) |
| 322 : adb_path_(adb_path), has_failed_(false) {} | 322 : adb_path_(adb_path), has_failed_(false) {} |
| 323 | 323 |
| 324 bool has_failed() const { | 324 bool has_failed() const { |
| 325 return has_failed_ || controllers_manager_.has_failed(); | 325 return has_failed_ || controllers_manager_.has_failed(); |
| 326 } | 326 } |
| 327 | 327 |
| 328 // Daemon::ServerDelegate: | 328 // Daemon::ServerDelegate: |
| 329 void Init() override { | 329 void Init() override { |
| 330 LOG(INFO) << "Starting host process daemon (pid=" << getpid() << ")"; | 330 LOG(INFO) << "Starting host process daemon (pid=" << getpid() << ")"; |
| 331 DCHECK(!g_notifier); | 331 DCHECK(!g_notifier); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 private: | 363 private: |
| 364 std::string adb_path_; | 364 std::string adb_path_; |
| 365 bool has_failed_; | 365 bool has_failed_; |
| 366 HostControllersManager controllers_manager_; | 366 HostControllersManager controllers_manager_; |
| 367 | 367 |
| 368 DISALLOW_COPY_AND_ASSIGN(ServerDelegate); | 368 DISALLOW_COPY_AND_ASSIGN(ServerDelegate); |
| 369 }; | 369 }; |
| 370 | 370 |
| 371 class ClientDelegate : public Daemon::ClientDelegate { | 371 class ClientDelegate : public Daemon::ClientDelegate { |
| 372 public: | 372 public: |
| 373 ClientDelegate(const base::Pickle& command_pickle) | 373 explicit ClientDelegate(const base::Pickle& command_pickle) |
| 374 : command_pickle_(command_pickle), has_failed_(false) {} | 374 : command_pickle_(command_pickle), has_failed_(false) {} |
| 375 | 375 |
| 376 bool has_failed() const { return has_failed_; } | 376 bool has_failed() const { return has_failed_; } |
| 377 | 377 |
| 378 // Daemon::ClientDelegate: | 378 // Daemon::ClientDelegate: |
| 379 void OnDaemonReady(Socket* daemon_socket) override { | 379 void OnDaemonReady(Socket* daemon_socket) override { |
| 380 // Send the forward command to the daemon. | 380 // Send the forward command to the daemon. |
| 381 CHECK_EQ(static_cast<long>(command_pickle_.size()), | 381 CHECK_EQ(static_cast<long>(command_pickle_.size()), |
| 382 daemon_socket->WriteNumBytes(command_pickle_.data(), | 382 daemon_socket->WriteNumBytes(command_pickle_.data(), |
| 383 command_pickle_.size())); | 383 command_pickle_.size())); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 | 471 |
| 472 return client_delegate.has_failed() || daemon_delegate.has_failed(); | 472 return client_delegate.has_failed() || daemon_delegate.has_failed(); |
| 473 } | 473 } |
| 474 | 474 |
| 475 } // namespace | 475 } // namespace |
| 476 } // namespace forwarder2 | 476 } // namespace forwarder2 |
| 477 | 477 |
| 478 int main(int argc, char** argv) { | 478 int main(int argc, char** argv) { |
| 479 return forwarder2::RunHostForwarder(argc, argv); | 479 return forwarder2::RunHostForwarder(argc, argv); |
| 480 } | 480 } |
| OLD | NEW |