struct SilcIDCacheListStruct {
SilcIDCacheEntry cache[64];
SilcIDCacheEntry *cache_dyn;
- uint32 cache_dyn_count;
- uint32 cache_count;
- uint32 pos;
+ SilcUInt32 cache_dyn_count;
+ SilcUInt32 cache_count;
+ SilcUInt32 pos;
bool dyn;
};
The `id_type' defines the types of the ID's that will be saved to the
cache. */
-SilcIDCache silc_idcache_alloc(uint32 count, SilcIdType id_type,
+SilcIDCache silc_idcache_alloc(SilcUInt32 count, SilcIdType id_type,
SilcIDCacheDestructor destructor)
{
SilcIDCache cache;
cache = silc_calloc(1, sizeof(*cache));
cache->id_table = silc_hash_table_alloc(count, silc_hash_id,
- (void *)(uint32)id_type,
+ (void *)(SilcUInt32)id_type,
silc_hash_id_compare,
- (void *)(uint32)id_type,
+ (void *)(SilcUInt32)id_type,
silc_idcache_destructor, NULL,
FALSE);
cache->name_table = silc_hash_table_alloc(count, silc_hash_string, NULL,
the entry never expires from the cache. */
bool silc_idcache_add(SilcIDCache cache, char *name, void *id,
- void *context, int expire)
+ void *context, int expire, SilcIDCacheEntry *ret)
{
SilcIDCacheEntry c;
- uint32 curtime = time(NULL);
SILC_LOG_DEBUG(("Adding cache entry"));
c = silc_calloc(1, sizeof(*c));
c->id = id;
c->name = name;
- c->expire = (expire ? (curtime + SILC_ID_CACHE_EXPIRE) : 0);
+ c->expire = expire;
c->context = context;
/* Add the new entry to the hash tables */
silc_hash_table_rehash(cache->context_table, 0);
}
+ if (ret)
+ *ret = c;
+
return TRUE;
}
void *user_context)
{
SilcIDCache cache = (SilcIDCache)user_context;
- uint32 curtime = time(NULL);
+ SilcUInt32 curtime = time(NULL);
SilcIDCacheEntry c = (SilcIDCacheEntry)context;
if (c->expire && c->expire < curtime) {