[sr-dev] git:master:d49ffadb: htable: exported get_clone api function to return pkg clone for item
Daniel-Constantin Mierla
miconda at gmail.com
Fri Mar 8 09:12:18 CET 2019
Module: kamailio
Branch: master
Commit: d49ffadbcae8b3dd9fc7ede43940ab223d57a35b
URL: https://github.com/kamailio/kamailio/commit/d49ffadbcae8b3dd9fc7ede43940ab223d57a35b
Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2019-03-08T09:04:58+01:00
htable: exported get_clone api function to return pkg clone for item
- alternative to GH #1866
---
Modified: src/modules/htable/api.c
Modified: src/modules/htable/api.h
---
Diff: https://github.com/kamailio/kamailio/commit/d49ffadbcae8b3dd9fc7ede43940ab223d57a35b.diff
Patch: https://github.com/kamailio/kamailio/commit/d49ffadbcae8b3dd9fc7ede43940ab223d57a35b.patch
---
diff --git a/src/modules/htable/api.c b/src/modules/htable/api.c
index 616f00a0ea..5b4a61af9f 100644
--- a/src/modules/htable/api.c
+++ b/src/modules/htable/api.c
@@ -91,6 +91,19 @@ int ht_api_get_cell_expire(str *hname, str *name,
return ht_get_cell_expire(ht, name, val);
}
+/**
+ * get a clone in pkg for an htable item
+ * - returned pointer must be pkg_free() after use
+ */
+ht_cell_t* ht_api_get_cell_clone(str *hname, str *name)
+{
+ ht_t* ht;
+ ht = ht_get_table(hname);
+ if(ht==NULL)
+ return NULL;
+ return ht_cell_pkg_copy(ht, name, NULL);
+}
+
/**
*
*/
@@ -137,6 +150,7 @@ int bind_htable(htable_api_t* api)
return -1;
}
api->set = ht_api_set_cell;
+ api->get_clone = ht_api_get_cell_clone;
api->rm = ht_api_del_cell;
api->set_expire = ht_api_set_cell_expire;
api->get_expire = ht_api_get_cell_expire;
diff --git a/src/modules/htable/api.h b/src/modules/htable/api.h
index b7a8849f08..da1fea94e8 100644
--- a/src/modules/htable/api.h
+++ b/src/modules/htable/api.h
@@ -18,7 +18,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
+
#ifndef _HT_MOD_API_H_
#define _HT_MOD_API_H_
@@ -27,6 +27,7 @@
typedef int (*ht_api_set_cell_f)(str *hname, str *name, int type,
int_str *val, int mode);
+typedef ht_cell_t* (*ht_api_get_cell_clone_f)(str *hname, str *name);
typedef int (*ht_api_del_cell_f)(str *hname, str *name);
typedef int (*ht_api_set_cell_expire_f)(str *hname, str *name,
@@ -39,6 +40,7 @@ typedef int (*ht_api_count_cells_re_f)(str *hname, str *sre, int mode);
typedef struct htable_api {
ht_api_set_cell_f set;
+ ht_api_get_cell_clone_f get_clone;
ht_api_del_cell_f rm;
ht_api_set_cell_expire_f set_expire;
ht_api_get_cell_expire_f get_expire;
More information about the sr-dev
mailing list