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 #include "remoting/protocol/fake_stream_socket.h" | 5 #include "remoting/protocol/fake_stream_socket.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
11 #include "net/base/address_list.h" | 11 #include "net/base/address_list.h" |
12 #include "net/base/io_buffer.h" | 12 #include "net/base/io_buffer.h" |
13 #include "net/base/net_errors.h" | 13 #include "net/base/net_errors.h" |
14 #include "net/base/net_util.h" | 14 #include "net/base/net_util.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
16 | 16 |
17 namespace remoting { | 17 namespace remoting { |
18 namespace protocol { | 18 namespace protocol { |
19 | 19 |
20 FakeStreamSocket::FakeStreamSocket() | 20 FakeStreamSocket::FakeStreamSocket() |
21 : async_write_(false), | 21 : task_runner_(base::ThreadTaskRunnerHandle::Get()), weak_factory_(this) {} |
22 write_pending_(false), | |
23 write_limit_(0), | |
24 next_write_error_(net::OK), | |
25 next_read_error_(net::OK), | |
26 read_buffer_size_(0), | |
27 input_pos_(0), | |
28 task_runner_(base::ThreadTaskRunnerHandle::Get()), | |
29 weak_factory_(this) { | |
30 } | |
31 | 22 |
32 FakeStreamSocket::~FakeStreamSocket() { | 23 FakeStreamSocket::~FakeStreamSocket() { |
33 EXPECT_TRUE(task_runner_->BelongsToCurrentThread()); | 24 EXPECT_TRUE(task_runner_->BelongsToCurrentThread()); |
34 if (peer_socket_) { | 25 if (peer_socket_) { |
35 task_runner_->PostTask( | 26 task_runner_->PostTask( |
36 FROM_HERE, base::Bind(&FakeStreamSocket::AppendReadError, peer_socket_, | 27 FROM_HERE, base::Bind(&FakeStreamSocket::AppendReadError, peer_socket_, |
37 net::ERR_CONNECTION_CLOSED)); | 28 net::ERR_CONNECTION_CLOSED)); |
38 } | 29 } |
39 } | 30 } |
40 | 31 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 task_runner_->PostTask( | 141 task_runner_->PostTask( |
151 FROM_HERE, | 142 FROM_HERE, |
152 base::Bind(&FakeStreamSocket::AppendInputData, | 143 base::Bind(&FakeStreamSocket::AppendInputData, |
153 peer_socket_, | 144 peer_socket_, |
154 std::string(buf->data(), buf->data() + buf_len))); | 145 std::string(buf->data(), buf->data() + buf_len))); |
155 } | 146 } |
156 } | 147 } |
157 | 148 |
158 FakeStreamChannelFactory::FakeStreamChannelFactory() | 149 FakeStreamChannelFactory::FakeStreamChannelFactory() |
159 : task_runner_(base::ThreadTaskRunnerHandle::Get()), | 150 : task_runner_(base::ThreadTaskRunnerHandle::Get()), |
160 asynchronous_create_(false), | |
161 fail_create_(false), | |
162 weak_factory_(this) { | 151 weak_factory_(this) { |
163 } | 152 } |
164 | 153 |
165 FakeStreamChannelFactory::~FakeStreamChannelFactory() {} | 154 FakeStreamChannelFactory::~FakeStreamChannelFactory() {} |
166 | 155 |
167 FakeStreamSocket* FakeStreamChannelFactory::GetFakeChannel( | 156 FakeStreamSocket* FakeStreamChannelFactory::GetFakeChannel( |
168 const std::string& name) { | 157 const std::string& name) { |
169 return channels_[name].get(); | 158 return channels_[name].get(); |
170 } | 159 } |
171 | 160 |
172 void FakeStreamChannelFactory::PairWith( | 161 void FakeStreamChannelFactory::PairWith( |
173 FakeStreamChannelFactory* peer_factory) { | 162 FakeStreamChannelFactory* peer_factory) { |
174 peer_factory_ = peer_factory->weak_factory_.GetWeakPtr(); | 163 peer_factory_ = peer_factory->weak_factory_.GetWeakPtr(); |
175 peer_factory->peer_factory_ = weak_factory_.GetWeakPtr(); | 164 peer_factory->peer_factory_ = weak_factory_.GetWeakPtr(); |
176 } | 165 } |
177 | 166 |
178 void FakeStreamChannelFactory::CreateChannel( | 167 void FakeStreamChannelFactory::CreateChannel( |
179 const std::string& name, | 168 const std::string& name, |
180 const ChannelCreatedCallback& callback) { | 169 const ChannelCreatedCallback& callback) { |
181 scoped_ptr<FakeStreamSocket> channel(new FakeStreamSocket()); | 170 scoped_ptr<FakeStreamSocket> channel(new FakeStreamSocket()); |
182 channels_[name] = channel->GetWeakPtr(); | 171 channels_[name] = channel->GetWeakPtr(); |
| 172 channel->set_async_write(async_write_); |
183 | 173 |
184 if (peer_factory_) { | 174 if (peer_factory_) { |
185 FakeStreamSocket* peer_channel = peer_factory_->GetFakeChannel(name); | 175 FakeStreamSocket* peer_channel = peer_factory_->GetFakeChannel(name); |
186 if (peer_channel) | 176 if (peer_channel) |
187 channel->PairWith(peer_channel); | 177 channel->PairWith(peer_channel); |
188 } | 178 } |
189 | 179 |
190 if (fail_create_) | 180 if (fail_create_) |
191 channel.reset(); | 181 channel.reset(); |
192 | 182 |
(...skipping 13 matching lines...) Expand all Loading... |
206 if (channels_.find(name) != channels_.end()) | 196 if (channels_.find(name) != channels_.end()) |
207 callback.Run(owned_channel.Pass()); | 197 callback.Run(owned_channel.Pass()); |
208 } | 198 } |
209 | 199 |
210 void FakeStreamChannelFactory::CancelChannelCreation(const std::string& name) { | 200 void FakeStreamChannelFactory::CancelChannelCreation(const std::string& name) { |
211 channels_.erase(name); | 201 channels_.erase(name); |
212 } | 202 } |
213 | 203 |
214 } // namespace protocol | 204 } // namespace protocol |
215 } // namespace remoting | 205 } // namespace remoting |
OLD | NEW |