Exemple #1
0
static void
_lru_flush(struct lru_tree_s *lru)
{
	if (!lru)
		return;

	struct cached_element_s *elt = NULL;
	struct hashstr_s *k = NULL;

	while (lru_tree_get_last(lru, (void**)&k, (void**)&elt)) {
		lru_tree_steal_last(lru, (void**)&k, (void**)&elt);
		if (k) g_free(k); k = NULL;
		if (elt) g_free(elt); elt = NULL;
	}
}
Exemple #2
0
static guint
_resolver_expire(struct lru_tree_s *lru, time_t oldest)
{
	struct cached_element_s *elt = NULL;
	struct hashstr_s *k = NULL;

	guint count = 0;
	while (lru_tree_get_last(lru, (void**)&k, (void**)&elt)) {
		EXTRA_ASSERT(k != NULL);
		EXTRA_ASSERT(elt != NULL);
		if (oldest <= elt->use)
			break;
		lru_tree_steal_last(lru, (void**)&k, (void**)&elt);
		metautils_pfree0(&k, NULL);
		metautils_pfree0(&elt, NULL);
		++ count;
	}
	return count;
}
Exemple #3
0
static void
_task_expire_services_down (gpointer p)
{
    (void) p;
    gchar *k = NULL;
    gpointer v = NULL;
    guint count = 0;

    gulong oldest = oio_ext_monotonic_seconds() - cs_down_services;

    SRV_DO(while (lru_tree_get_last(srv_down, (void**)&k, &v)) {
    EXTRA_ASSERT(k != NULL);
        EXTRA_ASSERT(v != NULL);
        gulong when = (gulong)v;
        if (when >= oldest)
            break;
        lru_tree_steal_last(srv_down, (void**)&k, &v);
        g_free(k);
        ++ count;
    });