| /* reps-strings.h : interpreting representations with respect to strings |
| * |
| * ==================================================================== |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * ==================================================================== |
| */ |
| |
| #ifndef SVN_LIBSVN_FS_REPS_STRINGS_H |
| #define SVN_LIBSVN_FS_REPS_STRINGS_H |
| |
| #define SVN_WANT_BDB |
| #include "svn_private_config.h" |
| |
| #include "svn_io.h" |
| #include "svn_fs.h" |
| |
| #include "trail.h" |
| |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| |
| |
| /* Get or create a mutable representation in FS, and set *NEW_REP_KEY to its |
| key. |
| |
| TXN_ID is the id of the Subversion transaction under which this occurs. |
| |
| If REP_KEY is not null and is already a mutable representation, set |
| *NEW_REP_KEY to REP_KEY, else create a brand new rep and set *NEW_REP_KEY |
| to its key, allocated in POOL. */ |
| svn_error_t *svn_fs_base__get_mutable_rep(const char **new_rep_key, |
| const char *rep_key, |
| svn_fs_t *fs, |
| const char *txn_id, |
| trail_t *trail, |
| apr_pool_t *pool); |
| |
| |
| /* Delete REP_KEY from FS if REP_KEY is mutable, as part of trail, or |
| do nothing if REP_KEY is immutable. If a mutable rep is deleted, |
| the string it refers to is deleted as well. TXN_ID is the id of |
| the Subversion transaction under which this occurs. |
| |
| If no such rep, return SVN_ERR_FS_NO_SUCH_REPRESENTATION. */ |
| svn_error_t *svn_fs_base__delete_rep_if_mutable(svn_fs_t *fs, |
| const char *rep_key, |
| const char *txn_id, |
| trail_t *trail, |
| apr_pool_t *pool); |
| |
| |
| |
| |
| /*** Reading and writing rep contents. ***/ |
| |
| /* Set *SIZE_P to the size of REP_KEY's contents in FS, as part of TRAIL. |
| Note: this is the fulltext size, no matter how the contents are |
| represented in storage. */ |
| svn_error_t *svn_fs_base__rep_contents_size(svn_filesize_t *size_p, |
| svn_fs_t *fs, |
| const char *rep_key, |
| trail_t *trail, |
| apr_pool_t *pool); |
| |
| |
| /* If MD5_CHECKSUM is non-NULL, set *MD5_CHECKSUM to the MD5 checksum |
| for REP_KEY in FS, as part of TRAIL. |
| |
| If SHA1_CHECKSUM is non-NULL, set *SHA1_CHECKSUM to the SHA1 |
| checksum for REP_KEY in FS, as part of TRAIL. |
| |
| These are the prerecorded checksums for the rep's contents' |
| fulltext. If one or both of the checksums is not stored, do not |
| calculate one dynamically, just put NULL into the respective return |
| value. (By convention, the NULL checksum is considered to match |
| any checksum.) */ |
| svn_error_t * |
| svn_fs_base__rep_contents_checksums(svn_checksum_t **md5_checksum, |
| svn_checksum_t **sha1_checksum, |
| svn_fs_t *fs, |
| const char *rep_key, |
| trail_t *trail, |
| apr_pool_t *pool); |
| |
| |
| /* Set STR->data to the contents of REP_KEY in FS, and STR->len to the |
| contents' length, as part of TRAIL. The data is allocated in |
| POOL. If an error occurs, the effect on STR->data and |
| STR->len is undefined. |
| |
| Note: this is the fulltext contents, no matter how the contents are |
| represented in storage. */ |
| svn_error_t *svn_fs_base__rep_contents(svn_string_t *str, |
| svn_fs_t *fs, |
| const char *rep_key, |
| trail_t *trail, |
| apr_pool_t *pool); |
| |
| |
| /* Set *RS_P to a stream to read the contents of REP_KEY in FS. |
| Allocate the stream in POOL. |
| |
| REP_KEY may be null, in which case reads just return 0 bytes. |
| |
| If USE_TRAIL_FOR_READS is TRUE, the stream's reads are part |
| of TRAIL; otherwise, each read happens in an internal, one-off |
| trail (though TRAIL is still required). POOL may be TRAIL->pool. */ |
| svn_error_t * |
| svn_fs_base__rep_contents_read_stream(svn_stream_t **rs_p, |
| svn_fs_t *fs, |
| const char *rep_key, |
| svn_boolean_t use_trail_for_reads, |
| trail_t *trail, |
| apr_pool_t *pool); |
| |
| |
| /* Set *WS_P to a stream to write the contents of REP_KEY. Allocate |
| the stream in POOL. TXN_ID is the id of the Subversion transaction |
| under which this occurs. |
| |
| If USE_TRAIL_FOR_WRITES is TRUE, the stream's writes are part |
| of TRAIL; otherwise, each write happens in an internal, one-off |
| trail (though TRAIL is still required). POOL may be TRAIL->pool. |
| |
| If REP_KEY is not mutable, writes to *WS_P will return the |
| error SVN_ERR_FS_REP_NOT_MUTABLE. */ |
| svn_error_t * |
| svn_fs_base__rep_contents_write_stream(svn_stream_t **ws_p, |
| svn_fs_t *fs, |
| const char *rep_key, |
| const char *txn_id, |
| svn_boolean_t use_trail_for_writes, |
| trail_t *trail, |
| apr_pool_t *pool); |
| |
| |
| |
| /*** Deltified storage. ***/ |
| |
| /* Offer TARGET the chance to store its contents as a delta against |
| SOURCE, in FS, as part of TRAIL. TARGET and SOURCE are both |
| representation keys. |
| |
| This usually results in TARGET's data being stored as a diff |
| against SOURCE; but it might not, if it turns out to be more |
| efficient to store the contents some other way. */ |
| svn_error_t *svn_fs_base__rep_deltify(svn_fs_t *fs, |
| const char *target, |
| const char *source, |
| trail_t *trail, |
| apr_pool_t *pool); |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* SVN_LIBSVN_FS_REPS_STRINGS_H */ |