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

Side by Side Diff: components/grpc_support/cronet_bidirectional_stream.cc

Issue 2273403003: Moving gRPC support interfaces out of cronet and into a new component. (Closed)
Patch Set: Add cronet_c_for_graph back to sources. Might fix GN, probably won't compile Created 4 years, 3 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/cronet/ios/cronet_bidirectional_stream.h" 5 #include "components/grpc_support/cronet_bidirectional_stream.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/location.h" 12 #include "base/location.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
16 #include "components/cronet/ios/cronet_environment.h" 16 #include "components/grpc_support/environment.h"
17 #include "net/base/io_buffer.h" 17 #include "net/base/io_buffer.h"
18 #include "net/base/net_errors.h" 18 #include "net/base/net_errors.h"
19 #include "net/base/request_priority.h" 19 #include "net/base/request_priority.h"
20 #include "net/http/bidirectional_stream.h" 20 #include "net/http/bidirectional_stream.h"
21 #include "net/http/bidirectional_stream_request_info.h" 21 #include "net/http/bidirectional_stream_request_info.h"
22 #include "net/http/http_network_session.h" 22 #include "net/http/http_network_session.h"
23 #include "net/http/http_response_headers.h" 23 #include "net/http/http_response_headers.h"
24 #include "net/http/http_status_code.h" 24 #include "net/http/http_status_code.h"
25 #include "net/http/http_transaction_factory.h" 25 #include "net/http/http_transaction_factory.h"
26 #include "net/http/http_util.h" 26 #include "net/http/http_util.h"
27 #include "net/spdy/spdy_header_block.h" 27 #include "net/spdy/spdy_header_block.h"
28 #include "net/ssl/ssl_info.h" 28 #include "net/ssl/ssl_info.h"
29 #include "net/url_request/http_user_agent_settings.h" 29 #include "net/url_request/http_user_agent_settings.h"
30 #include "net/url_request/url_request_context.h" 30 #include "net/url_request/url_request_context.h"
31 #include "url/gurl.h" 31 #include "url/gurl.h"
32 32
33 namespace cronet { 33 namespace grpc_support {
34 34
35 CronetBidirectionalStream::WriteBuffers::WriteBuffers() {} 35 CronetBidirectionalStream::WriteBuffers::WriteBuffers() {}
36 36
37 CronetBidirectionalStream::WriteBuffers::~WriteBuffers() {} 37 CronetBidirectionalStream::WriteBuffers::~WriteBuffers() {}
38 38
39 void CronetBidirectionalStream::WriteBuffers::Clear() { 39 void CronetBidirectionalStream::WriteBuffers::Clear() {
40 write_buffer_list.clear(); 40 write_buffer_list.clear();
41 write_buffer_len_list.clear(); 41 write_buffer_len_list.clear();
42 } 42 }
43 43
(...skipping 10 matching lines...) Expand all
54 std::move(write_buffer_len_list.begin(), write_buffer_len_list.end(), 54 std::move(write_buffer_len_list.begin(), write_buffer_len_list.end(),
55 std::back_inserter(target->write_buffer_len_list)); 55 std::back_inserter(target->write_buffer_len_list));
56 Clear(); 56 Clear();
57 } 57 }
58 58
59 bool CronetBidirectionalStream::WriteBuffers::Empty() const { 59 bool CronetBidirectionalStream::WriteBuffers::Empty() const {
60 return write_buffer_list.empty(); 60 return write_buffer_list.empty();
61 } 61 }
62 62
63 CronetBidirectionalStream::CronetBidirectionalStream( 63 CronetBidirectionalStream::CronetBidirectionalStream(
64 CronetEnvironment* environment, 64 Environment* environment,
65 Delegate* delegate) 65 Delegate* delegate)
66 : read_state_(NOT_STARTED), 66 : read_state_(NOT_STARTED),
67 write_state_(NOT_STARTED), 67 write_state_(NOT_STARTED),
68 write_end_of_stream_(false), 68 write_end_of_stream_(false),
69 request_headers_sent_(false), 69 request_headers_sent_(false),
70 disable_auto_flush_(false), 70 disable_auto_flush_(false),
71 delay_headers_until_flush_(false), 71 delay_headers_until_flush_(false),
72 environment_(environment), 72 environment_(environment),
73 pending_write_data_(new WriteBuffers()), 73 pending_write_data_(new WriteBuffers()),
74 flushing_write_data_(new WriteBuffers()), 74 flushing_write_data_(new WriteBuffers()),
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 read_state_ = write_state_ = ERROR; 238 read_state_ = write_state_ = ERROR;
239 delegate_->OnFailed(error); 239 delegate_->OnFailed(error);
240 } 240 }
241 241
242 void CronetBidirectionalStream::StartOnNetworkThread( 242 void CronetBidirectionalStream::StartOnNetworkThread(
243 std::unique_ptr<net::BidirectionalStreamRequestInfo> request_info) { 243 std::unique_ptr<net::BidirectionalStreamRequestInfo> request_info) {
244 DCHECK(environment_->IsOnNetworkThread()); 244 DCHECK(environment_->IsOnNetworkThread());
245 DCHECK(!bidi_stream_); 245 DCHECK(!bidi_stream_);
246 DCHECK(environment_->GetURLRequestContext()); 246 DCHECK(environment_->GetURLRequestContext());
247 request_info->extra_headers.SetHeaderIfMissing( 247 request_info->extra_headers.SetHeaderIfMissing(
248 net::HttpRequestHeaders::kUserAgent, environment_->user_agent()); 248 net::HttpRequestHeaders::kUserAgent, environment_->UserAgent());
249 bidi_stream_.reset(new net::BidirectionalStream( 249 bidi_stream_.reset(new net::BidirectionalStream(
250 std::move(request_info), environment_->GetURLRequestContext() 250 std::move(request_info), environment_->GetURLRequestContext()
251 ->http_transaction_factory() 251 ->http_transaction_factory()
252 ->GetSession(), 252 ->GetSession(),
253 !delay_headers_until_flush_, this)); 253 !delay_headers_until_flush_, this));
254 DCHECK(read_state_ == NOT_STARTED && write_state_ == NOT_STARTED); 254 DCHECK(read_state_ == NOT_STARTED && write_state_ == NOT_STARTED);
255 read_state_ = write_state_ = STARTED; 255 read_state_ = write_state_ = STARTED;
256 } 256 }
257 257
258 void CronetBidirectionalStream::ReadDataOnNetworkThread( 258 void CronetBidirectionalStream::ReadDataOnNetworkThread(
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 void CronetBidirectionalStream::MaybeOnSucceded() { 355 void CronetBidirectionalStream::MaybeOnSucceded() {
356 DCHECK(environment_->IsOnNetworkThread()); 356 DCHECK(environment_->IsOnNetworkThread());
357 if (read_state_ == READING_DONE && write_state_ == WRITING_DONE) { 357 if (read_state_ == READING_DONE && write_state_ == WRITING_DONE) {
358 read_state_ = write_state_ = SUCCESS; 358 read_state_ = write_state_ = SUCCESS;
359 bidi_stream_.reset(); 359 bidi_stream_.reset();
360 delegate_->OnSucceeded(); 360 delegate_->OnSucceeded();
361 } 361 }
362 } 362 }
363 363
364 } // namespace cronet 364 } // namespace cronet
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698