[sr-dev] git:mariusbucur/dmq: modified the htable so that a per-table basis dmq parameter can be added

Marius Ovidiu Bucur marius at marius-bucur.ro
Fri Jun 3 23:48:04 CEST 2011


Module: sip-router
Branch: mariusbucur/dmq
Commit: 7ff94993efc1d34bbd78498a27b9de84bc8f41b8
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7ff94993efc1d34bbd78498a27b9de84bc8f41b8

Author: Marius Bucur <marius at marius-bucur.ro>
Committer: Marius Bucur <marius at marius-bucur.ro>
Date:   Sat Jun  4 00:47:44 2011 +0300

modified the htable so that a per-table basis dmq parameter can be added

---

 modules_k/htable/ht_api.c |   15 ++++++++++++---
 modules_k/htable/ht_api.h |    3 ++-
 modules_k/htable/ht_var.c |    2 +-
 modules_k/htable/htable.c |   18 +++++++-----------
 4 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/modules_k/htable/ht_api.c b/modules_k/htable/ht_api.c
index fe9a66e..b221ea5 100644
--- a/modules_k/htable/ht_api.c
+++ b/modules_k/htable/ht_api.c
@@ -117,7 +117,7 @@ ht_t* ht_get_table(str *name)
 	return NULL;
 }
 
-int ht_pkg_init(str *name, int autoexp, str *dbtable, int size, int dbmode)
+int ht_pkg_init(str *name, int autoexp, str *dbtable, int size, int dbmode, int usedmq)
 {
 	unsigned int htid;
 	ht_t *ht;
@@ -156,7 +156,7 @@ int ht_pkg_init(str *name, int autoexp, str *dbtable, int size, int dbmode)
 	if(dbtable!=NULL && dbtable->len>0)
 		ht->dbtable = *dbtable;
 	ht->dbmode = dbmode;
-
+	ht->usedmq = usedmq;
 	ht->next = _ht_pkg_root;
 	_ht_pkg_root = ht;
 	return 0;
@@ -515,6 +515,7 @@ int ht_table_spec(char *spec)
 	str name;
 	str dbtable = {0, 0};
 	unsigned int autoexpire = 0;
+	unsigned int usedmq = 0;
 	unsigned int size = 4;
 	int type = 0;
 	unsigned int dbmode = 0;
@@ -574,6 +575,8 @@ next_token:
 		type = 3;
 	else if(tok.len==6 && strncmp(tok.s, "dbmode", 6)==0)
 		type = 4;
+	else if(tok.len==3 && strncmp(tok.s, "dmq", 3)==0)
+		type = 5;
 	else goto error;
 
 	if(*p!='=')
@@ -623,6 +626,12 @@ next_token:
 			LM_DBG("htable [%.*s] - dbmode [%u]\n", name.len, name.s,
 					dbmode);
 			break;
+		case 5:
+			if(str2int(&tok, &usedmq)!=0)
+				goto error;
+			LM_DBG("htable [%.*s] - usedmq [%u]\n", name.len, name.s,
+					usedmq);
+			break;
 	}
 	while(p<in.s+in.len && (*p==';' || *p==' ' || *p=='\t'
 				|| *p=='\n' || *p=='\r'))
@@ -630,7 +639,7 @@ next_token:
 	if(p<in.s+in.len)
 		goto next_token;
 
-	return ht_pkg_init(&name, autoexpire, &dbtable, size, dbmode);
+	return ht_pkg_init(&name, autoexpire, &dbtable, size, dbmode, usedmq);
 
 error:
 	LM_ERR("invalid htable parameter [%.*s] at [%d]\n", in.len, in.s,
diff --git a/modules_k/htable/ht_api.h b/modules_k/htable/ht_api.h
index 71c8e21..8dc7553 100644
--- a/modules_k/htable/ht_api.h
+++ b/modules_k/htable/ht_api.h
@@ -55,6 +55,7 @@ typedef struct _ht
 	unsigned int htexpire;
 	str dbtable;
 	int dbmode;
+	int usedmq;
 	unsigned int htsize;
 	ht_entry_t *entries;
 	struct _ht *next;
@@ -66,7 +67,7 @@ typedef struct _ht_pv {
 	pv_elem_t *pve;
 } ht_pv_t, *ht_pv_p;
 
-int ht_pkg_init(str *name, int autoexp, str *dbtable, int size, int dbmode);
+int ht_pkg_init(str *name, int autoexp, str *dbtable, int size, int dbmode, int usedmq);
 int ht_shm_init(void);
 int ht_destroy(void);
 int ht_set_cell(ht_t *ht, str *name, int type, int_str *val, int mode);
diff --git a/modules_k/htable/ht_var.c b/modules_k/htable/ht_var.c
index 921cca3..26e0747 100644
--- a/modules_k/htable/ht_var.c
+++ b/modules_k/htable/ht_var.c
@@ -109,7 +109,7 @@ int pv_set_ht_cell(struct sip_msg* msg, pv_param_t *param,
 		LM_ERR("cannot get $ht name\n");
 		return -1;
 	}
-	if(ht_use_dmq) {
+	if(hpv->ht->usedmq) {
 		serialized_ht.s = pkg_malloc(MAX_HT_SERIALIZE_BUF);
 		serialized_ht.len = MAX_HT_SERIALIZE_BUF;
 		if(serialize_ht_pair(&htname, val, &hpv->htname, &serialized_ht) < 0) {
diff --git a/modules_k/htable/htable.c b/modules_k/htable/htable.c
index 58a690c..62ca74d 100644
--- a/modules_k/htable/htable.c
+++ b/modules_k/htable/htable.c
@@ -101,7 +101,7 @@ error:
 	return -1;
 }
 
-static void add_dmq_peer() {
+static void ht_add_dmq_peer() {
 	dmq_peer_t htable_peer;
 	memset(&ht_dmq_resp_cback, 0, sizeof(ht_dmq_resp_cback));
 	htable_peer.peer_id.s = "htable";
@@ -113,7 +113,6 @@ static void add_dmq_peer() {
 }
 
 int ht_timer_interval = 20;
-int ht_use_dmq = 0;
 
 static int htable_init_rpc(void);
 
@@ -174,7 +173,6 @@ static param_export_t params[]={
 	{"array_size_suffix",  STR_PARAM, &ht_array_size_suffix.s},
 	{"fetch_rows",         INT_PARAM, &ht_fetch_rows},
 	{"timer_interval",     INT_PARAM, &ht_timer_interval},
-	{"use_dmq",     INT_PARAM, &ht_use_dmq},
 	{0,0,0}
 };
 
@@ -240,14 +238,12 @@ static int mod_init(void)
 		}
 	}
 	
-	if(ht_use_dmq){
-		if(dmq_load_api(&ht_dmq_bind) < 0) {
-			LM_ERR("cannot load dmq api\n");
-			return -1;
-		} else {
-			add_dmq_peer();
-			LM_DBG("presence-dmq loaded\n");
-		}
+	if(dmq_load_api(&ht_dmq_bind) < 0) {
+		LM_ERR("cannot load dmq api\n");
+		return -1;
+	} else {
+		ht_add_dmq_peer();
+		LM_DBG("presence-dmq loaded\n");
 	}
 	return 0;
 }




More information about the sr-dev mailing list