| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package android.net.http; |
| |
| /** |
| * {@link BidirectionalStream} that exposes experimental features. To obtain an |
| * instance of this class, cast a {@code BidirectionalStream} to this type. Every |
| * instance of {@code BidirectionalStream} can be cast to an instance of this class, |
| * as they are backed by the same implementation and hence perform identically. |
| * Instances of this class are not meant for general use, but instead only |
| * to access experimental features. Experimental features may be deprecated in the |
| * future. Use at your own risk. |
| * |
| * {@hide prototype} |
| */ |
| public abstract class ExperimentalBidirectionalStream extends BidirectionalStream { |
| /** |
| * {@link BidirectionalStream.Builder} that exposes experimental features. To obtain an |
| * instance of this class, cast a {@code BidirectionalStream.Builder} to this type. Every |
| * instance of {@code BidirectionalStream.Builder} can be cast to an instance of this class, |
| * as they are backed by the same implementation and hence perform identically. |
| * Instances of this class are not meant for general use, but instead only |
| * to access experimental features. Experimental features may be deprecated in the |
| * future. Use at your own risk. |
| */ |
| public abstract static class Builder extends BidirectionalStream.Builder { |
| /** |
| * Associates the annotation object with this request. May add more than one. |
| * Passed through to a {@link RequestFinishedInfo.Listener}, |
| * see {@link RequestFinishedInfo#getAnnotations}. |
| * |
| * @param annotation an object to pass on to the {@link RequestFinishedInfo.Listener} with a |
| * {@link RequestFinishedInfo}. |
| * @return the builder to facilitate chaining. |
| */ |
| public Builder addRequestAnnotation(Object annotation) { |
| return this; |
| } |
| |
| /** |
| * Binds the request to the specified network handle. The HTTP stack will send this request |
| * only using the network associated to this handle. If this network disconnects the request |
| * will fail, the exact error will depend on the stage of request processing when |
| * the network disconnects. Network handles can be obtained |
| * through {@code Network#getNetworkHandle}. |
| * |
| * @param networkHandle the network handle to bind the request to. Specify |
| * {@link ExperimentalHttpEngine#UNBIND_NETWORK_HANDLE} to unbind. |
| * @return the builder to facilitate chaining. |
| */ |
| public Builder bindToNetwork(long networkHandle) { |
| return this; |
| } |
| |
| // To support method chaining, override superclass methods to return an |
| // instance of this class instead of the parent. |
| |
| @Override |
| public abstract Builder setHttpMethod(String method); |
| |
| @Override |
| public abstract Builder addHeader(String header, String value); |
| |
| @Override |
| public abstract Builder setPriority(int priority); |
| |
| @Override |
| public abstract Builder setDelayRequestHeadersUntilFirstFlushEnabled( |
| boolean delayRequestHeadersUntilFirstFlush); |
| |
| @Override |
| public abstract ExperimentalBidirectionalStream build(); |
| } |
| } |