1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* Licensed to the Apache Software Foundation (ASF) under one or more
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership.
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License.  You may obtain a copy of the License at
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License.
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage java.net;
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException;
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream;
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code CacheRequest} is a kind of channel for storing resource data in the
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code ResponseCache}. A protocol handler calls the {@code OutputStream}
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * which is provided by the {@code CacheRequest} object, to store the resource
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * data into the cache. It also allows the user to interrupt and abort the
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * current store operation by calling the method {@code abort}. If an {@code
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * IOException} occurs while reading the response or writing data to the cache,
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the current cache store operation is abandoned.
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see ResponseCache
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic abstract class CacheRequest {
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * This implementation does nothing.
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public CacheRequest() {
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super();
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Aborts the current cache operation. If an {@code IOException} occurs
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * while reading the response or writing resource data to the cache, the
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * current cache store operation is aborted.
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public abstract void abort();
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Returns an {@code OutputStream} which is used to write the response body.
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return an {@code OutputStream} which is used to write the response body.
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *             if an I/O error is encountered during writing response body
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *             operation.
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public abstract OutputStream getBody() throws IOException;
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
59