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 43typedef 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