1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_DEVTOOLS_DEVICE_ADB_ADB_CLIENT_SOCKET_H_ 6 #define CHROME_BROWSER_DEVTOOLS_DEVICE_ADB_ADB_CLIENT_SOCKET_H_ 7 8 #include "base/callback.h" 9 #include "net/base/io_buffer.h" 10 #include "net/socket/stream_socket.h" 11 12 class AdbClientSocket { 13 public: 14 typedef base::Callback<void(int, const std::string&)> CommandCallback; 15 typedef base::Callback<void(int result, 16 scoped_ptr<net::StreamSocket>)> SocketCallback; 17 18 static void AdbQuery(int port, 19 const std::string& query, 20 const CommandCallback& callback); 21 22 23 static void TransportQuery(int port, 24 const std::string& serial, 25 const std::string& socket_name, 26 const SocketCallback& callback); 27 28 protected: 29 explicit AdbClientSocket(int port); 30 ~AdbClientSocket(); 31 32 void Connect(const net::CompletionCallback& callback); 33 34 void SendCommand(const std::string& command, 35 bool is_void, 36 const CommandCallback& callback); 37 38 scoped_ptr<net::StreamSocket> socket_; 39 40 private: 41 void ReadResponse(const CommandCallback& callback, bool is_void, int result); 42 43 void OnResponseHeader(const CommandCallback& callback, 44 bool is_void, 45 scoped_refptr<net::IOBuffer> response_buffer, 46 int result); 47 48 void OnResponseData(const CommandCallback& callback, 49 const std::string& response, 50 scoped_refptr<net::IOBuffer> response_buffer, 51 int bytes_left, 52 int result); 53 54 std::string host_; 55 int port_; 56 57 DISALLOW_COPY_AND_ASSIGN(AdbClientSocket); 58 }; 59 60 #endif // CHROME_BROWSER_DEVTOOLS_DEVICE_ADB_ADB_CLIENT_SOCKET_H_ 61