From 60dfbfbc250c197357d84771bdc5aaaa812c573e Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 3 Jan 2010 15:58:34 -0500 Subject: Deadlines --- src/c/urweb.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/c/urweb.c') diff --git a/src/c/urweb.c b/src/c/urweb.c index a76497bb..27831011 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -338,6 +339,8 @@ void uw_app_init(uw_app *app) { app->client_init(); } +int uw_time = 0; + // Single-request state @@ -427,6 +430,8 @@ struct uw_context { char *current_url; + int deadline; + char error_message[ERROR_BUF_LEN]; }; @@ -484,6 +489,8 @@ uw_context uw_init() { ctx->current_url = ""; + ctx->deadline = INT_MAX; + return ctx; } @@ -3343,3 +3350,12 @@ uw_Basis_string uw_Basis_currentUrl(uw_context ctx) { void uw_set_currentUrl(uw_context ctx, char *s) { ctx->current_url = s; } + +void uw_set_deadline(uw_context ctx, int n) { + ctx->deadline = n; +} + +void uw_check_deadline(uw_context ctx) { + if (uw_time > ctx->deadline) + uw_error(ctx, FATAL, "Maximum running time exceeded"); +} -- cgit v1.2.3