~alinuxninja/nginx-edge/trunk

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/aprutil/src/include/private/apr_dbm_private.h

  • Committer: Vivian
  • Date: 2015-12-04 18:20:11 UTC
  • Revision ID: git-v1:a36f2bc32e884f7473b3a47040e5411306144d7d
* Do not extract psol.tar.gz

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 APR_DBM_PRIVATE_H
18
 
#define APR_DBM_PRIVATE_H
19
 
 
20
 
#include "apr.h"
21
 
#include "apr_errno.h"
22
 
#include "apr_pools.h"
23
 
#include "apr_dbm.h"
24
 
#include "apr_file_io.h"
25
 
 
26
 
#include "apu.h"
27
 
 
28
 
/* ### for now, include the DBM selection; this will go away once we start
29
 
   ### building and linking all of the DBMs at once. */
30
 
#include "apu_select_dbm.h"
31
 
 
32
 
#ifdef __cplusplus
33
 
extern "C" {
34
 
#endif
35
 
 
36
 
/** @internal */
37
 
 
38
 
/**
39
 
 * Most DBM libraries take a POSIX mode for creating files.  Don't trust
40
 
 * the mode_t type, some platforms may not support it, int is safe.
41
 
 */
42
 
APU_DECLARE(int) apr_posix_perms2mode(apr_fileperms_t perm);
43
 
 
44
 
/**
45
 
 * Structure to describe the operations of the DBM
46
 
 */
47
 
typedef struct {
48
 
    /** The name of the DBM Type */
49
 
    const char *name;
50
 
 
51
 
    /** Open the DBM */
52
 
    apr_status_t (*open)(apr_dbm_t **pdb, const char *pathname,
53
 
                         apr_int32_t mode, apr_fileperms_t perm,
54
 
                         apr_pool_t *pool);
55
 
 
56
 
    /** Close the DBM */
57
 
    void (*close)(apr_dbm_t *dbm);
58
 
 
59
 
    /** Fetch a dbm record value by key */
60
 
    apr_status_t (*fetch)(apr_dbm_t *dbm, apr_datum_t key,
61
 
                                   apr_datum_t * pvalue);
62
 
 
63
 
    /** Store a dbm record value by key */
64
 
    apr_status_t (*store)(apr_dbm_t *dbm, apr_datum_t key, apr_datum_t value);
65
 
 
66
 
    /** Delete a dbm record value by key */
67
 
    apr_status_t (*del)(apr_dbm_t *dbm, apr_datum_t key);
68
 
 
69
 
    /** Search for a key within the dbm */
70
 
    int (*exists)(apr_dbm_t *dbm, apr_datum_t key);
71
 
 
72
 
    /** Retrieve the first record key from a dbm */
73
 
    apr_status_t (*firstkey)(apr_dbm_t *dbm, apr_datum_t * pkey);
74
 
 
75
 
    /** Retrieve the next record key from a dbm */
76
 
    apr_status_t (*nextkey)(apr_dbm_t *dbm, apr_datum_t * pkey);
77
 
 
78
 
    /** Proactively toss any memory associated with the apr_datum_t. */
79
 
    void (*freedatum)(apr_dbm_t *dbm, apr_datum_t data);
80
 
 
81
 
    /** Get the names that the DBM will use for a given pathname. */
82
 
    void (*getusednames)(apr_pool_t *pool,
83
 
                         const char *pathname,
84
 
                         const char **used1,
85
 
                         const char **used2);
86
 
 
87
 
} apr_dbm_type_t;
88
 
 
89
 
 
90
 
/**
91
 
 * The actual DBM
92
 
 */
93
 
struct apr_dbm_t
94
 
95
 
    /** Associated pool */
96
 
    apr_pool_t *pool;
97
 
 
98
 
    /** pointer to DB Implementation Specific data */
99
 
    void *file;
100
 
 
101
 
    /** Current integer error code */
102
 
    int errcode;
103
 
    /** Current string error code */
104
 
    const char *errmsg;
105
 
 
106
 
    /** the type of DBM */
107
 
    const apr_dbm_type_t *type;
108
 
};
109
 
 
110
 
 
111
 
/* Declare all of the DBM provider tables */
112
 
APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_sdbm;
113
 
APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_gdbm;
114
 
APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_ndbm;
115
 
APU_MODULE_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db;
116
 
 
117
 
#ifdef __cplusplus
118
 
}
119
 
#endif
120
 
 
121
 
#endif /* APR_DBM_PRIVATE_H */