]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
rx: add post RPC procedure capability
authorMarc Dionne <marc.c.dionne@gmail.com>
Thu, 29 Sep 2011 01:15:32 +0000 (21:15 -0400)
committerDerrick Brashear <shadow@dementix.org>
Fri, 7 Oct 2011 12:39:10 +0000 (05:39 -0700)
Add the ability to specify a procedure that will be called after
the end of each RPC for a service.  This is similar to the
existing afterProc, except that it gets called after the RPC
has ended (after EndCall).

rx_SetPostProc and rx_GetPostProc are provided to set and retrieve
a postProc for a specified service.

Reviewed-on: http://gerrit.openafs.org/5529
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
(cherry picked from commit 5587bbfc0bc70de234e5655faf7676cf2b9b9715)

Change-Id: I1f0a5007b0cf0723ef3ade6a14e72aece2d3cb0f
Reviewed-on: http://gerrit.openafs.org/5543
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>
src/rx/rx.c
src/rx/rx.h

index 33ed31964b1f7213792c011f6584ff38ec3f4aba..7e5e1172edeb86b9d568bc1c5c3bb6d532964b6c 100644 (file)
@@ -1878,6 +1878,10 @@ rxi_ServerProc(int threadID, struct rx_call *newcall, osi_socket * socketp)
            (*tservice->afterProc) (call, code);
 
        rx_EndCall(call, code);
+
+       if (tservice->postProc)
+           (*tservice->postProc) (code);
+
         if (rx_stats_active) {
             MUTEX_ENTER(&rx_stats_mutex);
             rxi_nCalls++;
index 788e353dada54ec6b054ca82a89a963448fd67b6..ba692a7bccb0f1ca021cc7703d30da19e519ba34 100644 (file)
@@ -158,6 +158,8 @@ rx_IsLoopbackAddr(afs_uint32 addr)
 #define rx_SetBeforeProc(service,proc) ((service)->beforeProc = (proc))
 #define rx_GetAfterProc(service) ((service)->afterProc)
 #define rx_GetBeforeProc(service) ((service)->beforeProc)
+#define rx_SetPostProc(service,proc) ((service)->postProc = (proc))
+#define rx_GetPostProc(service) ((service)->postProc)
 
 /* Define a procedure to be called when a server connection is created */
 #define rx_SetNewConnProc(service, proc) ((service)->newConnProc = (proc))
@@ -321,6 +323,7 @@ struct rx_service {
     void (*newConnProc) (struct rx_connection * tcon); /* Routine to call when a server connection is created */
     void (*beforeProc) (struct rx_call * acall);       /* routine to call before a call is executed */
     void (*afterProc) (struct rx_call * acall, afs_int32 code);        /* routine to call after a call is executed */
+    void (*postProc) (afs_int32 code); /* routine to call after the call has ended */
     u_short maxProcs;          /* Maximum procs to be used for this service */
     u_short minProcs;          /* Minimum # of requests guaranteed executable simultaneously */
     u_short connDeadTime;      /* Seconds until a client of this service will be declared dead, if it is not responding */