svn_ra_svn_private.h revision 251881
1251881Speter/** 2251881Speter * @copyright 3251881Speter * ==================================================================== 4251881Speter * Licensed to the Apache Software Foundation (ASF) under one 5251881Speter * or more contributor license agreements. See the NOTICE file 6251881Speter * distributed with this work for additional information 7251881Speter * regarding copyright ownership. The ASF licenses this file 8251881Speter * to you under the Apache License, Version 2.0 (the 9251881Speter * "License"); you may not use this file except in compliance 10251881Speter * with the License. You may obtain a copy of the License at 11251881Speter * 12251881Speter * http://www.apache.org/licenses/LICENSE-2.0 13251881Speter * 14251881Speter * Unless required by applicable law or agreed to in writing, 15251881Speter * software distributed under the License is distributed on an 16251881Speter * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17251881Speter * KIND, either express or implied. See the License for the 18251881Speter * specific language governing permissions and limitations 19251881Speter * under the License. 20251881Speter * ==================================================================== 21251881Speter * @endcopyright 22251881Speter * 23251881Speter * @file svn_ra_svn_private.h 24251881Speter * @brief Functions used by the server - Internal routines 25251881Speter */ 26251881Speter 27251881Speter#ifndef SVN_RA_SVN_PRIVATE_H 28251881Speter#define SVN_RA_SVN_PRIVATE_H 29251881Speter 30251881Speter#include "svn_ra_svn.h" 31251881Speter#include "svn_editor.h" 32251881Speter 33251881Speter#ifdef __cplusplus 34251881Speterextern "C" { 35251881Speter#endif /* __cplusplus */ 36251881Speter 37251881Speter 38251881Speter/** 39251881Speter * Set the shim callbacks to be used by @a conn to @a shim_callbacks. 40251881Speter */ 41251881Spetersvn_error_t * 42251881Spetersvn_ra_svn__set_shim_callbacks(svn_ra_svn_conn_t *conn, 43251881Speter svn_delta_shim_callbacks_t *shim_callbacks); 44251881Speter 45251881Speter/** 46251881Speter * @defgroup ra_svn_deprecated ra_svn low-level functions 47251881Speter * @{ 48251881Speter */ 49251881Speter 50251881Speter/** Write a number over the net. 51251881Speter * 52251881Speter * Writes will be buffered until the next read or flush. 53251881Speter */ 54251881Spetersvn_error_t * 55251881Spetersvn_ra_svn__write_number(svn_ra_svn_conn_t *conn, 56251881Speter apr_pool_t *pool, 57251881Speter apr_uint64_t number); 58251881Speter 59251881Speter/** Write a string over the net. 60251881Speter * 61251881Speter * Writes will be buffered until the next read or flush. 62251881Speter */ 63251881Spetersvn_error_t * 64251881Spetersvn_ra_svn__write_string(svn_ra_svn_conn_t *conn, 65251881Speter apr_pool_t *pool, 66251881Speter const svn_string_t *str); 67251881Speter 68251881Speter/** Write a cstring over the net. 69251881Speter * 70251881Speter * Writes will be buffered until the next read or flush. 71251881Speter */ 72251881Spetersvn_error_t * 73251881Spetersvn_ra_svn__write_cstring(svn_ra_svn_conn_t *conn, 74251881Speter apr_pool_t *pool, 75251881Speter const char *s); 76251881Speter 77251881Speter/** Write a word over the net. 78251881Speter * 79251881Speter * Writes will be buffered until the next read or flush. 80251881Speter */ 81251881Spetersvn_error_t * 82251881Spetersvn_ra_svn__write_word(svn_ra_svn_conn_t *conn, 83251881Speter apr_pool_t *pool, 84251881Speter const char *word); 85251881Speter 86251881Speter/** Write a list of properties over the net. @a props is allowed to be NULL, 87251881Speter * in which case an empty list will be written out. 88251881Speter * 89251881Speter * @since New in 1.5. 90251881Speter */ 91251881Spetersvn_error_t * 92251881Spetersvn_ra_svn__write_proplist(svn_ra_svn_conn_t *conn, 93251881Speter apr_pool_t *pool, 94251881Speter apr_hash_t *props); 95251881Speter 96251881Speter/** Begin a list. Writes will be buffered until the next read or flush. */ 97251881Spetersvn_error_t * 98251881Spetersvn_ra_svn__start_list(svn_ra_svn_conn_t *conn, 99251881Speter apr_pool_t *pool); 100251881Speter 101251881Speter/** End a list. Writes will be buffered until the next read or flush. */ 102251881Spetersvn_error_t * 103251881Spetersvn_ra_svn__end_list(svn_ra_svn_conn_t *conn, 104251881Speter apr_pool_t *pool); 105251881Speter 106251881Speter/** Flush the write buffer. 107251881Speter * 108251881Speter * Normally this shouldn't be necessary, since the write buffer is flushed 109251881Speter * when a read is attempted. 110251881Speter */ 111251881Spetersvn_error_t * 112251881Spetersvn_ra_svn__flush(svn_ra_svn_conn_t *conn, 113251881Speter apr_pool_t *pool); 114251881Speter 115251881Speter/** Write a tuple, using a printf-like interface. 116251881Speter * 117251881Speter * The format string @a fmt may contain: 118251881Speter * 119251881Speter *@verbatim 120251881Speter Spec Argument type Item type 121251881Speter ---- -------------------- --------- 122251881Speter n apr_uint64_t Number 123251881Speter r svn_revnum_t Number 124251881Speter s const svn_string_t * String 125251881Speter c const char * String 126251881Speter w const char * Word 127251881Speter b svn_boolean_t Word ("true" or "false") 128251881Speter ( Begin tuple 129251881Speter ) End tuple 130251881Speter ? Remaining elements optional 131251881Speter ! (at beginning or end) Suppress opening or closing of tuple 132251881Speter @endverbatim 133251881Speter * 134251881Speter * Inside the optional part of a tuple, 'r' values may be @c 135251881Speter * SVN_INVALID_REVNUM, 'n' values may be 136251881Speter * SVN_RA_SVN_UNSPECIFIED_NUMBER, and 's', 'c', and 'w' values may be 137251881Speter * @c NULL; in these cases no data will be written. 'b' and '(' may 138251881Speter * not appear in the optional part of a tuple. Either all or none of 139251881Speter * the optional values should be valid. 140251881Speter * 141251881Speter * (If we ever have a need for an optional boolean value, we should 142251881Speter * invent a 'B' specifier which stores a boolean into an int, using -1 143251881Speter * for unspecified. Right now there is no need for such a thing.) 144251881Speter * 145251881Speter * Use the '!' format specifier to write partial tuples when you have 146251881Speter * to transmit an array or other unusual data. For example, to write 147251881Speter * a tuple containing a revision, an array of words, and a boolean: 148251881Speter * @code 149251881Speter SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "r(!", rev)); 150251881Speter for (i = 0; i < n; i++) 151251881Speter SVN_ERR(svn_ra_svn_write_word(conn, pool, words[i])); 152251881Speter SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!)b", flag)); @endcode 153251881Speter */ 154251881Spetersvn_error_t * 155251881Spetersvn_ra_svn__write_tuple(svn_ra_svn_conn_t *conn, 156251881Speter apr_pool_t *pool, 157251881Speter const char *fmt, ...); 158251881Speter 159251881Speter/** Read an item from the network into @a *item. */ 160251881Spetersvn_error_t * 161251881Spetersvn_ra_svn__read_item(svn_ra_svn_conn_t *conn, 162251881Speter apr_pool_t *pool, 163251881Speter svn_ra_svn_item_t **item); 164251881Speter 165251881Speter/** Scan data on @a conn until we find something which looks like the 166251881Speter * beginning of an svn server greeting (an open paren followed by a 167251881Speter * whitespace character). This function is appropriate for beginning 168251881Speter * a client connection opened in tunnel mode, since people's dotfiles 169251881Speter * sometimes write output to stdout. It may only be called at the 170251881Speter * beginning of a client connection. 171251881Speter */ 172251881Spetersvn_error_t * 173251881Spetersvn_ra_svn__skip_leading_garbage(svn_ra_svn_conn_t *conn, 174251881Speter apr_pool_t *pool); 175251881Speter 176251881Speter/** Parse an array of @c svn_sort__item_t structures as a tuple, using a 177251881Speter * printf-like interface. The format string @a fmt may contain: 178251881Speter * 179251881Speter *@verbatim 180251881Speter Spec Argument type Item type 181251881Speter ---- -------------------- --------- 182251881Speter n apr_uint64_t * Number 183251881Speter r svn_revnum_t * Number 184251881Speter s svn_string_t ** String 185251881Speter c const char ** String 186251881Speter w const char ** Word 187251881Speter b svn_boolean_t * Word ("true" or "false") 188251881Speter B apr_uint64_t * Word ("true" or "false") 189251881Speter l apr_array_header_t ** List 190251881Speter ( Begin tuple 191251881Speter ) End tuple 192251881Speter ? Tuple is allowed to end here 193251881Speter @endverbatim 194251881Speter * 195251881Speter * Note that a tuple is only allowed to end precisely at a '?', or at 196251881Speter * the end of the specification. So if @a fmt is "c?cc" and @a list 197251881Speter * contains two elements, an error will result. 198251881Speter * 199251881Speter * 'B' is similar to 'b', but may be used in the optional tuple specification. 200251881Speter * It returns TRUE, FALSE, or SVN_RA_SVN_UNSPECIFIED_NUMBER. 201251881Speter * 202251881Speter * If an optional part of a tuple contains no data, 'r' values will be 203251881Speter * set to @c SVN_INVALID_REVNUM, 'n' and 'B' values will be set to 204251881Speter * SVN_RA_SVN_UNSPECIFIED_NUMBER, and 's', 'c', 'w', and 'l' values 205251881Speter * will be set to @c NULL. 'b' may not appear inside an optional 206251881Speter * tuple specification; use 'B' instead. 207251881Speter */ 208251881Spetersvn_error_t * 209251881Spetersvn_ra_svn__parse_tuple(const apr_array_header_t *list, 210251881Speter apr_pool_t *pool, 211251881Speter const char *fmt, ...); 212251881Speter 213251881Speter/** Read a tuple from the network and parse it as a tuple, using the 214251881Speter * format string notation from svn_ra_svn_parse_tuple(). 215251881Speter */ 216251881Spetersvn_error_t * 217251881Spetersvn_ra_svn__read_tuple(svn_ra_svn_conn_t *conn, 218251881Speter apr_pool_t *pool, 219251881Speter const char *fmt, ...); 220251881Speter 221251881Speter/** Parse an array of @c svn_ra_svn_item_t structures as a list of 222251881Speter * properties, storing the properties in a hash table. 223251881Speter * 224251881Speter * @since New in 1.5. 225251881Speter */ 226251881Spetersvn_error_t * 227251881Spetersvn_ra_svn__parse_proplist(const apr_array_header_t *list, 228251881Speter apr_pool_t *pool, 229251881Speter apr_hash_t **props); 230251881Speter 231251881Speter/** Read a command response from the network and parse it as a tuple, using 232251881Speter * the format string notation from svn_ra_svn_parse_tuple(). 233251881Speter */ 234251881Spetersvn_error_t * 235251881Spetersvn_ra_svn__read_cmd_response(svn_ra_svn_conn_t *conn, 236251881Speter apr_pool_t *pool, 237251881Speter const char *fmt, ...); 238251881Speter 239251881Speter/** Accept commands over the network and handle them according to @a 240251881Speter * commands. Command handlers will be passed @a conn, a subpool of @a 241251881Speter * pool (cleared after each command is handled), the parameters of the 242251881Speter * command, and @a baton. Commands will be accepted until a 243251881Speter * terminating command is received (a command with "terminate" set in 244251881Speter * the command table). If a command handler returns an error wrapped 245251881Speter * in SVN_RA_SVN_CMD_ERR (see the @c SVN_CMD_ERR macro), the error 246251881Speter * will be reported to the other side of the connection and the 247251881Speter * command loop will continue; any other kind of error (typically a 248251881Speter * network or protocol error) is passed through to the caller. 249251881Speter * 250251881Speter * @since New in 1.6. 251251881Speter * 252251881Speter */ 253251881Spetersvn_error_t * 254251881Spetersvn_ra_svn__handle_commands2(svn_ra_svn_conn_t *conn, 255251881Speter apr_pool_t *pool, 256251881Speter const svn_ra_svn_cmd_entry_t *commands, 257251881Speter void *baton, 258251881Speter svn_boolean_t error_on_disconnect); 259251881Speter 260251881Speter/** Write a successful command response over the network, using the 261251881Speter * same format string notation as svn_ra_svn_write_tuple(). Do not use 262251881Speter * partial tuples with this function; if you need to use partial 263251881Speter * tuples, just write out the "success" and argument tuple by hand. 264251881Speter */ 265251881Spetersvn_error_t * 266251881Spetersvn_ra_svn__write_cmd_response(svn_ra_svn_conn_t *conn, 267251881Speter apr_pool_t *pool, 268251881Speter const char *fmt, ...); 269251881Speter 270251881Speter/** Write an unsuccessful command response over the network. */ 271251881Spetersvn_error_t * 272251881Spetersvn_ra_svn__write_cmd_failure(svn_ra_svn_conn_t *conn, 273251881Speter apr_pool_t *pool, 274251881Speter svn_error_t *err); 275251881Speter 276251881Speter/** 277251881Speter * @} 278251881Speter */ 279251881Speter 280251881Speter/** 281251881Speter * @defgroup svn_commands sending ra_svn commands 282251881Speter * @{ 283251881Speter */ 284251881Speter 285251881Speter/** Sets the target revision of connection @a conn to @a rev. Use @a pool 286251881Speter * for allocations. 287251881Speter */ 288251881Spetersvn_error_t * 289251881Spetersvn_ra_svn__write_cmd_target_rev(svn_ra_svn_conn_t *conn, 290251881Speter apr_pool_t *pool, 291251881Speter svn_revnum_t rev); 292251881Speter 293251881Speter/** Send a "open-root" command over connection @a conn. Open the 294251881Speter * repository root at revision @a rev and associate it with @a token. 295251881Speter * Use @a pool for allocations. 296251881Speter */ 297251881Spetersvn_error_t * 298251881Spetersvn_ra_svn__write_cmd_open_root(svn_ra_svn_conn_t *conn, 299251881Speter apr_pool_t *pool, 300251881Speter svn_revnum_t rev, 301251881Speter const char *token); 302251881Speter 303251881Speter/** Send a "delete-entry" command over connection @a conn. Delete the 304251881Speter * @a path at optional revision @a rev below @a parent_token. 305251881Speter * Use @a pool for allocations. 306251881Speter */ 307251881Spetersvn_error_t * 308251881Spetersvn_ra_svn__write_cmd_delete_entry(svn_ra_svn_conn_t *conn, 309251881Speter apr_pool_t *pool, 310251881Speter const char *path, 311251881Speter svn_revnum_t rev, 312251881Speter const char *parent_token); 313251881Speter 314251881Speter/** Send a "add-dir" command over connection @a conn. Add a new directory 315251881Speter * node named @a path under the directory identified by @a parent_token. 316251881Speter * Associate the new directory with the given @a token. * @a copy_path 317251881Speter * and @a copy_rev are optional and describe the copy source. 318251881Speter * Use @a pool for allocations. 319251881Speter */ 320251881Spetersvn_error_t * 321251881Spetersvn_ra_svn__write_cmd_add_dir(svn_ra_svn_conn_t *conn, 322251881Speter apr_pool_t *pool, 323251881Speter const char *path, 324251881Speter const char *parent_token, 325251881Speter const char *token, 326251881Speter const char *copy_path, 327251881Speter svn_revnum_t copy_rev); 328251881Speter 329251881Speter/** Send a "open-dir" command over connection @a conn. Associate to 330251881Speter * @a token the directory node named @a path under the directory 331251881Speter * identified by @a parent_token in revision @a rev. 332251881Speter * Use @a pool for allocations. 333251881Speter */ 334251881Spetersvn_error_t * 335251881Spetersvn_ra_svn__write_cmd_open_dir(svn_ra_svn_conn_t *conn, 336251881Speter apr_pool_t *pool, 337251881Speter const char *path, 338251881Speter const char *parent_token, 339251881Speter const char *token, 340251881Speter svn_revnum_t rev); 341251881Speter 342251881Speter/** Send a "change-dir-prop" command over connection @a conn. Set the 343251881Speter * property @a name to the optional @a value on the directory identified 344251881Speter * to @a token. Use @a pool for allocations. 345251881Speter */ 346251881Spetersvn_error_t * 347251881Spetersvn_ra_svn__write_cmd_change_dir_prop(svn_ra_svn_conn_t *conn, 348251881Speter apr_pool_t *pool, 349251881Speter const char *token, 350251881Speter const char *name, 351251881Speter const svn_string_t *value); 352251881Speter 353251881Speter/** Send a "close-dir" command over connection @a conn. Identify the node 354251881Speter * to close with @a token. The latter will then no longer be associated 355251881Speter * with that node. Use @a pool for allocations. 356251881Speter */ 357251881Spetersvn_error_t * 358251881Spetersvn_ra_svn__write_cmd_close_dir(svn_ra_svn_conn_t *conn, 359251881Speter apr_pool_t *pool, 360251881Speter const char *token); 361251881Speter 362251881Speter/** Send a "absent-dir" command over connection @a conn. Directory node 363251881Speter * named @a path under the directory identified by @a parent_token is 364251881Speter * absent. Use @a pool for allocations. 365251881Speter */ 366251881Spetersvn_error_t * 367251881Spetersvn_ra_svn__write_cmd_absent_dir(svn_ra_svn_conn_t *conn, 368251881Speter apr_pool_t *pool, 369251881Speter const char *path, 370251881Speter const char *parent_token); 371251881Speter 372251881Speter/** Send a "add-file" command over connection @a conn. Add a new file 373251881Speter * node named @a path under the directory identified by @a parent_token. 374251881Speter * Associate the new file with the given @a token. * @a copy_path and 375251881Speter * @a copy_rev are optional and describe the copy source. 376251881Speter * Use @a pool for allocations. 377251881Speter */ 378251881Spetersvn_error_t * 379251881Spetersvn_ra_svn__write_cmd_add_file(svn_ra_svn_conn_t *conn, 380251881Speter apr_pool_t *pool, 381251881Speter const char *path, 382251881Speter const char *parent_token, 383251881Speter const char *token, 384251881Speter const char *copy_path, 385251881Speter svn_revnum_t copy_rev); 386251881Speter 387251881Speter/** Send a "open-file" command over connection @a conn. Associate to 388251881Speter * @a token the file node named @a path under the directory identified by 389251881Speter * @a parent_token in revision @a rev. 390251881Speter * Use @a pool for allocations. 391251881Speter */ 392251881Spetersvn_error_t * 393251881Spetersvn_ra_svn__write_cmd_open_file(svn_ra_svn_conn_t *conn, 394251881Speter apr_pool_t *pool, 395251881Speter const char *path, 396251881Speter const char *parent_token, 397251881Speter const char *token, 398251881Speter svn_revnum_t rev); 399251881Speter 400251881Speter/** Send a "change-file-prop" command over connection @a conn. Set the 401251881Speter * property @a name to the optional @a value on the file identified to 402251881Speter * @a token. Use @a pool for allocations. 403251881Speter */ 404251881Spetersvn_error_t * 405251881Spetersvn_ra_svn__write_cmd_change_file_prop(svn_ra_svn_conn_t *conn, 406251881Speter apr_pool_t *pool, 407251881Speter const char *token, 408251881Speter const char *name, 409251881Speter const svn_string_t *value); 410251881Speter 411251881Speter/** Send a "close-dir" command over connection @a conn. Identify the node 412251881Speter * to close with @a token and provide an optional @a check_sum. The token 413251881Speter * will then no longer be associated with that node. 414251881Speter * Use @a pool for allocations. 415251881Speter */ 416251881Spetersvn_error_t * 417251881Spetersvn_ra_svn__write_cmd_close_file(svn_ra_svn_conn_t *conn, 418251881Speter apr_pool_t *pool, 419251881Speter const char *token, 420251881Speter const char *text_checksum); 421251881Speter 422251881Speter/** Send a "absent-file" command over connection @a conn. File node 423251881Speter * named @a path in the directory identified by @a parent_token is 424251881Speter * absent. Use @a pool for allocations. 425251881Speter */ 426251881Spetersvn_error_t * 427251881Spetersvn_ra_svn__write_cmd_absent_file(svn_ra_svn_conn_t *conn, 428251881Speter apr_pool_t *pool, 429251881Speter const char *path, 430251881Speter const char *parent_token); 431251881Speter 432251881Speter/** Send a "apply-textdelta" command over connection @a conn. Starts a 433251881Speter * series of text deltas to be applied to the file identified by @a token. 434251881Speter * Optionally, specify the file's current checksum in @a base_checksum. 435251881Speter * Use @a pool for allocations. 436251881Speter */ 437251881Spetersvn_error_t * 438251881Spetersvn_ra_svn__write_cmd_apply_textdelta(svn_ra_svn_conn_t *conn, 439251881Speter apr_pool_t *pool, 440251881Speter const char *token, 441251881Speter const char *base_checksum); 442251881Speter 443251881Speter/** Send a "textdelta-chunk" command over connection @a conn. Apply 444251881Speter * textdelta @a chunk to the file identified by @a token. 445251881Speter * Use @a pool for allocations. 446251881Speter */ 447251881Spetersvn_error_t * 448251881Spetersvn_ra_svn__write_cmd_textdelta_chunk(svn_ra_svn_conn_t *conn, 449251881Speter apr_pool_t *pool, 450251881Speter const char *token, 451251881Speter const svn_string_t *chunk); 452251881Speter 453251881Speter/** Send a "textdelta-end" command over connection @a conn. Ends the 454251881Speter * series of text deltas to be applied to the file identified by @a token. 455251881Speter * Use @a pool for allocations. 456251881Speter */ 457251881Spetersvn_error_t * 458251881Spetersvn_ra_svn__write_cmd_textdelta_end(svn_ra_svn_conn_t *conn, 459251881Speter apr_pool_t *pool, 460251881Speter const char *token); 461251881Speter 462251881Speter/** Send a "close-edit" command over connection @a conn. Ends the editor 463251881Speter * drive (successfully). Use @a pool for allocations. 464251881Speter */ 465251881Spetersvn_error_t * 466251881Spetersvn_ra_svn__write_cmd_close_edit(svn_ra_svn_conn_t *conn, 467251881Speter apr_pool_t *pool); 468251881Speter 469251881Speter/** Send a "abort-edit" command over connection @a conn. Prematurely ends 470251881Speter * the editor drive, e.g. due to some problem on the other side. 471251881Speter * Use @a pool for allocations. 472251881Speter */ 473251881Spetersvn_error_t * 474251881Spetersvn_ra_svn__write_cmd_abort_edit(svn_ra_svn_conn_t *conn, 475251881Speter apr_pool_t *pool); 476251881Speter 477251881Speter/** Send a "set-path" command over connection @a conn. 478251881Speter * Use @a pool for allocations. 479251881Speter * 480251881Speter * @see set_path() in #svn_ra_reporter3_t for a description. 481251881Speter */ 482251881Spetersvn_error_t * 483251881Spetersvn_ra_svn__write_cmd_set_path(svn_ra_svn_conn_t *conn, 484251881Speter apr_pool_t *pool, 485251881Speter const char *path, 486251881Speter svn_revnum_t rev, 487251881Speter svn_boolean_t start_empty, 488251881Speter const char *lock_token, 489251881Speter svn_depth_t depth); 490251881Speter 491251881Speter/** Send a "delete-path" command over connection @a conn. 492251881Speter * Use @a pool for allocations. 493251881Speter * 494251881Speter * @see delete_path() in #svn_ra_reporter3_t for a description. 495251881Speter */ 496251881Spetersvn_error_t * 497251881Spetersvn_ra_svn__write_cmd_delete_path(svn_ra_svn_conn_t *conn, 498251881Speter apr_pool_t *pool, 499251881Speter const char *path); 500251881Speter 501251881Speter/** Send a "link-path" command over connection @a conn. 502251881Speter * Use @a pool for allocations. 503251881Speter * 504251881Speter * @see link_path() in #svn_ra_reporter3_t for a description. 505251881Speter */ 506251881Spetersvn_error_t * 507251881Spetersvn_ra_svn__write_cmd_link_path(svn_ra_svn_conn_t *conn, 508251881Speter apr_pool_t *pool, 509251881Speter const char *path, 510251881Speter const char *url, 511251881Speter svn_revnum_t rev, 512251881Speter svn_boolean_t start_empty, 513251881Speter const char *lock_token, 514251881Speter svn_depth_t depth); 515251881Speter 516251881Speter/** Send a "finish-report" command over connection @a conn. 517251881Speter * Use @a pool for allocations. 518251881Speter * 519251881Speter * @see finish_report() in #svn_ra_reporter3_t for a description. 520251881Speter */ 521251881Spetersvn_error_t * 522251881Spetersvn_ra_svn__write_cmd_finish_report(svn_ra_svn_conn_t *conn, 523251881Speter apr_pool_t *pool); 524251881Speter 525251881Speter/** Send a "abort-report" command over connection @a conn. 526251881Speter * Use @a pool for allocations. 527251881Speter * 528251881Speter * @see abort_report() in #svn_ra_reporter3_t for a description. 529251881Speter */ 530251881Spetersvn_error_t * 531251881Spetersvn_ra_svn__write_cmd_abort_report(svn_ra_svn_conn_t *conn, 532251881Speter apr_pool_t *pool); 533251881Speter 534251881Speter/** Send a "reparent" command over connection @a conn. 535251881Speter * Use @a pool for allocations. 536251881Speter * 537251881Speter * @see #svn_ra_reparent for a description. 538251881Speter */ 539251881Spetersvn_error_t * 540251881Spetersvn_ra_svn__write_cmd_reparent(svn_ra_svn_conn_t *conn, 541251881Speter apr_pool_t *pool, 542251881Speter const char *url); 543251881Speter 544251881Speter/** Send a "get-latest-rev" command over connection @a conn. 545251881Speter * Use @a pool for allocations. 546251881Speter * 547251881Speter * @see #svn_ra_get_latest_revnum for a description. 548251881Speter */ 549251881Spetersvn_error_t * 550251881Spetersvn_ra_svn__write_cmd_get_latest_rev(svn_ra_svn_conn_t *conn, 551251881Speter apr_pool_t *pool); 552251881Speter 553251881Speter/** Send a "get-dated-rev" command over connection @a conn. 554251881Speter * Use @a pool for allocations. 555251881Speter * 556251881Speter * @see #svn_ra_get_dated_revision for a description. 557251881Speter */ 558251881Spetersvn_error_t * 559251881Spetersvn_ra_svn__write_cmd_get_dated_rev(svn_ra_svn_conn_t *conn, 560251881Speter apr_pool_t *pool, 561251881Speter apr_time_t tm); 562251881Speter 563251881Speter/** Send a "change-rev-prop2" command over connection @a conn. 564251881Speter * Use @a pool for allocations. 565251881Speter * 566251881Speter * @see #svn_ra_change_rev_prop2 for a description. 567251881Speter */ 568251881Spetersvn_error_t * 569251881Spetersvn_ra_svn__write_cmd_change_rev_prop2(svn_ra_svn_conn_t *conn, 570251881Speter apr_pool_t *pool, 571251881Speter svn_revnum_t rev, 572251881Speter const char *name, 573251881Speter const svn_string_t *value, 574251881Speter svn_boolean_t dont_care, 575251881Speter const svn_string_t *old_value); 576251881Speter 577251881Speter/** Send a "change-rev-prop" command over connection @a conn. 578251881Speter * Use @a pool for allocations. 579251881Speter * 580251881Speter * @see #svn_ra_change_rev_prop for a description. 581251881Speter */ 582251881Spetersvn_error_t * 583251881Spetersvn_ra_svn__write_cmd_change_rev_prop(svn_ra_svn_conn_t *conn, 584251881Speter apr_pool_t *pool, 585251881Speter svn_revnum_t rev, 586251881Speter const char *name, 587251881Speter const svn_string_t *value); 588251881Speter 589251881Speter/** Send a "rev-proplist" command over connection @a conn. 590251881Speter * Use @a pool for allocations. 591251881Speter * 592251881Speter * @see #svn_ra_rev_proplist for a description. 593251881Speter */ 594251881Spetersvn_error_t * 595251881Spetersvn_ra_svn__write_cmd_rev_proplist(svn_ra_svn_conn_t *conn, 596251881Speter apr_pool_t *pool, 597251881Speter svn_revnum_t rev); 598251881Speter 599251881Speter/** Send a "rev-prop" command over connection @a conn. 600251881Speter * Use @a pool for allocations. 601251881Speter * 602251881Speter * @see #svn_ra_rev_prop for a description. 603251881Speter */ 604251881Spetersvn_error_t * 605251881Spetersvn_ra_svn__write_cmd_rev_prop(svn_ra_svn_conn_t *conn, 606251881Speter apr_pool_t *pool, 607251881Speter svn_revnum_t rev, 608251881Speter const char *name); 609251881Speter 610251881Speter/** Send a "get-file" command over connection @a conn. 611251881Speter * Use @a pool for allocations. 612251881Speter * 613251881Speter * @see #svn_ra_get_file for a description. 614251881Speter */ 615251881Spetersvn_error_t * 616251881Spetersvn_ra_svn__write_cmd_get_file(svn_ra_svn_conn_t *conn, 617251881Speter apr_pool_t *pool, 618251881Speter const char *path, 619251881Speter svn_revnum_t rev, 620251881Speter svn_boolean_t props, 621251881Speter svn_boolean_t stream); 622251881Speter 623251881Speter/** Send a "update" command over connection @a conn. 624251881Speter * Use @a pool for allocations. 625251881Speter * 626251881Speter * @see #svn_ra_do_update3 for a description. 627251881Speter */ 628251881Spetersvn_error_t * 629251881Spetersvn_ra_svn__write_cmd_update(svn_ra_svn_conn_t *conn, 630251881Speter apr_pool_t *pool, 631251881Speter svn_revnum_t rev, 632251881Speter const char *target, 633251881Speter svn_boolean_t recurse, 634251881Speter svn_depth_t depth, 635251881Speter svn_boolean_t send_copyfrom_args, 636251881Speter svn_boolean_t ignore_ancestry); 637251881Speter 638251881Speter/** Send a "switch" command over connection @a conn. 639251881Speter * Use @a pool for allocations. 640251881Speter * 641251881Speter * @see #svn_ra_do_switch3 for a description. 642251881Speter */ 643251881Spetersvn_error_t * 644251881Spetersvn_ra_svn__write_cmd_switch(svn_ra_svn_conn_t *conn, 645251881Speter apr_pool_t *pool, 646251881Speter svn_revnum_t rev, 647251881Speter const char *target, 648251881Speter svn_boolean_t recurse, 649251881Speter const char *switch_url, 650251881Speter svn_depth_t depth, 651251881Speter svn_boolean_t send_copyfrom_args, 652251881Speter svn_boolean_t ignore_ancestry); 653251881Speter 654251881Speter/** Send a "status" command over connection @a conn. 655251881Speter * Use @a pool for allocations. 656251881Speter * 657251881Speter * @see #svn_ra_do_status2 for a description. 658251881Speter */ 659251881Spetersvn_error_t * 660251881Spetersvn_ra_svn__write_cmd_status(svn_ra_svn_conn_t *conn, 661251881Speter apr_pool_t *pool, 662251881Speter const char *target, 663251881Speter svn_boolean_t recurse, 664251881Speter svn_revnum_t rev, 665251881Speter svn_depth_t depth); 666251881Speter 667251881Speter/** Send a "diff" command over connection @a conn. 668251881Speter * Use @a pool for allocations. 669251881Speter * 670251881Speter * @see #svn_ra_do_diff3 for a description. 671251881Speter */ 672251881Spetersvn_error_t * 673251881Spetersvn_ra_svn__write_cmd_diff(svn_ra_svn_conn_t *conn, 674251881Speter apr_pool_t *pool, 675251881Speter svn_revnum_t rev, 676251881Speter const char *target, 677251881Speter svn_boolean_t recurse, 678251881Speter svn_boolean_t ignore_ancestry, 679251881Speter const char *versus_url, 680251881Speter svn_boolean_t text_deltas, 681251881Speter svn_depth_t depth); 682251881Speter 683251881Speter/** Send a "check-path" command over connection @a conn. 684251881Speter * Use @a pool for allocations. 685251881Speter * 686251881Speter * @see #svn_ra_check_path for a description. 687251881Speter */ 688251881Spetersvn_error_t * 689251881Spetersvn_ra_svn__write_cmd_check_path(svn_ra_svn_conn_t *conn, 690251881Speter apr_pool_t *pool, 691251881Speter const char *path, 692251881Speter svn_revnum_t rev); 693251881Speter 694251881Speter/** Send a "stat" command over connection @a conn. 695251881Speter * Use @a pool for allocations. 696251881Speter * 697251881Speter * @see #svn_ra_stat for a description. 698251881Speter */ 699251881Spetersvn_error_t * 700251881Spetersvn_ra_svn__write_cmd_stat(svn_ra_svn_conn_t *conn, 701251881Speter apr_pool_t *pool, 702251881Speter const char *path, 703251881Speter svn_revnum_t rev); 704251881Speter 705251881Speter/** Send a "get-file-revs" command over connection @a conn. 706251881Speter * Use @a pool for allocations. 707251881Speter * 708251881Speter * @see #svn_ra_get_file_revs2 for a description. 709251881Speter */ 710251881Spetersvn_error_t * 711251881Spetersvn_ra_svn__write_cmd_get_file_revs(svn_ra_svn_conn_t *conn, 712251881Speter apr_pool_t *pool, 713251881Speter const char *path, 714251881Speter svn_revnum_t start, 715251881Speter svn_revnum_t end, 716251881Speter svn_boolean_t include_merged_revisions); 717251881Speter 718251881Speter/** Send a "lock" command over connection @a conn. 719251881Speter * Use @a pool for allocations. 720251881Speter * 721251881Speter * @see #svn_ra_lock for a description. 722251881Speter */ 723251881Spetersvn_error_t * 724251881Spetersvn_ra_svn__write_cmd_lock(svn_ra_svn_conn_t *conn, 725251881Speter apr_pool_t *pool, 726251881Speter const char *path, 727251881Speter const char *comment, 728251881Speter svn_boolean_t steal_lock, 729251881Speter svn_revnum_t revnum); 730251881Speter 731251881Speter/** Send a "unlock" command over connection @a conn. 732251881Speter * Use @a pool for allocations. 733251881Speter * 734251881Speter * @see #svn_ra_unlock for a description. 735251881Speter */ 736251881Spetersvn_error_t * 737251881Spetersvn_ra_svn__write_cmd_unlock(svn_ra_svn_conn_t *conn, 738251881Speter apr_pool_t *pool, 739251881Speter const char *path, 740251881Speter const char *token, 741251881Speter svn_boolean_t break_lock); 742251881Speter 743251881Speter/** Send a "get-lock" command over connection @a conn. 744251881Speter * Use @a pool for allocations. 745251881Speter * 746251881Speter * @see #svn_ra_get_lock for a description. 747251881Speter */ 748251881Spetersvn_error_t * 749251881Spetersvn_ra_svn__write_cmd_get_lock(svn_ra_svn_conn_t *conn, 750251881Speter apr_pool_t *pool, 751251881Speter const char *path); 752251881Speter 753251881Speter/** Send a "get-locks" command over connection @a conn. 754251881Speter * Use @a pool for allocations. 755251881Speter * 756251881Speter * @see #svn_ra_get_locks2 for a description. 757251881Speter */ 758251881Spetersvn_error_t * 759251881Spetersvn_ra_svn__write_cmd_get_locks(svn_ra_svn_conn_t *conn, 760251881Speter apr_pool_t *pool, 761251881Speter const char *path, 762251881Speter svn_depth_t depth); 763251881Speter 764251881Speter/** Send a "replay" command over connection @a conn. 765251881Speter * Use @a pool for allocations. 766251881Speter * 767251881Speter * @see #svn_ra_replay for a description. 768251881Speter */ 769251881Spetersvn_error_t * 770251881Spetersvn_ra_svn__write_cmd_replay(svn_ra_svn_conn_t *conn, 771251881Speter apr_pool_t *pool, 772251881Speter svn_revnum_t rev, 773251881Speter svn_revnum_t low_water_mark, 774251881Speter svn_boolean_t send_deltas); 775251881Speter 776251881Speter/** Send a "replay-range" command over connection @a conn. 777251881Speter * Use @a pool for allocations. 778251881Speter * 779251881Speter * @see #svn_ra_replay_range for a description. 780251881Speter */ 781251881Spetersvn_error_t * 782251881Spetersvn_ra_svn__write_cmd_replay_range(svn_ra_svn_conn_t *conn, 783251881Speter apr_pool_t *pool, 784251881Speter svn_revnum_t start_revision, 785251881Speter svn_revnum_t end_revision, 786251881Speter svn_revnum_t low_water_mark, 787251881Speter svn_boolean_t send_deltas); 788251881Speter 789251881Speter/** Send a "get-deleted-rev" command over connection @a conn. 790251881Speter * Use @a pool for allocations. 791251881Speter * 792251881Speter * @see #svn_ra_get_deleted_rev for a description. 793251881Speter */ 794251881Spetersvn_error_t * 795251881Spetersvn_ra_svn__write_cmd_get_deleted_rev(svn_ra_svn_conn_t *conn, 796251881Speter apr_pool_t *pool, 797251881Speter const char *path, 798251881Speter svn_revnum_t peg_revision, 799251881Speter svn_revnum_t end_revision); 800251881Speter 801251881Speter/** Send a "get-iprops" command over connection @a conn. 802251881Speter * Use @a pool for allocations. 803251881Speter * 804251881Speter * @see #svn_ra_get_inherited_props for a description. 805251881Speter */ 806251881Spetersvn_error_t * 807251881Spetersvn_ra_svn__write_cmd_get_iprops(svn_ra_svn_conn_t *conn, 808251881Speter apr_pool_t *pool, 809251881Speter const char *path, 810251881Speter svn_revnum_t revision); 811251881Speter 812251881Speter/** Send a "finish-replay" command over connection @a conn. 813251881Speter * Use @a pool for allocations. 814251881Speter */ 815251881Spetersvn_error_t * 816251881Spetersvn_ra_svn__write_cmd_finish_replay(svn_ra_svn_conn_t *conn, 817251881Speter apr_pool_t *pool); 818251881Speter 819251881Speter/** 820251881Speter * @} 821251881Speter */ 822251881Speter#ifdef __cplusplus 823251881Speter} 824251881Speter#endif /* __cplusplus */ 825251881Speter 826251881Speter#endif /* SVN_RA_SVN_PRIVATE_H */ 827