Pārlūkot izejas kodu

modules/ims_dialog: support for dlg_vars in ims_dialog. taken from orig. dialog module

jaybeepee 9 gadi atpakaļ
vecāks
revīzija
4503914030
2 mainītis faili ar 45 papildinājumiem un 1 dzēšanām
  1. 2 0
      modules/ims_dialog/dlg_ng_stats.h
  2. 43 1
      modules/ims_dialog/ims_dialog.c

+ 2 - 0
modules/ims_dialog/dlg_ng_stats.h

@@ -11,6 +11,8 @@ struct dialog_ng_counters_h {
 
 };
 
+struct dialog_ng_counters_h dialog_ng_cnts_h;
+
 int dialog_ng_stats_init();
 void dialog_ng_stats_destroy();
 

+ 43 - 1
modules/ims_dialog/ims_dialog.c

@@ -87,6 +87,8 @@ static int w_dlg_setflag(struct sip_msg *msg, char *flag, char *s2);
 static int w_dlg_terminate(struct sip_msg*, char*, char*);
 static int w_dlg_get(struct sip_msg*, char*, char*, char*);
 static int w_is_known_dlg(struct sip_msg *);
+static int pv_get_dlg_count( struct sip_msg *msg, pv_param_t *param,
+		pv_value_t *res);
 
 static cmd_export_t cmds[] = {
     {"set_dlg_profile", (cmd_function) w_set_dlg_profile, 1, fixup_profile,
@@ -155,6 +157,22 @@ static mi_export_t mi_cmds[] = {
 
 static rpc_export_t rpc_methods[];
 
+static pv_export_t mod_items[] = {
+	{ {"DLG_count",  sizeof("DLG_count")-1}, PVT_OTHER,  pv_get_dlg_count,    0,
+		0, 0, 0, 0 },
+	{ {"DLG_lifetime",sizeof("DLG_lifetime")-1}, PVT_OTHER, pv_get_dlg_lifetime, 0,
+		0, 0, 0, 0 },
+	{ {"DLG_status",  sizeof("DLG_status")-1}, PVT_OTHER, pv_get_dlg_status, 0,
+		0, 0, 0, 0 },
+	{ {"dlg_ctx",  sizeof("dlg_ctx")-1}, PVT_OTHER, pv_get_dlg_ctx,
+		pv_set_dlg_ctx, pv_parse_dlg_ctx_name, 0, 0, 0 },
+	{ {"dlg",  sizeof("dlg")-1}, PVT_OTHER, pv_get_dlg,
+		0, pv_parse_dlg_name, 0, 0, 0 },
+	{ {"dlg_var", sizeof("dlg_var")-1}, PVT_OTHER, pv_get_dlg_variable,
+		pv_set_dlg_variable,    pv_parse_dialog_var_name, 0, 0, 0},
+	{ {0, 0}, 0, 0, 0, 0, 0, 0, 0 }
+};
+
 struct module_exports exports = {
     "ims_dialog", /* module's name */
     DEFAULT_DLFLAGS, /* dlopen flags */
@@ -162,7 +180,7 @@ struct module_exports exports = {
     mod_params, /* param exports */
     0, /* exported statistics */
     mi_cmds, /* exported MI functions */
-    0, /* exported pseudo-variables */
+    mod_items, /* exported pseudo-variables */
     0, /* extra processes */
     mod_init, /* module initialization function */
     0, /* reply processing function */
@@ -346,6 +364,30 @@ int load_dlg(struct dlg_binds *dlgb) {
     return 1;
 }
 
+static int pv_get_dlg_count(struct sip_msg *msg, pv_param_t *param,
+		pv_value_t *res)
+{
+	int n;
+	int l;
+	char *ch;
+
+	if(msg==NULL || res==NULL)
+		return -1;
+
+	n = counter_get_val(dialog_ng_cnts_h.active);
+	l = 0;
+	ch = int2str( n, &l);
+
+	res->rs.s = ch;
+	res->rs.len = l;
+
+	res->ri = n;
+	res->flags = PV_VAL_STR|PV_VAL_INT|PV_TYPE_INT;
+
+	return 0;
+}
+
+
 static int mod_init(void) {
     unsigned int n;