OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 #ifndef REMOTING_PROTOCOL_FAKE_DATAGRAM_SOCKET_H_ | 5 #ifndef REMOTING_PROTOCOL_FAKE_DATAGRAM_SOCKET_H_ |
6 #define REMOTING_PROTOCOL_FAKE_DATAGRAM_SOCKET_H_ | 6 #define REMOTING_PROTOCOL_FAKE_DATAGRAM_SOCKET_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 23 matching lines...) Expand all Loading... |
34 // sockets |a| and |b| must be created and used on the same thread. | 34 // sockets |a| and |b| must be created and used on the same thread. |
35 class FakeDatagramSocket : public P2PDatagramSocket { | 35 class FakeDatagramSocket : public P2PDatagramSocket { |
36 public: | 36 public: |
37 FakeDatagramSocket(); | 37 FakeDatagramSocket(); |
38 ~FakeDatagramSocket() override; | 38 ~FakeDatagramSocket() override; |
39 | 39 |
40 const std::vector<std::string>& written_packets() const { | 40 const std::vector<std::string>& written_packets() const { |
41 return written_packets_; | 41 return written_packets_; |
42 } | 42 } |
43 | 43 |
| 44 // Enables asynchronous Write(). |
| 45 void set_async_send(bool async_send) { async_send_ = async_send; } |
| 46 |
| 47 // Set error codes for the next Write() call. Once returned the |
| 48 // value is automatically reset to net::OK . |
| 49 void set_next_send_error(int error) { next_send_error_ = error; } |
| 50 |
44 void AppendInputPacket(const std::string& data); | 51 void AppendInputPacket(const std::string& data); |
45 | 52 |
46 // Current position in the input in number of packets, i.e. number of finished | 53 // Current position in the input in number of packets, i.e. number of finished |
47 // Recv() calls. | 54 // Recv() calls. |
48 int input_pos() const { return input_pos_; } | 55 int input_pos() const { return input_pos_; } |
49 | 56 |
50 // Pairs the socket with |peer_socket|. Deleting either of the paired sockets | 57 // Pairs the socket with |peer_socket|. Deleting either of the paired sockets |
51 // unpairs them. | 58 // unpairs them. |
52 void PairWith(FakeDatagramSocket* peer_socket); | 59 void PairWith(FakeDatagramSocket* peer_socket); |
53 | 60 |
54 base::WeakPtr<FakeDatagramSocket> GetWeakPtr(); | 61 base::WeakPtr<FakeDatagramSocket> GetWeakPtr(); |
55 | 62 |
56 // P2PDatagramSocket implementation. | 63 // P2PDatagramSocket implementation. |
57 int Recv(const scoped_refptr<net::IOBuffer>& buf, int buf_len, | 64 int Recv(const scoped_refptr<net::IOBuffer>& buf, int buf_len, |
58 const net::CompletionCallback& callback) override; | 65 const net::CompletionCallback& callback) override; |
59 int Send(const scoped_refptr<net::IOBuffer>& buf, int buf_len, | 66 int Send(const scoped_refptr<net::IOBuffer>& buf, int buf_len, |
60 const net::CompletionCallback& callback) override; | 67 const net::CompletionCallback& callback) override; |
61 | 68 |
62 private: | 69 private: |
63 int CopyReadData(const scoped_refptr<net::IOBuffer>& buf, int buf_len); | 70 int CopyReadData(const scoped_refptr<net::IOBuffer>& buf, int buf_len); |
64 | 71 |
| 72 void DoAsyncSend(const scoped_refptr<net::IOBuffer>& buf, int buf_len, |
| 73 const net::CompletionCallback& callback); |
| 74 int DoSend(const scoped_refptr<net::IOBuffer>& buf, int buf_len); |
| 75 |
| 76 bool async_send_ = false; |
| 77 bool send_pending_ = false; |
| 78 int next_send_error_ = 0; |
| 79 |
65 base::WeakPtr<FakeDatagramSocket> peer_socket_; | 80 base::WeakPtr<FakeDatagramSocket> peer_socket_; |
66 | 81 |
67 scoped_refptr<net::IOBuffer> read_buffer_; | 82 scoped_refptr<net::IOBuffer> read_buffer_; |
68 int read_buffer_size_; | 83 int read_buffer_size_; |
69 net::CompletionCallback read_callback_; | 84 net::CompletionCallback read_callback_; |
70 | 85 |
71 std::vector<std::string> written_packets_; | 86 std::vector<std::string> written_packets_; |
72 std::vector<std::string> input_packets_; | 87 std::vector<std::string> input_packets_; |
73 int input_pos_; | 88 int input_pos_; |
74 | 89 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 | 136 |
122 base::WeakPtrFactory<FakeDatagramChannelFactory> weak_factory_; | 137 base::WeakPtrFactory<FakeDatagramChannelFactory> weak_factory_; |
123 | 138 |
124 DISALLOW_COPY_AND_ASSIGN(FakeDatagramChannelFactory); | 139 DISALLOW_COPY_AND_ASSIGN(FakeDatagramChannelFactory); |
125 }; | 140 }; |
126 | 141 |
127 } // namespace protocol | 142 } // namespace protocol |
128 } // namespace remoting | 143 } // namespace remoting |
129 | 144 |
130 #endif // REMOTING_PROTOCOL_FAKE_DATAGRAM_SOCKET_H_ | 145 #endif // REMOTING_PROTOCOL_FAKE_DATAGRAM_SOCKET_H_ |
OLD | NEW |