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

Side by Side Diff: components/cronet/android/java/src/org/chromium/net/urlconnection/CronetOutputStream.java

Issue 2131323002: [Cronet] Check whether request is done before spinning up message loop (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comment Created 4 years, 5 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 package org.chromium.net.urlconnection; 5 package org.chromium.net.urlconnection;
6 6
7 import org.chromium.net.UploadDataProvider; 7 import org.chromium.net.UploadDataProvider;
8 8
9 import java.io.IOException; 9 import java.io.IOException;
10 import java.io.OutputStream; 10 import java.io.OutputStream;
11 11
12 /** 12 /**
13 * An abstract class of {@link OutputStream} that concrete implementations must 13 * An abstract class of {@link OutputStream} that concrete implementations must
14 * extend in order to be used in {@link CronetHttpURLConnection}. 14 * extend in order to be used in {@link CronetHttpURLConnection}.
15 */ 15 */
16 abstract class CronetOutputStream extends OutputStream { 16 abstract class CronetOutputStream extends OutputStream {
17 private IOException mException;
18 private boolean mClosed;
19 private boolean mRequestCompleted;
20
21 @Override
22 public void close() throws IOException {
23 mClosed = true;
24 }
25
17 /** 26 /**
18 * Tells the underlying implementation that connection has been established. 27 * Tells the underlying implementation that connection has been established.
19 * Used in {@link CronetHttpURLConnection}. 28 * Used in {@link CronetHttpURLConnection}.
20 */ 29 */
21 abstract void setConnected() throws IOException; 30 abstract void setConnected() throws IOException;
22 31
23 /** 32 /**
24 * Checks whether content received is less than Content-Length. 33 * Checks whether content received is less than Content-Length.
25 * Used in {@link CronetHttpURLConnection}. 34 * Used in {@link CronetHttpURLConnection}.
26 */ 35 */
27 abstract void checkReceivedEnoughContent() throws IOException; 36 abstract void checkReceivedEnoughContent() throws IOException;
28 37
29 /** 38 /**
30 * Returns {@link UploadDataProvider} implementation. 39 * Returns {@link UploadDataProvider} implementation.
31 */ 40 */
32 abstract UploadDataProvider getUploadDataProvider(); 41 abstract UploadDataProvider getUploadDataProvider();
42
43 /**
44 * Signals that the request is done. If there is no error,
45 * {@code exception} is null. Used by {@link CronetHttpURLConnection}.
46 */
47 void setRequestCompleted(IOException exception) {
48 mException = exception;
49 mRequestCompleted = true;
50 }
51
52 /**
53 * Throws an IOException if the stream is closed or the request is done.
54 */
55 protected void checkNotClosed() throws IOException {
56 if (mRequestCompleted) {
57 if (mException != null) {
58 throw mException;
59 }
60 throw new IOException("Writing after request completed.");
61 }
62 if (mClosed) {
63 throw new IOException("Stream has been closed.");
64 }
65 }
33 } 66 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698