* Tunnel: Concurrentify HashSetIVValidator

This commit is contained in:
zzz
2009-08-26 22:18:15 +00:00
parent 7973f2e8b9
commit 93d366fea1

View File

@ -1,18 +1,19 @@
package net.i2p.router.tunnel; package net.i2p.router.tunnel;
import java.util.HashSet; import java.util.Set;
import net.i2p.data.ByteArray; import net.i2p.data.ByteArray;
import net.i2p.data.DataHelper; import net.i2p.data.DataHelper;
import net.i2p.util.ConcurrentHashSet;
/** /**
* waste lots of RAM * waste lots of RAM
*/ */
class HashSetIVValidator implements IVValidator { class HashSetIVValidator implements IVValidator {
private final HashSet _received; private final Set<ByteArray> _received;
public HashSetIVValidator() { public HashSetIVValidator() {
_received = new HashSet(); _received = new ConcurrentHashSet();
} }
public boolean receiveIV(byte ivData[], int ivOffset, byte payload[], int payloadOffset) { public boolean receiveIV(byte ivData[], int ivOffset, byte payload[], int payloadOffset) {
@ -21,10 +22,7 @@ class HashSetIVValidator implements IVValidator {
byte iv[] = new byte[HopProcessor.IV_LENGTH]; byte iv[] = new byte[HopProcessor.IV_LENGTH];
DataHelper.xor(ivData, ivOffset, payload, payloadOffset, iv, 0, HopProcessor.IV_LENGTH); DataHelper.xor(ivData, ivOffset, payload, payloadOffset, iv, 0, HopProcessor.IV_LENGTH);
ByteArray ba = new ByteArray(iv); ByteArray ba = new ByteArray(iv);
boolean isNew = false; boolean isNew = _received.add(ba);
synchronized (_received) {
isNew = _received.add(ba);
}
return isNew; return isNew;
} }
} }