mirror of git://git.sysmocom.de/ofono
smsutil: status_report_expiration
This commit is contained in:
parent
b7f1733fe4
commit
df058085ea
|
@ -2961,10 +2961,55 @@ void status_report_assembly_add_fragment(
|
|||
}
|
||||
|
||||
void status_report_assembly_expire(struct status_report_assembly *assembly,
|
||||
time_t before, GFunc foreach_func,
|
||||
gpointer data)
|
||||
time_t before)
|
||||
{
|
||||
/*TODO*/
|
||||
GHashTable *id_table;
|
||||
GHashTableIter iter_addr, iter_node;
|
||||
struct sms_address addr;
|
||||
char *straddr;
|
||||
gpointer key;
|
||||
unsigned int msg_id;
|
||||
struct id_table_node *node;
|
||||
|
||||
g_hash_table_iter_init(&iter_addr, assembly->assembly_table);
|
||||
|
||||
/*
|
||||
* Go through different addresses. Each address can relate to
|
||||
* 1-n msg_ids.
|
||||
*/
|
||||
while (g_hash_table_iter_next(&iter_addr, (gpointer) &straddr,
|
||||
(gpointer) &id_table)) {
|
||||
|
||||
sms_address_from_string(&addr, straddr);
|
||||
g_hash_table_iter_init(&iter_node, id_table);
|
||||
|
||||
/* Go through different messages. */
|
||||
while (g_hash_table_iter_next(&iter_node, &key,
|
||||
(gpointer) &node)) {
|
||||
msg_id = *(unsigned int *) key;
|
||||
|
||||
/*
|
||||
* If message is expired, removed it from the
|
||||
* hash-table and remove the backup-file
|
||||
*/
|
||||
if (node->expiration <= before) {
|
||||
g_hash_table_iter_remove(&iter_node);
|
||||
|
||||
sr_assembly_remove_fragment_backup(
|
||||
assembly->imsi,
|
||||
node,
|
||||
&addr,
|
||||
msg_id);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If all messages are removed, remove address
|
||||
* from the hash-table.
|
||||
*/
|
||||
if (g_hash_table_size(id_table) == 0)
|
||||
g_hash_table_iter_remove(&iter_addr);
|
||||
}
|
||||
}
|
||||
|
||||
static inline GSList *sms_list_append(GSList *l, const struct sms *in)
|
||||
|
|
|
@ -513,8 +513,7 @@ void status_report_assembly_add_fragment(struct status_report_assembly
|
|||
unsigned char mr, time_t expiration,
|
||||
unsigned char total_mrs);
|
||||
void status_report_assembly_expire(struct status_report_assembly *assembly,
|
||||
time_t before, GFunc foreach_func,
|
||||
gpointer data);
|
||||
time_t before);
|
||||
|
||||
GSList *sms_text_prepare(const char *utf8, guint16 ref,
|
||||
gboolean use_16bit, int *ref_offset,
|
||||
|
|
Loading…
Reference in New Issue