1231990Smp/* 259243Sobrien * cache.h: cache vtable interface 359243Sobrien * 459243Sobrien * ==================================================================== 559243Sobrien * Licensed to the Apache Software Foundation (ASF) under one 659243Sobrien * or more contributor license agreements. See the NOTICE file 759243Sobrien * distributed with this work for additional information 859243Sobrien * regarding copyright ownership. The ASF licenses this file 959243Sobrien * to you under the Apache License, Version 2.0 (the 1059243Sobrien * "License"); you may not use this file except in compliance 1159243Sobrien * with the License. You may obtain a copy of the License at 1259243Sobrien * 1359243Sobrien * http://www.apache.org/licenses/LICENSE-2.0 1459243Sobrien * 1559243Sobrien * Unless required by applicable law or agreed to in writing, 1659243Sobrien * software distributed under the License is distributed on an 17100616Smp * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 1859243Sobrien * KIND, either express or implied. See the License for the 1959243Sobrien * specific language governing permissions and limitations 2059243Sobrien * under the License. 2159243Sobrien * ==================================================================== 2259243Sobrien */ 2359243Sobrien 2459243Sobrien#ifndef SVN_LIBSVN_SUBR_CACHE_H 2559243Sobrien#define SVN_LIBSVN_SUBR_CACHE_H 2659243Sobrien 2759243Sobrien#include "private/svn_cache.h" 2859243Sobrien 2959243Sobrien#ifdef __cplusplus 3059243Sobrienextern "C" { 3159243Sobrien#endif /* __cplusplus */ 3259243Sobrien 3359243Sobrientypedef struct svn_cache__vtable_t { 3459243Sobrien /* See svn_cache__get(). */ 35231990Smp svn_error_t *(*get)(void **value, 3659243Sobrien svn_boolean_t *found, 3759243Sobrien void *cache_implementation, 3859243Sobrien const void *key, 3959243Sobrien apr_pool_t *result_pool); 4059243Sobrien 4169408Sache /* See svn_cache__set(). */ 4259243Sobrien svn_error_t *(*set)(void *cache_implementation, 4359243Sobrien const void *key, 4469408Sache void *value, 4559243Sobrien apr_pool_t *scratch_pool); 4659243Sobrien 4759243Sobrien /* See svn_cache__iter(). */ 4859243Sobrien svn_error_t *(*iter)(svn_boolean_t *completed, 4959243Sobrien void *cache_implementation, 50231990Smp svn_iter_apr_hash_cb_t func, 51231990Smp void *baton, 52231990Smp apr_pool_t *scratch_pool); 53231990Smp 54145479Smp /* See svn_cache__is_cachable(). */ 5559243Sobrien svn_boolean_t (*is_cachable)(void *cache_implementation, 5659243Sobrien apr_size_t size); 5759243Sobrien 5859243Sobrien /* See svn_cache__get_partial(). */ 5959243Sobrien svn_error_t *(*get_partial)(void **value, 6059243Sobrien svn_boolean_t *found, 6159243Sobrien void *cache_implementation, 6259243Sobrien const void *key, 6359243Sobrien svn_cache__partial_getter_func_t func, 6459243Sobrien void *baton, 6559243Sobrien apr_pool_t *result_pool); 6659243Sobrien 6759243Sobrien /* See svn_cache__set_partial(). */ 6859243Sobrien svn_error_t *(*set_partial)(void *cache_implementation, 6959243Sobrien const void *key, 7059243Sobrien svn_cache__partial_setter_func_t func, 7159243Sobrien void *baton, 7259243Sobrien apr_pool_t *scratch_pool); 7359243Sobrien 7459243Sobrien /* See svn_cache__get_info(). */ 7559243Sobrien svn_error_t *(*get_info)(void *cache_implementation, 7659243Sobrien svn_cache__info_t *info, 7759243Sobrien svn_boolean_t reset, 7859243Sobrien apr_pool_t *result_pool); 7959243Sobrien} svn_cache__vtable_t; 8059243Sobrien 8159243Sobrienstruct svn_cache__t { 82167465Smp const svn_cache__vtable_t *vtable; 83167465Smp 84167465Smp /* See svn_cache__set_error_handler(). */ 85167465Smp svn_cache__error_handler_t error_handler; 86167465Smp void *error_baton; 87167465Smp 88167465Smp /* Private data for the cache implementation. */ 89167465Smp void *cache_internal; 9059243Sobrien 9159243Sobrien /* Total number of calls to getters. */ 9259243Sobrien apr_uint64_t reads; 9359243Sobrien 9459243Sobrien /* Total number of calls to set(). */ 9559243Sobrien apr_uint64_t writes; 9659243Sobrien 9759243Sobrien /* Total number of getter calls that returned a cached item. */ 9859243Sobrien apr_uint64_t hits; 9959243Sobrien 10059243Sobrien /* Total number of function calls that returned an error. */ 10159243Sobrien apr_uint64_t failures; 10259243Sobrien}; 10359243Sobrien 10459243Sobrien 10559243Sobrien#ifdef __cplusplus 10659243Sobrien} 10759243Sobrien#endif /* __cplusplus */ 10859243Sobrien 10959243Sobrien#endif /* SVN_LIBSVN_SUBR_CACHE_H */ 11059243Sobrien