blob: c1ab2bcb571ec5ae27657c2cbcf5ac9600b05ca9 [file] [log] [blame]
// 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();
}
}