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

Unified Diff: net/http/bidirectional_stream.h

Issue 1856073002: Coalesce small buffers in net::BidirectionalStream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix javadoc Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/cronet/ios/cronet_c_for_grpc.cc ('k') | net/http/bidirectional_stream.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/bidirectional_stream.h
diff --git a/net/http/bidirectional_stream.h b/net/http/bidirectional_stream.h
index 1663c16a6b1b6f39106f230ffc3bd1b3fedbd12f..71e69d7d9e04b76cb4f1bf4d8395aa3eac976e5d 100644
--- a/net/http/bidirectional_stream.h
+++ b/net/http/bidirectional_stream.h
@@ -31,8 +31,9 @@ struct BidirectionalStreamRequestInfo;
struct SSLConfig;
// A class to do HTTP/2 bidirectional streaming. Note that at most one each of
-// ReadData or SendData should be in flight until the operation completes.
-// The BidirectionalStream must be torn down before the HttpNetworkSession.
+// ReadData or SendData/SendvData should be in flight until the operation
+// completes. The BidirectionalStream must be torn down before the
+// HttpNetworkSession.
class NET_EXPORT BidirectionalStream
: public NON_EXPORTED_BASE(BidirectionalStreamImpl::Delegate),
public NON_EXPORTED_BASE(HttpStreamRequest::Delegate) {
@@ -43,13 +44,13 @@ class NET_EXPORT BidirectionalStream
public:
Delegate();
- // Called when headers have been sent. This is called at most once for
- // the lifetime of a stream.
+ // Called when the stream is ready for writing and reading. This is called
+ // at most once for the lifetime of a stream.
// The delegate may call BidirectionalStream::ReadData to start reading,
// or call BidirectionalStream::SendData to send data.
// The delegate should not call BidirectionalStream::Cancel
// during this callback.
- virtual void OnHeadersSent() = 0;
+ virtual void OnStreamReady() = 0;
// Called when headers are received. This is called at most once for the
// lifetime of a stream.
@@ -96,6 +97,7 @@ class NET_EXPORT BidirectionalStream
BidirectionalStream(
std::unique_ptr<BidirectionalStreamRequestInfo> request_info,
HttpNetworkSession* session,
+ bool disable_auto_flush,
Delegate* delegate);
// Constructor that accepts a Timer, which can be used in tests to control
@@ -103,6 +105,7 @@ class NET_EXPORT BidirectionalStream
BidirectionalStream(
std::unique_ptr<BidirectionalStreamRequestInfo> request_info,
HttpNetworkSession* session,
+ bool disable_auto_flush,
Delegate* delegate,
std::unique_ptr<base::Timer> timer);
@@ -125,6 +128,11 @@ class NET_EXPORT BidirectionalStream
// flag.
void SendData(IOBuffer* data, int length, bool end_stream);
+ // Same as SendData except this takes in a vector of IOBuffers.
+ void SendvData(const std::vector<IOBuffer*>& buffers,
+ const std::vector<int>& lengths,
+ bool end_stream);
+
// If |stream_request_| is non-NULL, cancel it. If |stream_impl_| is
// established, cancel it. No delegate method will be called after Cancel().
// Any pending operations may or may not succeed.
@@ -151,7 +159,7 @@ class NET_EXPORT BidirectionalStream
private:
// BidirectionalStreamImpl::Delegate implementation:
- void OnHeadersSent() override;
+ void OnStreamReady() override;
void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override;
void OnDataRead(int bytes_read) override;
void OnDataSent() override;
@@ -194,6 +202,7 @@ class NET_EXPORT BidirectionalStream
HttpNetworkSession* session_;
+ bool disable_auto_flush_;
Delegate* const delegate_;
// Timer used to buffer data received in short time-spans and send a single
@@ -208,10 +217,10 @@ class NET_EXPORT BidirectionalStream
// Buffer used for reading.
scoped_refptr<IOBuffer> read_buffer_;
- // Buffer used for writing.
- scoped_refptr<IOBuffer> write_buffer_;
- // Length of |write_buffer_|.
- size_t write_buffer_len_;
+ // List of buffers used for writing.
+ std::vector<scoped_refptr<IOBuffer>> write_buffer_list_;
+ // List of buffer length.
+ std::vector<int> write_buffer_len_list_;
DISALLOW_COPY_AND_ASSIGN(BidirectionalStream);
};
« no previous file with comments | « components/cronet/ios/cronet_c_for_grpc.cc ('k') | net/http/bidirectional_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698