- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / devtools / adb_client_socket.h
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_BROWSER_DEVTOOLS_ADB_CLIENT_SOCKET_H_
6 #define CHROME_BROWSER_DEVTOOLS_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                               net::StreamSocket*)> SocketCallback;
17
18   static void AdbQuery(int port,
19                        const std::string& query,
20                        const CommandCallback& callback);
21
22
23   static void HttpQuery(net::StreamSocket* socket,
24                         const std::string& request,
25                         const CommandCallback& callback);
26
27   static void HttpQuery(net::StreamSocket* socket,
28                         const std::string& request,
29                         const SocketCallback& callback);
30
31   static void TransportQuery(int port,
32                              const std::string& serial,
33                              const std::string& socket_name,
34                              const SocketCallback& callback);
35
36   explicit AdbClientSocket(int port);
37   ~AdbClientSocket();
38
39  protected:
40   void Connect(const net::CompletionCallback& callback);
41
42   void SendCommand(const std::string& command,
43                    bool is_void,
44                    const CommandCallback& callback);
45
46   scoped_ptr<net::StreamSocket> socket_;
47
48  private:
49   void ReadResponse(const CommandCallback& callback, bool is_void, int result);
50
51   void OnResponseHeader(const CommandCallback& callback,
52                         bool is_void,
53                         scoped_refptr<net::IOBuffer> response_buffer,
54                         int result);
55
56   void OnResponseData(const CommandCallback& callback,
57                       const std::string& response,
58                       scoped_refptr<net::IOBuffer> response_buffer,
59                       int bytes_left,
60                       int result);
61
62   std::string host_;
63   int port_;
64
65   DISALLOW_COPY_AND_ASSIGN(AdbClientSocket);
66 };
67
68 #endif  // CHROME_BROWSER_DEVTOOLS_ADB_CLIENT_SOCKET_H_