From: <em...@us...> - 2003-02-27 17:08:21
|
Update of /cvsroot/jmule/jMule/src/org/jmule/core/protocol/donkey In directory sc8-pr-cvs1:/tmp/cvs-serv12316 Modified Files: DonkeyHashFile.java Log Message: optimize logging; add hashset validation Index: DonkeyHashFile.java =================================================================== RCS file: /cvsroot/jmule/jMule/src/org/jmule/core/protocol/donkey/DonkeyHashFile.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** DonkeyHashFile.java 7 Jan 2003 22:30:18 -0000 1.13 --- DonkeyHashFile.java 27 Feb 2003 17:08:18 -0000 1.14 *************** *** 27,30 **** --- 27,31 ---- import java.nio.*; import java.nio.channels.*; + import java.util.Arrays; import java.util.BitSet; import java.util.logging.*; *************** *** 89,93 **** hashset = ByteBuffer.allocate(16 * (c>0?c:1)).order(ByteOrder.LITTLE_ENDIAN); for (i = 1; i < c; i++) { ! log.finest( "file pos:" + position +" part: "+i+" of "+c ); while (position <= (i * PARTSIZE - bb.capacity())) { position+=sf.getBytes(position, bb); --- 90,96 ---- hashset = ByteBuffer.allocate(16 * (c>0?c:1)).order(ByteOrder.LITTLE_ENDIAN); for (i = 1; i < c; i++) { ! if (log.isLoggable(Level.FINEST)) { ! log.finest( "file pos:" + position +" part: "+i+" of "+c ); ! } while (position <= (i * PARTSIZE - bb.capacity())) { position+=sf.getBytes(position, bb); *************** *** 96,100 **** bb.rewind(); } ! log.finest( "file pos:" + position +" part: "+i+" of "+c ); if (position < (i * PARTSIZE)) { bb.limit((int) ((i * PARTSIZE) - position)); --- 99,105 ---- bb.rewind(); } ! if (log.isLoggable(Level.FINEST)) { ! log.finest( "file pos:" + position +" part: "+i+" of "+c ); ! } if (position < (i * PARTSIZE)) { bb.limit((int) ((i * PARTSIZE) - position)); *************** *** 136,142 **** } hashset.rewind(); ! log.finer("Hash: "+Convert.bytesToHexString(hashes[0])); ! for(int j=1; j < hashes.length;j++){ ! log.finer("partial hash of part "+j+" is "+Convert.bytesToHexString(hashes[j])); } log.fine("ed2k: file done"); --- 141,149 ---- } hashset.rewind(); ! if (log.isLoggable(Level.FINER)) { ! log.finer("Hash: "+Convert.bytesToHexString(hashes[0])); ! for(int j=1; j < hashes.length;j++){ ! log.finer("partial hash of part "+j+" is "+Convert.bytesToHexString(hashes[j])); ! } } log.fine("ed2k: file done"); *************** *** 182,186 **** for (i = 1; i <= maxcount&&i<c; i++) { if (bs.get(i-1)){ ! log.finest( "file pos:" + position +" part: "+i+" of "+c ); while (position <= (i * PARTSIZE - bb.capacity())) { position+=sf.getBytes(position, bb); --- 189,195 ---- for (i = 1; i <= maxcount&&i<c; i++) { if (bs.get(i-1)){ ! if (log.isLoggable(Level.FINEST)) { ! log.finest( "file pos:" + position +" part: "+i+" of "+c ); ! } while (position <= (i * PARTSIZE - bb.capacity())) { position+=sf.getBytes(position, bb); *************** *** 189,193 **** bb.rewind(); } ! log.finest( "file pos:" + position +" part: "+i+" of "+c ); if (position < (i * PARTSIZE)) { bb.limit((int) ((i * PARTSIZE) - position)); --- 198,204 ---- bb.rewind(); } ! if (log.isLoggable(Level.FINEST)) { ! log.finest( "file pos:" + position +" part: "+i+" of "+c ); ! } if (position < (i * PARTSIZE)) { bb.limit((int) ((i * PARTSIZE) - position)); *************** *** 235,241 **** } hashset.rewind(); ! log.finer("Hash: "+Convert.bytesToHexString(hashes[0])); ! for(int j=1; j < hashes.length;j++){ ! log.finer("partial hash of part "+j+" is "+Convert.bytesToHexString(hashes[j])); } log.fine("ed2k: file done"); --- 246,254 ---- } hashset.rewind(); ! if (log.isLoggable(Level.FINER)) { ! log.finer("Hash: "+Convert.bytesToHexString(hashes[0])); ! for(int j=1; j < hashes.length;j++){ ! log.finer("partial hash of part "+j+" is "+Convert.bytesToHexString(hashes[j])); ! } } log.fine("ed2k: file done"); *************** *** 327,330 **** --- 340,363 ---- } return null; + } + + public static boolean isValidHashset(byte[][] hashes){ + MD4 msgDigest = new MD4(); + for(int i=1;i<hashes.length;i++){ + msgDigest.update(ByteBuffer.wrap(hashes[i]).order(ByteOrder.LITTLE_ENDIAN)); + } + if (hashes.length>1) { + byte[] hash = new byte[16]; + msgDigest.finalDigest(ByteBuffer.wrap(hash).order(ByteOrder.LITTLE_ENDIAN)); + if ( Arrays.equals(hash, hashes[0]) ) { + log.fine("ed2k: hashset ok"); + return true; + } else { + log.fine("ed2k: hashset NOT ok"); + return false; + } + } + log.fine("ed2k: dummy hashset"); + return true; } |