mi/mi_types.h
627a1969
 /*
  * $Id$
  *
  * Copyright (C) 2008 iptelorg GmbH
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies.
  *
  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 /*
  * mi compatibility wrapper for kamailio
  * It contains only the type definition, needed for loading kamilio modules
  * (used by sr_module.c).
  * Note that MI usage in new modules is opsolete. They should implement RPCs
  * instead. To use MI include lib/kmi/mi.h and link with lib kmi.
  *
  * History:
  * --------
  *  2008-11-17  initial version compatible with kamailio mi/mi.h (andrei)
  *  2010-08-18  remove everything but the  data types definition (andrei)
  */
 
 #ifndef _mi_h_
 #define _mi_h_
 
 #include "../str.h"
 
 struct mi_node {
 	str value;
 	str name;
 	struct mi_node *kids;
 	struct mi_node *next;
 	struct mi_node *last;
 	struct mi_attr *attributes;
 };
 
 
 struct mi_handler;
 
 struct mi_root {
 	unsigned int       code;
 	str                reason;
 	struct mi_handler  *async_hdl;
 	struct mi_node     node;
 };
 
 typedef struct mi_root* (mi_cmd_f)(struct mi_root*, void *param);
 typedef int (mi_child_init_f)(void);
 typedef void (mi_handler_f)(struct mi_root *, struct mi_handler *, int);
 
 /* FIXME
 struct mi_handler {
 	mi_handler_f *handler_f;
 	void * param;
 };
 */
 
 
 struct mi_export_ {
 	char *name;
 	mi_cmd_f *cmd;
 	unsigned int flags;
 	void *param;
 	mi_child_init_f *init_f;
 };
 
 typedef struct mi_export_ mi_export_t;
 
 
 #endif /* _mi_h_ */