aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/c/request.c
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2011-04-09 14:36:47 -0400
committerGravatar Adam Chlipala <adam@chlipala.net>2011-04-09 14:36:47 -0400
commit51b2033057b25f4cecd3d5e73dc49b60b532834e (patch)
tree129120a683d01c00c6deb50349c48d8975dfd573 /src/c/request.c
parent039b577f61a2bdf98abe10c5f10c8e3539a59d19 (diff)
Each context gets its own non-repeating sequence of source numbers
Diffstat (limited to 'src/c/request.c')
-rw-r--r--src/c/request.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/c/request.c b/src/c/request.c
index 2d0d0dc7..3fd12ff6 100644
--- a/src/c/request.c
+++ b/src/c/request.c
@@ -32,8 +32,8 @@ static int try_rollback(uw_context ctx, int will_retry, void *logger_data, uw_lo
return r;
}
-uw_context uw_request_new_context(uw_app *app, void *logger_data, uw_logger log_error, uw_logger log_debug) {
- uw_context ctx = uw_init(logger_data, log_debug);
+uw_context uw_request_new_context(int id, uw_app *app, void *logger_data, uw_logger log_error, uw_logger log_debug) {
+ uw_context ctx = uw_init(id, logger_data, log_debug);
int retries_left = MAX_RETRIES;
uw_set_app(ctx, app);
@@ -84,13 +84,14 @@ typedef struct {
} loggers;
typedef struct {
+ int id;
loggers *ls;
uw_periodic pdic;
} periodic;
static void *periodic_loop(void *data) {
periodic *p = (periodic *)data;
- uw_context ctx = uw_request_new_context(p->ls->app, p->ls->logger_data, p->ls->log_error, p->ls->log_debug);
+ uw_context ctx = uw_request_new_context(p->id, p->ls->app, p->ls->logger_data, p->ls->log_error, p->ls->log_debug);
if (!ctx)
exit(1);
@@ -127,6 +128,7 @@ void uw_request_init(uw_app *app, void *logger_data, uw_logger log_error, uw_log
failure_kind fk;
uw_periodic *ps;
loggers *ls = malloc(sizeof(loggers));
+ int id;
ls->app = app;
ls->logger_data = logger_data;
@@ -145,7 +147,7 @@ void uw_request_init(uw_app *app, void *logger_data, uw_logger log_error, uw_log
}
}
- ctx = uw_request_new_context(app, logger_data, log_error, log_debug);
+ ctx = uw_request_new_context(0, app, logger_data, log_error, log_debug);
if (!ctx)
exit(1);
@@ -164,9 +166,11 @@ void uw_request_init(uw_app *app, void *logger_data, uw_logger log_error, uw_log
uw_free(ctx);
+ id = 1;
for (ps = app->periodics; ps->callback; ++ps) {
pthread_t thread;
periodic *arg = malloc(sizeof(periodic));
+ arg->id = id++;
arg->ls = ls;
arg->pdic = *ps;
@@ -218,6 +222,7 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
char errmsg[ERROR_BUF_LEN];
uw_reset(ctx);
+
rc->queryString[0] = 0;
for (s = path; *s; ++s) {
@@ -546,7 +551,7 @@ request_result uw_request(uw_request_context rc, uw_context ctx,
void *client_pruner(void *data) {
loggers *ls = (loggers *)data;
- uw_context ctx = uw_request_new_context(ls->app, ls->logger_data, ls->log_error, ls->log_debug);
+ uw_context ctx = uw_request_new_context(0, ls->app, ls->logger_data, ls->log_error, ls->log_debug);
if (!ctx)
exit(1);