blob: fa22debf26ee5de6257d2fd25e39e86ccd6873ec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_DEVTOOLS_DEVICE_USB_ANDROID_USB_SOCKET_H_
#define CHROME_BROWSER_DEVTOOLS_DEVICE_USB_ANDROID_USB_SOCKET_H_
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/threading/non_thread_safe.h"
#include "chrome/browser/devtools/device/usb/android_usb_device.h"
#include "net/base/ip_endpoint.h"
#include "net/socket/stream_socket.h"
namespace base {
class MessageLoop;
}
class AndroidUsbSocket : public net::StreamSocket,
public base::NonThreadSafe {
public:
AndroidUsbSocket(scoped_refptr<AndroidUsbDevice> device,
uint32 socket_id,
const std::string& command,
base::Closure delete_callback);
~AndroidUsbSocket() override;
void HandleIncoming(scoped_ptr<AdbMessage> message);
void Terminated(bool closed_by_device);
// net::StreamSocket implementation.
int Read(net::IOBuffer* buf,
int buf_len,
const net::CompletionCallback& callback) override;
int Write(net::IOBuffer* buf,
int buf_len,
const net::CompletionCallback& callback) override;
int SetReceiveBufferSize(int32 size) override;
int SetSendBufferSize(int32 size) override;
int Connect(const net::CompletionCallback& callback) override;
void Disconnect() override;
bool IsConnected() const override;
bool IsConnectedAndIdle() const override;
int GetPeerAddress(net::IPEndPoint* address) const override;
int GetLocalAddress(net::IPEndPoint* address) const override;
const net::BoundNetLog& NetLog() const override;
void SetSubresourceSpeculation() override;
void SetOmniboxSpeculation() override;
bool WasEverUsed() const override;
bool UsingTCPFastOpen() const override;
bool WasNpnNegotiated() const override;
net::NextProto GetNegotiatedProtocol() const override;
bool GetSSLInfo(net::SSLInfo* ssl_info) override;
void GetConnectionAttempts(net::ConnectionAttempts* out) const override;
void ClearConnectionAttempts() override {}
void AddConnectionAttempts(const net::ConnectionAttempts& attempts) override {
}
private:
void RespondToReader(bool disconnect);
void RespondToWriter(int result);
scoped_refptr<AndroidUsbDevice> device_;
std::string command_;
uint32 local_id_;
uint32 remote_id_;
net::BoundNetLog net_log_;
bool is_connected_;
std::string read_buffer_;
scoped_refptr<net::IOBuffer> read_io_buffer_;
int read_length_;
int write_length_;
net::CompletionCallback connect_callback_;
net::CompletionCallback read_callback_;
net::CompletionCallback write_callback_;
base::Closure delete_callback_;
base::WeakPtrFactory<AndroidUsbSocket> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(AndroidUsbSocket);
};
#endif // CHROME_BROWSER_DEVTOOLS_DEVICE_USB_ANDROID_USB_SOCKET_H_
|