net.i2p.router.networkdb.kademlia
Class LocalHash

java.lang.Object
  extended by net.i2p.data.DataStructureImpl
      extended by net.i2p.data.Hash
          extended by net.i2p.router.networkdb.kademlia.LocalHash
All Implemented Interfaces:
DataStructure

 class LocalHash
extends Hash

Pull the caching used only by KBucketImpl out of Hash and put it here.

Since:
0.7.14
Author:
jrandom, moved from Hash.java by zzz

Field Summary
 
Fields inherited from class net.i2p.data.Hash
FAKE_HASH, HASH_LENGTH
 
Constructor Summary
LocalHash(byte[] b)
           
LocalHash(Hash h)
           
 
Method Summary
 byte[] cachedXor(Hash key)
          Calculate the xor with the current object and the specified hash, caching values where possible.
 void clearXorCache()
          Deprecated. unused
 void prepareCache()
          Prepare this hash's cache for xor values - very few hashes will need it, so we don't want to waste the memory, and lazy initialization would incur online overhead to verify the initialization.
 
Methods inherited from class net.i2p.data.Hash
equals, getData, hashCode, readBytes, setData, toBase64, toString, writeBytes
 
Methods inherited from class net.i2p.data.DataStructureImpl
calculateHash, fromBase64, fromByteArray, read, toByteArray
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LocalHash

public LocalHash(Hash h)

LocalHash

public LocalHash(byte[] b)
Method Detail

prepareCache

public void prepareCache()
Prepare this hash's cache for xor values - very few hashes will need it, so we don't want to waste the memory, and lazy initialization would incur online overhead to verify the initialization.


cachedXor

public byte[] cachedXor(Hash key)
                 throws java.lang.IllegalStateException
Calculate the xor with the current object and the specified hash, caching values where possible. Currently this keeps up to MAX_CACHED_XOR (1024) entries, and uses an essentially random ejection policy. Later perhaps go for an LRU or FIFO?

Throws:
java.lang.IllegalStateException - if you try to use the cache without first preparing this object's cache via .prepareCache()

clearXorCache

public void clearXorCache()
Deprecated. unused