Deletes a cached entry. @param key key
(final byte[] key)
| 86 | * @param key key |
| 87 | */ |
| 88 | public void delete(final byte[] key) { |
| 89 | final int hash = Token.hashCode(key); |
| 90 | rwl.writeLock().lock(); |
| 91 | |
| 92 | try { |
| 93 | purge(); |
| 94 | final int i = indexFor(hash, buckets.length); |
| 95 | BucketEntry e = buckets[i], prev = e; |
| 96 | while(e != null) { |
| 97 | final BucketEntry next = e.next; |
| 98 | final IndexEntry entry = e.get(); |
| 99 | if(entry == null) { |
| 100 | delete(i, e, prev, next); |
| 101 | } else if(e.hash == hash && Token.eq(entry.key, key)) { |
| 102 | delete(i, e, prev, next); |
| 103 | break; |
| 104 | } |
| 105 | prev = e; |
| 106 | e = next; |
| 107 | } |
| 108 | } finally { |
| 109 | rwl.writeLock().unlock(); |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | /** |
| 114 | * Purges stale entries from the cache. |