1// Copyright (c) 2013 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_TEST_CHROMEDRIVER_NET_ADB_CLIENT_SOCKET_H_ 6#define CHROME_TEST_CHROMEDRIVER_NET_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 12class AdbClientSocket { 13 public: 14 typedef base::Callback<void(int, const std::string&)> CommandCallback; 15 typedef base::Callback<void(int result, 16 net::StreamSocket*)> SocketCallback; 17 18 static void AdbQuery(int port, 19 const std::string& query, 20 const CommandCallback& callback); 21 22 static void TransportQuery(int port, 23 const std::string& serial, 24 const std::string& socket_name, 25 const SocketCallback& callback); 26 27 static void HttpQuery(int port, 28 const std::string& serial, 29 const std::string& socket_name, 30 const std::string& request, 31 const CommandCallback& callback); 32 33 static void HttpQuery(int port, 34 const std::string& serial, 35 const std::string& socket_name, 36 const std::string& request, 37 const SocketCallback& callback); 38 39 explicit AdbClientSocket(int port); 40 ~AdbClientSocket(); 41 42 protected: 43 void Connect(const net::CompletionCallback& callback); 44 45 void SendCommand(const std::string& command, 46 bool is_void, 47 const CommandCallback& callback); 48 49 scoped_ptr<net::StreamSocket> socket_; 50 51 private: 52 void ReadResponse(const CommandCallback& callback, bool is_void, int result); 53 54 void OnResponseHeader(const CommandCallback& callback, 55 bool is_void, 56 scoped_refptr<net::IOBuffer> response_buffer, 57 int result); 58 59 void OnResponseData(const CommandCallback& callback, 60 const std::string& response, 61 scoped_refptr<net::IOBuffer> response_buffer, 62 int bytes_left, 63 int result); 64 65 std::string host_; 66 int port_; 67 68 DISALLOW_COPY_AND_ASSIGN(AdbClientSocket); 69}; 70 71#endif // CHROME_TEST_CHROMEDRIVER_NET_ADB_CLIENT_SOCKET_H_ 72