static void cacheex_del_hitcache(struct s_client *cl, ECM_REQUEST *er) { HIT_KEY search; CACHE_HIT *result; memset(&search, 0, sizeof(HIT_KEY)); search.caid = er->caid; search.prid = er->prid; search.srvid = er->srvid; if(cl && cl->grp) { result = find_hash_table(&ht_hitcache, &search, sizeof(HIT_KEY), &cacheex_compare_hitkey); while(result) { result->grp &= ~cl->grp; result->grp_last_max_hitcache_time &= ~cl->grp; result = find_hash_table(&ht_hitcache, &search, sizeof(HIT_KEY), &cacheex_compare_hitkey); } } SAFE_RWLOCK_WRLOCK(&hitcache_lock); search_remove_elem_hash_table(&ht_hitcache, &search, sizeof(HIT_KEY), &cacheex_compare_hitkey); SAFE_RWLOCK_UNLOCK(&hitcache_lock); }
void del_hitcache(ECM_REQUEST *er) { HIT_KEY search; memset(&search, 0, sizeof(HIT_KEY)); search.caid = er->caid; search.prid = er->prid; search.srvid = er->srvid; pthread_rwlock_wrlock(&hitcache_lock); search_remove_elem_hash_table(&ht_hitcache, &search, sizeof(HIT_KEY), &compare_hitkey); pthread_rwlock_unlock(&hitcache_lock); }
static void cacheex_del_hitcache(ECM_REQUEST *er) { HIT_KEY search; memset(&search, 0, sizeof(HIT_KEY)); search.caid = er->caid; search.prid = er->prid; search.srvid = er->srvid; SAFE_RWLOCK_WRLOCK(&hitcache_lock); search_remove_elem_hash_table(&ht_hitcache, &search, sizeof(HIT_KEY), &cacheex_compare_hitkey); SAFE_RWLOCK_UNLOCK(&hitcache_lock); }