res_sorcery_memory_cache: Add support for object_lifetime_maximum.
authorJoshua Colp <jcolp@digium.com>
Wed, 20 May 2015 22:35:54 +0000 (19:35 -0300)
committerJoshua Colp <jcolp@digium.com>
Fri, 22 May 2015 14:57:26 +0000 (11:57 -0300)
commit81d375baad02d62948b2acb183e689ea88ccc062
treeb9bb7c87862bf2cb9cb93190ca998fee48d8208d
parent071b3d43cbc2fbcf06491a5c03cfd1f983871bce
res_sorcery_memory_cache: Add support for object_lifetime_maximum.

This makes the "object_lifetime_maximum" option operational.

On the addition of an object to an empty memory cache a scheduled
task is created which, when invoked, expires objects from the cache
which have exceeded their lifetime. If more objects have been added
the remaining life of the oldest object is used to schedule the
next invocation of the scheduled task.

If the oldest object is removed from the cache before it can be
expired automatically the scheduled task is cancelled, if possible,
and the lifetime of the next oldest is used to schedule the task.

If during these two operations no additional objects exist in the
cache then no task is scheduled.

An additional unit test has been added which verifies this
functionality.

ASTERISK-25067
Reported by: Matt Jordan

Change-Id: I87409674674a508e7717ee20739ca15cec6ba7b6
res/res_sorcery_memory_cache.c