public bool Register(MemBlock key, MemBlock value, int ttl)
{
Entry entry = null;
lock(_sync) {
Dictionary<MemBlock, Entry> key_entries = null;
if(!_entries.TryGetValue(key, out key_entries)) {
key_entries = new Dictionary<MemBlock, Entry>();
_entries[key] = key_entries;
}
if(key_entries.ContainsKey(value)) {
key_entries[value].Timer.Stop();
}
entry = new Entry(key, value, ttl);
key_entries[value] = entry;
}
if(entry != null) {
entry.Timer = new SimpleTimer(EntryCallback, entry, 0, RETRY_TIMEOUT);
entry.Timer.Start();
}
return true;
}