Apache HTTPD
mod_cache_disk.h
Go to the documentation of this file.
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#ifndef MOD_CACHE_DISK_H
18#define MOD_CACHE_DISK_H
19
20#include "apr_file_io.h"
21
22#include "cache_disk_common.h"
23
24/*
25 * include for mod_cache_disk: Disk Based HTTP 1.1 Cache.
26 */
27
35
36/*
37 * disk_cache_object_t
38 * Pointed to by cache_object_t::vobj
39 */
40typedef struct disk_cache_object {
41 const char *root; /* the location of the cache directory */
43 const char *prefix;
44 disk_cache_file_t data; /* data file structure */
45 disk_cache_file_t hdrs; /* headers file structure */
46 disk_cache_file_t vary; /* vary file structure */
47 const char *hashfile; /* Computed hash key for this URI */
48 const char *name; /* Requested URI without vary bits - suitable for mortals. */
49 const char *key; /* On-disk prefix; URI with Vary bits (if present) */
50 apr_off_t file_size; /* File size of the cached data file */
51 disk_cache_info_t disk_info; /* Header information. */
52 apr_table_t *headers_in; /* Input headers to save */
53 apr_table_t *headers_out; /* Output headers to save */
54 apr_off_t offset; /* Max size to set aside */
55 apr_time_t timeout; /* Max time to set aside */
56 unsigned int done:1; /* Is the attempt to cache complete? */
58
59
60/*
61 * mod_cache_disk configuration
62 */
63/* TODO: Make defaults OS specific */
64#define CACHEFILE_LEN 20 /* must be less than HASH_LEN/2 */
65#define DEFAULT_DIRLEVELS 2
66#define DEFAULT_DIRLENGTH 2
67#define DEFAULT_MIN_FILE_SIZE 1
68#define DEFAULT_MAX_FILE_SIZE 1000000
69#define DEFAULT_READSIZE 0
70#define DEFAULT_READTIME 0
71
72typedef struct {
73 const char* cache_root;
75 int dirlevels; /* Number of levels of subdirectories */
76 int dirlength; /* Length of subdirectory names */
78
79typedef struct {
80 apr_off_t minfs; /* minimum file size for cached files */
81 apr_off_t maxfs; /* maximum file size for cached files */
82 apr_off_t readsize; /* maximum data to attempt to cache in one go */
83 apr_time_t readtime; /* maximum time taken to cache in one go */
84 unsigned int minfs_set:1;
85 unsigned int maxfs_set:1;
86 unsigned int readsize_set:1;
87 unsigned int readtime_set:1;
89
90#endif /*MOD_CACHE_DISK_H*/
91
APR File I/O Handling.
Common Disk Cache vars/structs.
apr_size_t size
apr_int64_t apr_time_t
Definition apr_time.h:45
struct disk_cache_object disk_cache_object_t
apr_size_t cache_root_len
const char * cache_root
unsigned int minfs_set
unsigned int readtime_set
unsigned int readsize_set
unsigned int maxfs_set
apr_pool_t * pool
apr_file_t * tempfd
const char * file
const char * hashfile
disk_cache_file_t hdrs
disk_cache_file_t data
apr_table_t * headers_out
apr_table_t * headers_in
disk_cache_file_t vary
const char * name
disk_cache_info_t disk_info
const char * root
unsigned int done
const char * prefix