diff options
| author | Amar Tumballi <amarts@redhat.com> | 2012-07-11 21:59:20 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-07-11 19:04:27 -0700 | 
| commit | 22aa93129319a667b004111a4385520a4ba30060 (patch) | |
| tree | 356b92d47068f5530d3e30053bd334f91fb181ca /rpc/rpc-lib/src | |
| parent | ea08bf886732d9680f2d6de19f3d68908a55143b (diff) | |
rpc: add extra arguments to _callback's actor function
Need to differentiate the callback functions based on which
rpc-clnt the callback is received. without it, all callback
actor handling will be like global.
BUG: 839345
Change-Id: Ide024f5585eab3c5fe6c3b33250772fb6e8ad655
Signed-off-by: Amar Tumballi <amarts@redhat.com>
Reviewed-on: http://review.gluster.com/3656
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'rpc/rpc-lib/src')
| -rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.c | 7 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-clnt.h | 7 | 
2 files changed, 10 insertions, 4 deletions
diff --git a/rpc/rpc-lib/src/rpc-clnt.c b/rpc/rpc-lib/src/rpc-clnt.c index ae746251177..5bd8480bdcb 100644 --- a/rpc/rpc-lib/src/rpc-clnt.c +++ b/rpc/rpc-lib/src/rpc-clnt.c @@ -737,7 +737,8 @@ rpc_clnt_handle_cbk (struct rpc_clnt *clnt, rpc_transport_pollin_t *msg)          if (found && (procnum < program->numactors) &&              (program->actors[procnum].actor)) { -                program->actors[procnum].actor (&progmsg); +                program->actors[procnum].actor (clnt, program->mydata, +                                                &progmsg);          }  out: @@ -1321,7 +1322,7 @@ out:  int  rpcclnt_cbk_program_register (struct rpc_clnt *clnt, -                              rpcclnt_cb_program_t *program) +                              rpcclnt_cb_program_t *program, void *mydata)  {          int                   ret                = -1;          char                  already_registered = 0; @@ -1361,6 +1362,8 @@ rpcclnt_cbk_program_register (struct rpc_clnt *clnt,          memcpy (tmp, program, sizeof (*tmp));          INIT_LIST_HEAD (&tmp->program); +        tmp->mydata = mydata; +          pthread_mutex_lock (&clnt->lock);          {                  list_add_tail (&tmp->program, &clnt->programs); diff --git a/rpc/rpc-lib/src/rpc-clnt.h b/rpc/rpc-lib/src/rpc-clnt.h index e7335e38839..f07ad8d3687 100644 --- a/rpc/rpc-lib/src/rpc-clnt.h +++ b/rpc/rpc-lib/src/rpc-clnt.h @@ -78,7 +78,7 @@ typedef struct rpc_clnt_program {          int                   numproc;  } rpc_clnt_prog_t; -typedef int (*rpcclnt_cb_fn) (void *data); +typedef int (*rpcclnt_cb_fn) (struct rpc_clnt *rpc, void *mydata, void *data);  /* The descriptor for each procedure/actor that runs   * over the RPC service. @@ -106,6 +106,9 @@ typedef struct rpcclnt_cb_program {          /* list member to link to list of registered services with rpc_clnt */          struct list_head        program; + +        /* Needed for passing back in cb_actor */ +        void                   *mydata;  } rpcclnt_cb_program_t; @@ -232,7 +235,7 @@ void rpc_clnt_reconfig (struct rpc_clnt *rpc, struct rpc_clnt_config *config);   * procedure handlers.   */  int rpcclnt_cbk_program_register (struct rpc_clnt *svc, -                                  rpcclnt_cb_program_t *program); +                                  rpcclnt_cb_program_t *program, void *mydata);  int  rpc_clnt_transport_unix_options_build (dict_t **options, char *filepath);  | 
