MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / mqueue_db_save_queue

Function mqueue_db_save_queue

modules/mqueue/mqueue_db.c:261–323  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

259}
260
261int mqueue_db_save_queue(str *name)
262{
263 int ncols = 2;
264 db_key_t db_cols[2] = {&mq_db_key_column, &mq_db_val_column};
265 db_val_t db_vals[2];
266 int i;
267 int mqueue_sz = 0;
268 int ret = 0;
269
270 if(mqueue_db_open_con() != 0) {
271 LM_ERR("no db connection\n");
272 return -1;
273 }
274
275 if(mq_dbf.use_table(mqueue_db_con, name) < 0) {
276 LM_ERR("failed to use_table\n");
277 goto error;
278 }
279
280 if(name->len <= 0 || name->s == NULL) {
281 LM_ERR("bad mqueue name\n");
282 goto error;
283 }
284
285 mqueue_sz = _mq_get_csize(name);
286
287 if(mqueue_sz < 0) {
288 LM_ERR("no such mqueue\n");
289 goto error;
290 }
291 for(i = 0; i < mqueue_sz; i++) {
292 ret = mq_head_fetch(name);
293 if(ret != 0)
294 break;
295 str *key = NULL;
296 str *val = NULL;
297 key = get_mqk(name);
298 val = get_mqv(name);
299 LM_DBG("inserting mqueue[%.*s] name[%.*s] value[%.*s]\n", name->len,
300 name->s, key->len, key->s, val->len, val->s);
301 db_vals[0].type = DB_STR;
302 db_vals[0].nul = 0;
303 db_vals[0].val.str_val.s = key->s;
304 db_vals[0].val.str_val.len = key->len;
305 db_vals[1].type = DB_STR;
306 db_vals[1].nul = 0;
307 db_vals[1].val.str_val.s = val->s;
308 db_vals[1].val.str_val.len = val->len;
309 LM_DBG("mq_dbf.insert()\n");
310 if(mq_dbf.insert(mqueue_db_con, db_cols, db_vals, ncols) < 0) {
311 LM_ERR("failed to store key [%.*s] val [%.*s]\n", key->len, key->s,
312 val->len, val->s);
313 LM_DBG("done mq_dbf.insert()\n");
314 }
315 }
316
317 LM_INFO("queue [%.*s] saved in db\n", name->len, name->s);
318 mqueue_db_close_con();

Callers 1

mq_destroyFunction · 0.85

Calls 6

mqueue_db_open_conFunction · 0.85
_mq_get_csizeFunction · 0.85
mq_head_fetchFunction · 0.85
get_mqkFunction · 0.85
get_mqvFunction · 0.85
mqueue_db_close_conFunction · 0.85

Tested by

no test coverage detected