Annotation of embedaddon/strongswan/src/libfast/fast_controller.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2007 Martin Willi
3: * HSR Hochschule fuer Technik Rapperswil
4: *
5: * This program is free software; you can redistribute it and/or modify it
6: * under the terms of the GNU General Public License as published by the
7: * Free Software Foundation; either version 2 of the License, or (at your
8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13: * for more details.
14: */
15:
16: /**
17: * @defgroup fast_controller fast_controller
18: * @{ @ingroup libfast
19: */
20:
21: #ifndef FAST_CONTROLLER_H_
22: #define FAST_CONTROLLER_H_
23:
24: #include "fast_request.h"
25: #include "fast_context.h"
26:
27: typedef struct fast_controller_t fast_controller_t;
28:
29: /**
30: * Constructor function for a controller.
31: *
32: * @param context session specific context, implements context_t
33: * @param param user supplied param, as registered to the dispatcher
34: */
35: typedef fast_controller_t *(*fast_controller_constructor_t)(
36: fast_context_t* context, void *param);
37:
38: /**
39: * Controller interface, to be implemented by users controllers.
40: *
41: * Controller instances get created per session, so each session has an
42: * associated set of private controller instances.
43: * The controller handle function is called for each incoming request.
44: */
45: struct fast_controller_t {
46:
47: /**
48: * Get the name of the controller.
49: *
50: * @return name of the controller
51: */
52: char* (*get_name)(fast_controller_t *this);
53:
54: /**
55: * Handle a HTTP request for that controller.
56: *
57: * Request URLs are parsed in the form
58: * controller_name/p1/p2/p3/p4/p5 with a maximum of 5 parameters. Each
59: * parameter not found in the request URL is set to NULL.
60: *
61: * @param request HTTP request
62: * @param p1 first parameter
63: * @param p2 second parameter
64: * @param p3 third parameter
65: * @param p4 forth parameter
66: * @param p5 fifth parameter
67: * @return
68: */
69: void (*handle)(fast_controller_t *this, fast_request_t *request,
70: char *p1, char *p2, char *p3, char *p4, char *p5);
71:
72: /**
73: * Destroy the controller instance.
74: */
75: void (*destroy) (fast_controller_t *this);
76: };
77:
78: #endif /** FAST_CONTROLLER_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>