Merge remote branch 'origin/carstenbock/dialog2'
[sip-router] / mi / mi_types.h
1 /*
2  * $Id$
3  *
4  * Copyright (C) 2008 iptelorg GmbH
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 /*
19  * mi compatibility wrapper for kamailio
20  * It contains only the type definition, needed for loading kamilio modules
21  * (used by sr_module.c).
22  * Note that MI usage in new modules is opsolete. They should implement RPCs
23  * instead. To use MI include lib/kmi/mi.h and link with lib kmi.
24  *
25  * History:
26  * --------
27  *  2008-11-17  initial version compatible with kamailio mi/mi.h (andrei)
28  *  2010-08-18  remove everything but the  data types definition (andrei)
29  */
30
31 #ifndef _mi_h_
32 #define _mi_h_
33
34 #include "../str.h"
35
36 struct mi_node {
37         str value;
38         str name;
39         struct mi_node *kids;
40         struct mi_node *next;
41         struct mi_node *last;
42         struct mi_attr *attributes;
43 };
44
45
46 struct mi_handler;
47
48 struct mi_root {
49         unsigned int       code;
50         str                reason;
51         struct mi_handler  *async_hdl;
52         struct mi_node     node;
53 };
54
55 typedef struct mi_root* (mi_cmd_f)(struct mi_root*, void *param);
56 typedef int (mi_child_init_f)(void);
57 typedef void (mi_handler_f)(struct mi_root *, struct mi_handler *, int);
58
59 /* FIXME
60 struct mi_handler {
61         mi_handler_f *handler_f;
62         void * param;
63 };
64 */
65
66
67 struct mi_export_ {
68         char *name;
69         mi_cmd_f *cmd;
70         unsigned int flags;
71         void *param;
72         mi_child_init_f *init_f;
73 };
74
75 typedef struct mi_export_ mi_export_t;
76
77
78 #endif /* _mi_h_ */
79
80