| 86 | } |
| 87 | |
| 88 | int mqueue_db_load_queue(str *name) |
| 89 | { |
| 90 | int ncols = 2; |
| 91 | db_res_t *db_res = NULL; |
| 92 | db_key_t db_cols[2] = {&mq_db_key_column, &mq_db_val_column}; |
| 93 | db_key_t db_ord = &mq_db_id_column; |
| 94 | int mq_fetch_rows = 100; |
| 95 | int ret = 0; |
| 96 | str val = str_init(""); |
| 97 | str key = str_init(""); |
| 98 | int i; |
| 99 | int cnt = 0; |
| 100 | |
| 101 | if(mqueue_db_open_con() != 0) { |
| 102 | LM_ERR("no db connection\n"); |
| 103 | return -1; |
| 104 | } |
| 105 | |
| 106 | if(mq_dbf.use_table(mqueue_db_con, name) < 0) { |
| 107 | LM_ERR("failed to use_table\n"); |
| 108 | goto error; |
| 109 | } |
| 110 | |
| 111 | LM_INFO("=============== loading queue table [%.*s] from database\n", |
| 112 | name->len, name->s); |
| 113 | |
| 114 | if(DB_CAPABILITY(mq_dbf, DB_CAP_FETCH)) { |
| 115 | if(mq_dbf.query(mqueue_db_con, 0, 0, 0, db_cols, 0, ncols, db_ord, 0) |
| 116 | < 0) { |
| 117 | LM_ERR("Error while querying db\n"); |
| 118 | goto error; |
| 119 | } |
| 120 | if(mq_dbf.fetch_result(mqueue_db_con, &db_res, mq_fetch_rows) < 0) { |
| 121 | LM_ERR("Error while fetching result\n"); |
| 122 | if(db_res) |
| 123 | mq_dbf.free_result(mqueue_db_con, db_res); |
| 124 | goto error; |
| 125 | } else { |
| 126 | if(RES_ROW_N(db_res) == 0) { |
| 127 | mq_dbf.free_result(mqueue_db_con, db_res); |
| 128 | LM_DBG("Nothing to be loaded in queue\n"); |
| 129 | mqueue_db_close_con(); |
| 130 | return 0; |
| 131 | } |
| 132 | } |
| 133 | } else { |
| 134 | if((ret = mq_dbf.query(mqueue_db_con, NULL, NULL, NULL, db_cols, 0, |
| 135 | ncols, 0, &db_res)) |
| 136 | != 0 |
| 137 | || RES_ROW_N(db_res) <= 0) { |
| 138 | if(ret == 0) { |
| 139 | mq_dbf.free_result(mqueue_db_con, db_res); |
| 140 | mqueue_db_close_con(); |
| 141 | return 0; |
| 142 | } else { |
| 143 | goto error; |
| 144 | } |
| 145 | } |
no test coverage detected