void destroy_report_queue() { int i; for(i=0;i<NR_CELLS;i++) if (report_queue[i].sms) free_report_cell(&(report_queue[i])); if (report_queue) shm_free(report_queue); report_queue = 0; }
void check_timeout_in_report_queue(void) { int i; time_t current_time; current_time = get_time(); for(i=0;i<NR_CELLS;i++) if (report_queue[i].sms && report_queue[i].timeout<=current_time) { LM_INFO("[%lu,%lu] record %d is discarded (timeout), having status" " %d\n", (long unsigned int)current_time, (long unsigned int)report_queue[i].timeout, i,report_queue[i].status); free_report_cell(&(report_queue[i])); } }
void add_sms_into_report_queue(int id, struct sms_msg *sms, char *p, int l) { if (report_queue[id].sms){ LM_INFO("old message still waiting for report at location %d" " -> discarding\n",id); free_report_cell(&(report_queue[id])); } sms->ref++; report_queue[id].status = -1; report_queue[id].sms = sms; report_queue[id].text = p; report_queue[id].text_len = l; report_queue[id].timeout = get_time() + REPORT_TIMEOUT; }
void remove_sms_from_report_queue(int id) { free_report_cell(&(report_queue[id])); }