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 |