/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package okhttp3.internal.http;

import java.io.IOException;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import okio.Sink;

Encodes HTTP requests and decodes HTTP responses.
/** Encodes HTTP requests and decodes HTTP responses. */
public interface HttpCodec {
The timeout to use while discarding a stream of input data. Since this is used for connection reuse, this timeout should be significantly less than the time it takes to establish a new connection.
/** * The timeout to use while discarding a stream of input data. Since this is used for connection * reuse, this timeout should be significantly less than the time it takes to establish a new * connection. */
int DISCARD_STREAM_TIMEOUT_MILLIS = 100;
Returns an output stream where the request body can be streamed.
/** Returns an output stream where the request body can be streamed. */
Sink createRequestBody(Request request, long contentLength);
This should update the HTTP engine's sentRequestMillis field.
/** This should update the HTTP engine's sentRequestMillis field. */
void writeRequestHeaders(Request request) throws IOException;
Flush the request to the underlying socket.
/** Flush the request to the underlying socket. */
void flushRequest() throws IOException;
Flush the request to the underlying socket and signal no more bytes will be transmitted.
/** Flush the request to the underlying socket and signal no more bytes will be transmitted. */
void finishRequest() throws IOException;
Parses bytes of a response header from an HTTP transport.
Params:
  • expectContinue – true to return null if this is an intermediate response with a "100" response code. Otherwise this method never returns null.
/** * Parses bytes of a response header from an HTTP transport. * * @param expectContinue true to return null if this is an intermediate response with a "100" * response code. Otherwise this method never returns null. */
Response.Builder readResponseHeaders(boolean expectContinue) throws IOException;
Returns a stream that reads the response body.
/** Returns a stream that reads the response body. */
ResponseBody openResponseBody(Response response) throws IOException;
Cancel this stream. Resources held by this stream will be cleaned up, though not synchronously. That may happen later by the connection pool thread.
/** * Cancel this stream. Resources held by this stream will be cleaned up, though not synchronously. * That may happen later by the connection pool thread. */
void cancel(); }