rep-cache.h revision 299742
1/* rep-cache.h : interface to rep cache db functions 2 * 3 * ==================================================================== 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 * ==================================================================== 21 */ 22 23#ifndef SVN_LIBSVN_FS_FS_REP_CACHE_H 24#define SVN_LIBSVN_FS_FS_REP_CACHE_H 25 26#include "svn_error.h" 27 28#include "fs.h" 29 30#ifdef __cplusplus 31extern "C" { 32#endif /* __cplusplus */ 33 34 35#define REP_CACHE_DB_NAME "rep-cache.db" 36 37/* Open and create, if needed, the rep cache database associated with FS. 38 Use POOL for temporary allocations. */ 39svn_error_t * 40svn_fs_fs__open_rep_cache(svn_fs_t *fs, 41 apr_pool_t *pool); 42 43/* Set *EXISTS to TRUE iff the rep-cache DB file exists. */ 44svn_error_t * 45svn_fs_fs__exists_rep_cache(svn_boolean_t *exists, 46 svn_fs_t *fs, apr_pool_t *pool); 47 48/* Iterate all representations currently in FS's cache. */ 49svn_error_t * 50svn_fs_fs__walk_rep_reference(svn_fs_t *fs, 51 svn_revnum_t start, 52 svn_revnum_t end, 53 svn_error_t *(*walker)(representation_t *rep, 54 void *walker_baton, 55 svn_fs_t *fs, 56 apr_pool_t *scratch_pool), 57 void *walker_baton, 58 svn_cancel_func_t cancel_func, 59 void *cancel_baton, 60 apr_pool_t *pool); 61 62/* Return the representation REP in FS which has fulltext CHECKSUM. 63 REP is allocated in POOL. If the rep cache database has not been 64 opened, just set *REP to NULL. Returns SVN_ERR_FS_CORRUPT if 65 a reference beyond HEAD is detected. */ 66svn_error_t * 67svn_fs_fs__get_rep_reference(representation_t **rep, 68 svn_fs_t *fs, 69 svn_checksum_t *checksum, 70 apr_pool_t *pool); 71 72/* Set the representation REP in FS, using REP->CHECKSUM. 73 Use POOL for temporary allocations. Returns SVN_ERR_FS_CORRUPT if 74 an existing reference beyond HEAD is detected. 75 76 If the rep cache database has not been opened, this may be a no op. */ 77svn_error_t * 78svn_fs_fs__set_rep_reference(svn_fs_t *fs, 79 representation_t *rep, 80 apr_pool_t *pool); 81 82/* Delete from the cache all reps corresponding to revisions younger 83 than YOUNGEST. */ 84svn_error_t * 85svn_fs_fs__del_rep_reference(svn_fs_t *fs, 86 svn_revnum_t youngest, 87 apr_pool_t *pool); 88 89/* Start a transaction to take an SQLite reserved lock that prevents 90 other writes, call BODY, end the transaction, and return what BODY returned. 91 */ 92svn_error_t * 93svn_fs_fs__with_rep_cache_lock(svn_fs_t *fs, 94 svn_error_t *(*body)(void *baton, 95 apr_pool_t *pool), 96 void *baton, 97 apr_pool_t *pool); 98 99#ifdef __cplusplus 100} 101#endif /* __cplusplus */ 102 103#endif /* SVN_LIBSVN_FS_FS_REP_CACHE_H */ 104