refactored PA-TNC message handling by IMVs
[strongswan.git] / src / libfast / session.h
1 /*
2 * Copyright (C) 2007 Martin Willi
3 * 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 session session
18 * @{ @ingroup libfast
19 */
20
21 #ifndef SESSION_H_
22 #define SESSION_H_
23
24 #include "request.h"
25 #include "controller.h"
26 #include "filter.h"
27
28 typedef struct session_t session_t;
29
30 /**
31 * Session handling class, instanciated for each user session.
32 */
33 struct session_t {
34
35 /**
36 * Get the session ID of the session.
37 *
38 * @return session ID
39 */
40 char* (*get_sid)(session_t *this);
41
42 /**
43 * Add a controller instance to the session.
44 *
45 * @param controller controller to add
46 */
47 void (*add_controller)(session_t *this, controller_t *controller);
48
49 /**
50 * Add a filter instance to the session.
51 *
52 * @param filter filter to add
53 */
54 void (*add_filter)(session_t *this, filter_t *filter);
55
56 /**
57 * Process a request in this session.
58 *
59 * @param request request to process
60 */
61 void (*process)(session_t *this, request_t *request);
62
63 /**
64 * Destroy the session_t.
65 */
66 void (*destroy) (session_t *this);
67 };
68
69 /**
70 * Create a session new session.
71 *
72 * @param context user defined session context instance
73 * @return client session, NULL on error
74 */
75 session_t *session_create(context_t *context);
76
77 #endif /** SESSION_H_ @}*/