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;
}
示例#2
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]));
		}
}
示例#3
0
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;
}
示例#4
0
void remove_sms_from_report_queue(int id)
{
	free_report_cell(&(report_queue[id]));
}