You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2014/02/03 12:19:35 UTC
svn commit: r1563836 - in /subversion/trunk/subversion:
bindings/javahl/native/OperationContext.cpp
bindings/javahl/native/OperationContext.h include/svn_ra.h
libsvn_ra_svn/client.c tests/libsvn_ra/ra-test.c
Author: rhuijben
Date: Mon Feb 3 11:19:35 2014
New Revision: 1563836
URL: http://svn.apache.org/r1563836
Log:
Extend the ra_svn tunnel setup api with a cancel function to allow
implementations to provide (GUI) clients with timely cancellation on
timeouts. These clients can't depend on the signal handling breaking
blocking IO operations.
* subversion/bindings/javahl/native/OperationContext.cpp
* subversion/bindings/javahl/native/OperationContext.h
(OperationContext::openTunnel): Add cancel callback and baton arguments.
* subversion/include/svn_ra.h
(svn_ra_open_tunnel_func_t): Add cancel callback and baton arguments.
* subversion/libsvn_ra_svn/client.c
(open_session): Update caller.
[Reviewers: Yes, all the common callbacks share a baton value here.]
* subversion/tests/libsvn_ra/ra-test.c
(open_tunnel): Add cancel callback and baton arguments.
Modified:
subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp
subversion/trunk/subversion/bindings/javahl/native/OperationContext.h
subversion/trunk/subversion/include/svn_ra.h
subversion/trunk/subversion/libsvn_ra_svn/client.c
subversion/trunk/subversion/tests/libsvn_ra/ra-test.c
Modified: subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp?rev=1563836&r1=1563835&r2=1563836&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp Mon Feb 3 11:19:35 2014
@@ -580,6 +580,7 @@ OperationContext::openTunnel(svn_stream_
void *tunnel_baton,
const char *tunnel_name, const char *user,
const char *hostname, int port,
+ svn_cancel_func_t cancel_func, void *cancel_baton,
apr_pool_t *pool)
{
TunnelContext *tc = new TunnelContext(pool);
Modified: subversion/trunk/subversion/bindings/javahl/native/OperationContext.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/OperationContext.h?rev=1563836&r1=1563835&r2=1563836&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/OperationContext.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/OperationContext.h Mon Feb 3 11:19:35 2014
@@ -74,6 +74,7 @@ class OperationContext
void *tunnel_baton,
const char *tunnel_name, const char *user,
const char *hostname, int port,
+ svn_cancel_func_t cancel_func, void *cancel_baton,
apr_pool_t *pool);
static void closeTunnel(
Modified: subversion/trunk/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_ra.h?rev=1563836&r1=1563835&r2=1563836&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_ra.h (original)
+++ subversion/trunk/subversion/include/svn_ra.h Mon Feb 3 11:19:35 2014
@@ -312,6 +312,9 @@ typedef void (*svn_ra_close_tunnel_func_
* If @a *close_func is set it will be called with @a close_baton when
* the tunnel is closed.
*
+ * The optional @a cancel_func callback can be invoked as usual to allow
+ * the user to preempt potentially lengthy operations.
+ *
* @a tunnel_baton is the baton as set in the callbacks.
*
* @since New in 1.9.
@@ -322,6 +325,7 @@ typedef svn_error_t *(*svn_ra_open_tunne
void *tunnel_baton,
const char *tunnel_name, const char *user,
const char *hostname, int port,
+ svn_cancel_func_t cancel_func, void *cancel_baton,
apr_pool_t *pool);
Modified: subversion/trunk/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/client.c?rev=1563836&r1=1563835&r2=1563836&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/client.c Mon Feb 3 11:19:35 2014
@@ -652,6 +652,7 @@ static svn_error_t *open_session(svn_ra_
&td->close_tunnel, &td->tunnel_context,
callbacks->tunnel_baton, tunnel_name,
uri->user, uri->hostname, uri->port,
+ callbacks->cancel_func, callbacks_baton,
pool));
apr_pool_cleanup_register(pool, td, close_tunnel_cleanup,
Modified: subversion/trunk/subversion/tests/libsvn_ra/ra-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_ra/ra-test.c?rev=1563836&r1=1563835&r2=1563836&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_ra/ra-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_ra/ra-test.c Mon Feb 3 11:19:35 2014
@@ -117,6 +117,7 @@ open_tunnel(svn_stream_t **request, svn_
void *tunnel_baton,
const char *tunnel_name, const char *user,
const char *hostname, int port,
+ svn_cancel_func_t cancel_func, void *cancel_baton,
apr_pool_t *pool)
{
svn_node_kind_t kind;