summaryrefslogtreecommitdiffstats
path: root/proxy/src/gp_workers.c
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-01-19 15:15:57 -0500
committerSimo Sorce <simo@redhat.com>2012-01-19 15:18:39 -0500
commitcb1ab5633b112e083fa252712f8fc667373a93af (patch)
tree8ae368bfc8004b00605dd36d21824457aa7c04c0 /proxy/src/gp_workers.c
parent6ca28bbf8523713e34ed2a7378e21f23cf64e298 (diff)
downloadgss-proxy-cb1ab5633b112e083fa252712f8fc667373a93af.tar.gz
gss-proxy-cb1ab5633b112e083fa252712f8fc667373a93af.tar.xz
gss-proxy-cb1ab5633b112e083fa252712f8fc667373a93af.zip
Refactor workers init so we can pass down gpctx
Diffstat (limited to 'proxy/src/gp_workers.c')
-rw-r--r--proxy/src/gp_workers.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/proxy/src/gp_workers.c b/proxy/src/gp_workers.c
index 3dcefac..3d5467b 100644
--- a/proxy/src/gp_workers.c
+++ b/proxy/src/gp_workers.c
@@ -63,6 +63,7 @@ struct gp_thread {
struct gp_workers {
pthread_mutex_t lock;
+ struct gssproxy_ctx *gpctx;
bool shutdown;
struct gp_query *wait_list;
struct gp_query *reply_list;
@@ -78,7 +79,7 @@ static void gp_handle_reply(verto_ctx *vctx, verto_ev *ev);
/** DISPATCHER FUNCTIONS **/
-struct gp_workers *gp_workers_init(verto_ctx *vctx, struct gp_config *cfg)
+int gp_workers_init(struct gssproxy_ctx *gpctx)
{
struct gp_workers *w;
struct gp_thread *t;
@@ -90,18 +91,19 @@ struct gp_workers *gp_workers_init(verto_ctx *vctx, struct gp_config *cfg)
w = calloc(1, sizeof(struct gp_workers));
if (!w) {
- return NULL;
+ return ENOMEM;
}
+ w->gpctx = gpctx;
/* init global queue mutex */
ret = pthread_mutex_init(&w->lock, NULL);
if (ret) {
free(w);
- return NULL;
+ return ENOMEM;
}
- if (cfg->num_workers > 0) {
- w->num_threads = cfg->num_workers;
+ if (gpctx->config->num_workers > 0) {
+ w->num_threads = gpctx->config->num_workers;
} else {
w->num_threads = DEFAULT_WORKER_THREADS_NUM;
}
@@ -141,20 +143,21 @@ struct gp_workers *gp_workers_init(verto_ctx *vctx, struct gp_config *cfg)
}
vflags = VERTO_EV_FLAG_PERSIST | VERTO_EV_FLAG_IO_READ;
- ev = verto_add_io(vctx, vflags, gp_handle_reply, w->sig_pipe[0]);
+ ev = verto_add_io(gpctx->vctx, vflags, gp_handle_reply, w->sig_pipe[0]);
if (!ev) {
ret = -1;
goto done;
}
verto_set_private(ev, w, NULL);
+ gpctx->workers = w;
ret = 0;
done:
if (ret) {
gp_workers_free(w);
}
- return w;
+ return ret;
}
void gp_workers_free(struct gp_workers *w)