1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements.  See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License.  You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /**
18  * @file cache_disk_common.h
19  * @brief Common Disk Cache vars/structs
20  *
21  * @defgroup Cache_cache  Cache Functions
22  * @ingroup  MOD_DISK_CACHE
23  * @{
24  */
25 
26 #ifndef CACHE_DIST_COMMON_H
27 #define CACHE_DIST_COMMON_H
28 
29 #define VARY_FORMAT_VERSION 5
30 #define DISK_FORMAT_VERSION 6
31 
32 #define CACHE_HEADER_SUFFIX ".header"
33 #define CACHE_DATA_SUFFIX   ".data"
34 #define CACHE_VDIR_SUFFIX   ".vary"
35 
36 #define AP_TEMPFILE_PREFIX "/"
37 #define AP_TEMPFILE_BASE   "aptmp"
38 #define AP_TEMPFILE_SUFFIX "XXXXXX"
39 #define AP_TEMPFILE_BASELEN strlen(AP_TEMPFILE_BASE)
40 #define AP_TEMPFILE_NAMELEN strlen(AP_TEMPFILE_BASE AP_TEMPFILE_SUFFIX)
41 #define AP_TEMPFILE AP_TEMPFILE_PREFIX AP_TEMPFILE_BASE AP_TEMPFILE_SUFFIX
42 
43 typedef struct {
44     /* Indicates the format of the header struct stored on-disk. */
45     apr_uint32_t format;
46     /* The HTTP status code returned for this response.  */
47     int status;
48     /* The size of the entity name that follows. */
49     apr_size_t name_len;
50     /* The number of times we've cached this entity. */
51     apr_size_t entity_version;
52     /* Miscellaneous time values. */
53     apr_time_t date;
54     apr_time_t expire;
55     apr_time_t request_time;
56     apr_time_t response_time;
57     /* The ident of the body file, so we can test the body matches the header */
58     apr_ino_t inode;
59     apr_dev_t device;
60     /* Does this cached request have a body? */
61     unsigned int has_body:1;
62     unsigned int header_only:1;
63     /* The parsed cache control header */
64     cache_control_t control;
65 } disk_cache_info_t;
66 
67 #endif /* CACHE_DIST_COMMON_H */
68 /** @} */
69