Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: net/tools/quic/quic_client.cc

Issue 288313003: Land Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src
Patch Set: implemented rch's comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/tools/quic/quic_client.h" 5 #include "net/tools/quic/quic_client.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <netinet/in.h> 8 #include <netinet/in.h>
9 #include <string.h> 9 #include <string.h>
10 #include <sys/epoll.h> 10 #include <sys/epoll.h>
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 182
183 QuicPacketWriter* writer = CreateQuicPacketWriter(); 183 QuicPacketWriter* writer = CreateQuicPacketWriter();
184 if (writer_.get() != writer) { 184 if (writer_.get() != writer) {
185 writer_.reset(writer); 185 writer_.reset(writer);
186 } 186 }
187 187
188 session_.reset(new QuicClientSession( 188 session_.reset(new QuicClientSession(
189 server_id_, 189 server_id_,
190 config_, 190 config_,
191 new QuicConnection(GenerateConnectionId(), server_address_, helper_.get(), 191 new QuicConnection(GenerateConnectionId(), server_address_, helper_.get(),
192 writer_.get(), false, supported_versions_, 192 writer_.get(), false, supported_versions_),
193 initial_flow_control_window_), 193 initial_flow_control_window_,
194 &crypto_config_)); 194 &crypto_config_));
195 return session_->CryptoConnect(); 195 return session_->CryptoConnect();
196 } 196 }
197 197
198 bool QuicClient::EncryptionBeingEstablished() { 198 bool QuicClient::EncryptionBeingEstablished() {
199 return !session_->IsEncryptionEstablished() && 199 return !session_->IsEncryptionEstablished() &&
200 session_->connection()->connected(); 200 session_->connection()->connected();
201 } 201 }
202 202
203 void QuicClient::Disconnect() { 203 void QuicClient::Disconnect() {
204 DCHECK(initialized_); 204 DCHECK(initialized_);
205 205
206 if (connected()) { 206 if (connected()) {
207 session()->connection()->SendConnectionClose(QUIC_PEER_GOING_AWAY); 207 session()->connection()->SendConnectionClose(QUIC_PEER_GOING_AWAY);
208 } 208 }
209 epoll_server_.UnregisterFD(fd_); 209 epoll_server_.UnregisterFD(fd_);
210 close(fd_); 210 close(fd_);
211 fd_ = -1; 211 fd_ = -1;
212 initialized_ = false; 212 initialized_ = false;
213 } 213 }
214 214
215 void QuicClient::SendRequestsAndWaitForResponse( 215 void QuicClient::SendRequestsAndWaitForResponse(
216 const CommandLine::StringVector& args) { 216 const CommandLine::StringVector& args) {
217 for (size_t i = 0; i < args.size(); ++i) { 217 for (size_t i = 0; i < args.size(); ++i) {
218 BalsaHeaders headers; 218 BalsaHeaders headers;
219 headers.SetRequestFirstlineFromStringPieces("GET", args[i], "HTTP/1.1"); 219 headers.SetRequestFirstlineFromStringPieces("GET", args[i], "HTTP/1.1");
220 QuicSpdyClientStream* stream = CreateReliableClientStream(); 220 QuicSpdyClientStream* stream = CreateReliableClientStream();
221 DCHECK(stream != NULL);
221 stream->SendRequest(headers, "", true); 222 stream->SendRequest(headers, "", true);
222 stream->set_visitor(this); 223 stream->set_visitor(this);
223 } 224 }
224 225
225 while (WaitForEvents()) { } 226 while (WaitForEvents()) { }
226 } 227 }
227 228
228 QuicSpdyClientStream* QuicClient::CreateReliableClientStream() { 229 QuicSpdyClientStream* QuicClient::CreateReliableClientStream() {
229 if (!connected()) { 230 if (!connected()) {
230 return NULL; 231 return NULL;
231 } 232 }
232 233
233 return session_->CreateOutgoingDataStream(); 234 return session_->CreateOutgoingDataStream();
234 } 235 }
235 236
236 void QuicClient::WaitForStreamToClose(QuicStreamId id) { 237 void QuicClient::WaitForStreamToClose(QuicStreamId id) {
237 DCHECK(connected()); 238 DCHECK(connected());
238 239
239 while (!session_->IsClosedStream(id)) { 240 while (connected() && !session_->IsClosedStream(id)) {
240 epoll_server_.WaitForEventsAndExecuteCallbacks(); 241 epoll_server_.WaitForEventsAndExecuteCallbacks();
241 } 242 }
242 } 243 }
243 244
244 void QuicClient::WaitForCryptoHandshakeConfirmed() { 245 void QuicClient::WaitForCryptoHandshakeConfirmed() {
245 DCHECK(connected()); 246 DCHECK(connected());
246 247
247 while (!session_->IsCryptoHandshakeConfirmed()) { 248 while (connected() && !session_->IsCryptoHandshakeConfirmed()) {
248 epoll_server_.WaitForEventsAndExecuteCallbacks(); 249 epoll_server_.WaitForEventsAndExecuteCallbacks();
249 } 250 }
250 } 251 }
251 252
252 bool QuicClient::WaitForEvents() { 253 bool QuicClient::WaitForEvents() {
253 DCHECK(connected()); 254 DCHECK(connected());
254 255
255 epoll_server_.WaitForEventsAndExecuteCallbacks(); 256 epoll_server_.WaitForEventsAndExecuteCallbacks();
256 return session_->num_active_requests() != 0; 257 return session_->num_active_requests() != 0;
257 } 258 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 QuicEncryptedPacket packet(buf, bytes_read, false); 346 QuicEncryptedPacket packet(buf, bytes_read, false);
346 347
347 IPEndPoint client_address(client_ip, client_address_.port()); 348 IPEndPoint client_address(client_ip, client_address_.port());
348 session_->connection()->ProcessUdpPacket( 349 session_->connection()->ProcessUdpPacket(
349 client_address, server_address, packet); 350 client_address, server_address, packet);
350 return true; 351 return true;
351 } 352 }
352 353
353 } // namespace tools 354 } // namespace tools
354 } // namespace net 355 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698