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

Unified Diff: components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java

Issue 1856073002: Coalesce small buffers in net::BidirectionalStream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address Ryan's comments 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
Index: components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java
diff --git a/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java b/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java
index 5b6d04bfc427ba4052019ed18cb7c70cbb54004f..e4fdfe2a1910ff453a20e6509e3015189693b79c 100644
--- a/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java
+++ b/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java
@@ -47,6 +47,8 @@ public abstract class BidirectionalStream {
// Priority of the stream. Default is medium.
@StreamPriority private int mPriority = STREAM_PRIORITY_MEDIUM;
+ private boolean mDisableAutoFlush;
+
/**
* Creates a builder for {@link BidirectionalStream} objects. All callbacks for
* generated {@code BidirectionalStream} objects will be invoked on
@@ -160,6 +162,17 @@ public abstract class BidirectionalStream {
}
/**
+ * By default, data is flushed after every {@link #write write()}. This
kapishnikov 2016/04/19 03:22:22 The first sentence of the method javadoc is used i
xunjieli 2016/04/19 19:30:03 Done.
+ * is to disable auto flush.
+ * @param disableAutoFlush if true, auto flush will be disabled.
+ * @return the builder to facilitate chaining.
+ */
+ public Builder disableAutoFlush(boolean disableAutoFlush) {
+ mDisableAutoFlush = disableAutoFlush;
+ return this;
+ }
+
+ /**
* Creates a {@link BidirectionalStream} using configuration from this
* {@link Builder}. The returned {@code BidirectionalStream} can then be started
* by calling {@link BidirectionalStream#start}.
@@ -168,8 +181,8 @@ public abstract class BidirectionalStream {
* this {@link Builder}
*/
public BidirectionalStream build() {
- return mCronetEngine.createBidirectionalStream(
- mUrl, mCallback, mExecutor, mHttpMethod, mRequestHeaders, mPriority);
+ return mCronetEngine.createBidirectionalStream(mUrl, mCallback, mExecutor, mHttpMethod,
+ mRequestHeaders, mPriority, mDisableAutoFlush);
}
}
@@ -178,17 +191,19 @@ public abstract class BidirectionalStream {
*/
public abstract static class Callback {
/**
- * Invoked when request headers are sent. Indicates that stream has initiated the request.
- * Consumer may call {@link BidirectionalStream#write write()} to start writing data.
+ * Invoked when the stream is ready for reading and writing.
+ * Consumer may call {@link BidirectionalStream#read read()} to start
+ * reading. Consumer may call {@link BidirectionalStream#write write()}
+ * to start writing data.
*
- * @param stream the stream on which request headers were sent
+ * @param stream the stream that is ready
kapishnikov 2016/04/19 03:22:22 "."
xunjieli 2016/04/19 19:30:03 Done.
*/
- public abstract void onRequestHeadersSent(BidirectionalStream stream);
+ public abstract void onStreamReady(BidirectionalStream stream);
/**
* Invoked when initial response headers are received. Headers are available from
* {@code info.}{@link UrlResponseInfo#getAllHeaders getAllHeaders()}.
- * Consumer must call {@link BidirectionalStream#read read()} to start reading.
+ * Consumer may call {@link BidirectionalStream#read read()} to start reading.
* Consumer may call {@link BidirectionalStream#write write()} to start writing or close the
* stream.
*
@@ -315,6 +330,7 @@ public abstract class BidirectionalStream {
/**
* Reads data from the stream into the provided buffer.
* Must only be called at most once in response to each invocation of the
kapishnikov 2016/04/19 03:22:22 The doc says that the method must only be called a
xunjieli 2016/04/19 19:30:03 Done. I agree it can be a bit confusing. I think i
+ * {@link Callback#onStreamReady onStreamReady()},
* {@link Callback#onResponseHeadersReceived onResponseHeadersReceived()} and {@link
* Callback#onReadCompleted onReadCompleted()} methods of the {@link
* Callback}. Each call will result in an invocation of one of the
@@ -340,7 +356,7 @@ public abstract class BidirectionalStream {
/**
* Attempts to write data from the provided buffer into the stream.
* Must only be called at most once in response to each invocation of the
- * {@link Callback#onRequestHeadersSent onRequestHeadersSent()} or {@link
+ * {@link Callback#onStreamReady onStreamReady()} or {@link
* Callback#onWriteCompleted onWriteCompleted()} methods of the {@link Callback}.
* Each call will result in an asynchronous call to one of the {@link Callback Callback}'s
* {@link Callback#onWriteCompleted onWriteCompleted()} method if data
@@ -365,6 +381,12 @@ public abstract class BidirectionalStream {
public abstract void write(ByteBuffer buffer, boolean endOfStream);
/**
+ * Flushes pending writes. This method should only be invoked when auto
+ * flush is disabled through {@link Builder#disableAutoFlush}.
+ */
+ public abstract void flush();
+
+ /**
* Pings remote end-point. {@code callback} methods will be invoked on {@code executor}.
*
* @param callback the callback that will be invoked when ping succeeds or fails

Powered by Google App Engine
This is Rietveld 408576698