Changeset 08a3165


Ignore:
Timestamp:
Dec 30, 2010 3:01:39 PM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
0eebfba, 6ec1772
Parents:
5d6edad
Message:
Files:
2 added
18 edited

Legend:

Unmodified
Added
Removed
  • core/java/src/net/i2p/crypto/ElGamalAESEngine.java

    r5d6edad r08a3165  
    328328            if ((len < 0) || (len > decrypted.length - cur - Hash.HASH_LENGTH - 1))
    329329                throw new Exception("Invalid size of payload (" + len + ", remaining " + (decrypted.length-cur) +")");
    330             byte hashval[] = new byte[Hash.HASH_LENGTH];
    331             System.arraycopy(decrypted, cur, hashval, 0, Hash.HASH_LENGTH);
     330            //byte hashval[] = new byte[Hash.HASH_LENGTH];
     331            //System.arraycopy(decrypted, cur, hashval, 0, Hash.HASH_LENGTH);
     332            //readHash = new Hash();
     333            //readHash.setData(hashval);
     334            readHash = Hash.create(decrypted, cur);
    332335            cur += Hash.HASH_LENGTH;
    333             readHash = new Hash();
    334             readHash.setData(hashval);
    335336            byte flag = decrypted[cur++];
    336337            if (flag == 0x01) {
  • core/java/src/net/i2p/crypto/ElGamalEngine.java

    r5d6edad r08a3165  
    203203
    204204        //ByteArrayInputStream bais = new ByteArrayInputStream(val, i, val.length - i);
    205         byte hashData[] = new byte[Hash.HASH_LENGTH];
    206         System.arraycopy(val, i + 1, hashData, 0, Hash.HASH_LENGTH);
    207         Hash hash = new Hash(hashData);
     205        //byte hashData[] = new byte[Hash.HASH_LENGTH];
     206        //System.arraycopy(val, i + 1, hashData, 0, Hash.HASH_LENGTH);
     207        //Hash hash = new Hash(hashData);
     208        Hash hash = Hash.create(val, i + 1);
    208209        byte rv[] = new byte[payloadLen];
    209210        System.arraycopy(val, i + 1 + Hash.HASH_LENGTH, rv, 0, rv.length);
  • core/java/src/net/i2p/crypto/SHA256Generator.java

    r5d6edad r08a3165  
    3636        byte rv[] = digest.digest();
    3737        releaseGnu(digest);
    38         return new Hash(rv);
     38        //return new Hash(rv);
     39        return Hash.create(rv);
    3940    }
    4041   
  • core/java/src/net/i2p/data/Hash.java

    r5d6edad r08a3165  
    2626    public final static int HASH_LENGTH = 32;
    2727    public final static Hash FAKE_HASH = new Hash(new byte[HASH_LENGTH]);
     28    private static final int CACHE_SIZE = 2048;
    2829   
     30    private static final SDSCache<Hash> _cache = new SDSCache(Hash.class, HASH_LENGTH, CACHE_SIZE);
     31
     32    /**
     33     * Pull from cache or return new
     34     * @since 0.8.3
     35     */
     36    public static Hash create(byte[] data) {
     37        return _cache.get(data);
     38    }
     39
     40    /**
     41     * Pull from cache or return new
     42     * @since 0.8.3
     43     */
     44    public static Hash create(byte[] data, int off) {
     45        return _cache.get(data, off);
     46    }
     47
     48    /**
     49     * Pull from cache or return new
     50     * @since 0.8.3
     51     */
     52    public static Hash create(InputStream in) throws IOException {
     53        return _cache.get(in);
     54    }
     55
    2956    public Hash() {
    3057        super();
  • core/java/src/net/i2p/data/KeysAndCert.java

    r5d6edad r08a3165  
    6262   
    6363    public void readBytes(InputStream in) throws DataFormatException, IOException {
    64         _publicKey = new PublicKey();
    65         _publicKey.readBytes(in);
    66         _signingKey = new SigningPublicKey();
    67         _signingKey.readBytes(in);
     64        //_publicKey = new PublicKey();
     65        //_publicKey.readBytes(in);
     66        _publicKey = PublicKey.create(in);
     67        //_signingKey = new SigningPublicKey();
     68        //_signingKey.readBytes(in);
     69        _signingKey = SigningPublicKey.create(in);
    6870        //_certificate = new Certificate();
    6971        //_certificate.readBytes(in);
  • core/java/src/net/i2p/data/Lease.java

    r5d6edad r08a3165  
    111111   
    112112    public void readBytes(InputStream in) throws DataFormatException, IOException {
    113         _gateway = new Hash();
    114         _gateway.readBytes(in);
     113        //_gateway = new Hash();
     114        //_gateway.readBytes(in);
     115        _gateway = Hash.create(in);
    115116        _tunnelId = new TunnelId();
    116117        _tunnelId.readBytes(in);
  • core/java/src/net/i2p/data/PublicKey.java

    r5d6edad r08a3165  
    1010 */
    1111
     12import java.io.InputStream;
     13import java.io.IOException;
     14
    1215/**
    1316 * Defines the PublicKey as defined by the I2P data structure spec.
     
    1922public class PublicKey extends SimpleDataStructure {
    2023    public final static int KEYSIZE_BYTES = 256;
     24    private static final int CACHE_SIZE = 256;
     25
     26    private static final SDSCache<PublicKey> _cache = new SDSCache(PublicKey.class, KEYSIZE_BYTES, CACHE_SIZE);
     27
     28    /**
     29     * Pull from cache or return new
     30     * @since 0.8.3
     31     */
     32    public static PublicKey create(InputStream in) throws IOException {
     33        return _cache.get(in);
     34    }
    2135
    2236    public PublicKey() {
  • core/java/src/net/i2p/data/SigningPublicKey.java

    r5d6edad r08a3165  
    1010 */
    1111
     12import java.io.InputStream;
     13import java.io.IOException;
     14
    1215/**
    1316 * Defines the SigningPublicKey as defined by the I2P data structure spec.
     
    2023public class SigningPublicKey extends SimpleDataStructure {
    2124    public final static int KEYSIZE_BYTES = 128;
     25    private static final int CACHE_SIZE = 256;
     26
     27    private static final SDSCache<SigningPublicKey> _cache = new SDSCache(SigningPublicKey.class, KEYSIZE_BYTES, CACHE_SIZE);
     28
     29    /**
     30     * Pull from cache or return new
     31     * @since 0.8.3
     32     */
     33    public static SigningPublicKey create(InputStream in) throws IOException {
     34        return _cache.get(in);
     35    }
    2236
    2337    public SigningPublicKey() {
  • core/java/src/net/i2p/data/i2cp/DestLookupMessage.java

    r5d6edad r08a3165  
    3434
    3535    protected void doReadMessage(InputStream in, int size) throws I2CPMessageException, IOException {
    36         Hash h = new Hash();
     36        //Hash h = new Hash();
    3737        try {
    38             h.readBytes(in);
    39         } catch (DataFormatException dfe) {
     38            //h.readBytes(in);
     39            _hash = Hash.create(in);
     40        //} catch (DataFormatException dfe) {
     41        } catch (IllegalArgumentException dfe) {
    4042            throw new I2CPMessageException("Unable to load the hash", dfe);
    4143        }
    42         _hash = h;
     44        //_hash = h;
    4345    }
    4446
  • core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java

    r5d6edad r08a3165  
    8787            _endpoints.clear();
    8888            for (int i = 0; i < numTunnels; i++) {
    89                 Hash router = new Hash();
    90                 router.readBytes(in);
     89                //Hash router = new Hash();
     90                //router.readBytes(in);
     91                Hash router = Hash.create(in);
    9192                TunnelId tunnel = new TunnelId();
    9293                tunnel.readBytes(in);
  • core/java/src/net/i2p/util/ByteCache.java

    r5d6edad r08a3165  
    22
    33import java.util.Arrays;
    4 import java.util.HashMap;
    54import java.util.Map;
    65import java.util.Queue;
     6import java.util.concurrent.ConcurrentHashMap;
    77import java.util.concurrent.LinkedBlockingQueue;
    88
     
    5858public final class ByteCache {
    5959
    60     private static final Map<Integer, ByteCache> _caches = new HashMap(16);
     60    private static final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(ByteCache.class);
     61    private static final Map<Integer, ByteCache> _caches = new ConcurrentHashMap(16);
    6162
    6263    /**
     
    7576     * Get a cache responsible for objects of the given size
    7677     *
    77      * @param cacheSize how large we want the cache to grow before using on
    78      *                  demand allocation
     78     * @param cacheSize how large we want the cache to grow
     79     *                  (number of objects, NOT memory size)
     80     *                  before discarding released objects.
    7981     *                  Since 0.7.14, a limit of 1MB / size is enforced
    8082     *                  for the typical 128MB max memory JVM
     
    8587            cacheSize = MAX_CACHE / size;
    8688        Integer sz = Integer.valueOf(size);
    87         ByteCache cache = null;
    88         synchronized (_caches) {
    89             if (!_caches.containsKey(sz))
    90                 _caches.put(sz, new ByteCache(cacheSize, size));
    91             cache = _caches.get(sz);
    92         }
     89        ByteCache cache = _caches.get(sz);
     90        if (cache == null) {
     91            cache = new ByteCache(cacheSize, size);
     92            _caches.put(sz, cache);
     93;       }
    9394        cache.resize(cacheSize);
    9495        //I2PAppContext.getGlobalContext().logManager().getLog(ByteCache.class).error("ByteCache size: " + size + " max: " + cacheSize, new Exception("from"));
     
    103104        for (ByteCache bc : _caches.values())
    104105            bc.clear();
    105         I2PAppContext.getGlobalContext().logManager().getLog(ByteCache.class).warn("WARNING: Low memory, clearing byte caches");
    106     }
    107 
    108     private Log _log;
     106        _log.warn("WARNING: Low memory, clearing byte caches");
     107    }
     108
    109109    /** list of available and available entries */
    110110    private Queue<ByteArray> _available;
     
    117117   
    118118    /** how often do we cleanup the cache */
    119     private static final int CLEANUP_FREQUENCY = 30*1000;
     119    private static final int CLEANUP_FREQUENCY = 33*1000;
    120120    /** if we haven't exceeded the cache size in 2 minutes, cut our cache in half */
    121121    private static final long EXPIRE_PERIOD = 2*60*1000;
     
    127127        _entrySize = entrySize;
    128128        _lastOverflow = -1;
    129         SimpleScheduler.getInstance().addPeriodicEvent(new Cleanup(), CLEANUP_FREQUENCY);
    130         _log = I2PAppContext.getGlobalContext().logManager().getLog(ByteCache.class);
    131         I2PAppContext.getGlobalContext().statManager().createRateStat("byteCache.memory." + entrySize, "Memory usage (B)", "Router", new long[] { 60*1000 });
     129        SimpleScheduler.getInstance().addPeriodicEvent(new Cleanup(), CLEANUP_FREQUENCY + (entrySize % 7));   //stagger
     130        I2PAppContext.getGlobalContext().statManager().createRateStat("byteCache.memory." + entrySize, "Memory usage (B)", "Router", new long[] { 10*60*1000 });
    132131    }
    133132   
  • router/java/src/net/i2p/data/i2np/BuildRequestRecord.java

    r5d6edad r08a3165  
    9494     */
    9595    public Hash readNextIdentity() {
    96         byte rv[] = new byte[Hash.HASH_LENGTH];
    97         System.arraycopy(_data.getData(), _data.getOffset() + OFF_SEND_IDENT, rv, 0, Hash.HASH_LENGTH);
    98         return new Hash(rv);
     96        //byte rv[] = new byte[Hash.HASH_LENGTH];
     97        //System.arraycopy(_data.getData(), _data.getOffset() + OFF_SEND_IDENT, rv, 0, Hash.HASH_LENGTH);
     98        //return new Hash(rv);
     99        return Hash.create(_data.getData(), _data.getOffset() + OFF_SEND_IDENT);
    99100    }
    100101    /**
  • router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java

    r5d6edad r08a3165  
    134134        int curIndex = offset;
    135135       
    136         byte keyData[] = new byte[Hash.HASH_LENGTH];
    137         System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
    138         curIndex += Hash.HASH_LENGTH;
    139         _key = new Hash(keyData);
    140        
    141         byte fromData[] = new byte[Hash.HASH_LENGTH];
    142         System.arraycopy(data, curIndex, fromData, 0, Hash.HASH_LENGTH);
    143         curIndex += Hash.HASH_LENGTH;
    144         _fromHash = new Hash(fromData);
     136        //byte keyData[] = new byte[Hash.HASH_LENGTH];
     137        //System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
     138        _key = Hash.create(data, curIndex);
     139        curIndex += Hash.HASH_LENGTH;
     140        //_key = new Hash(keyData);
     141       
     142        //byte fromData[] = new byte[Hash.HASH_LENGTH];
     143        //System.arraycopy(data, curIndex, fromData, 0, Hash.HASH_LENGTH);
     144        _fromHash = Hash.create(data, curIndex);
     145        curIndex += Hash.HASH_LENGTH;
     146        //_fromHash = new Hash(fromData);
    145147       
    146148        boolean tunnelSpecified = false;
     
    169171        Set<Hash> peers = new HashSet(numPeers);
    170172        for (int i = 0; i < numPeers; i++) {
    171             byte peer[] = new byte[Hash.HASH_LENGTH];
    172             System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH);
     173            //byte peer[] = new byte[Hash.HASH_LENGTH];
     174            //System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH);
     175            Hash p = Hash.create(data, curIndex);
    173176            curIndex += Hash.HASH_LENGTH;
    174             peers.add(new Hash(peer));
     177            peers.add(p);
    175178        }
    176179        _dontIncludePeers = peers;
  • router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java

    r5d6edad r08a3165  
    5656        int curIndex = offset;
    5757       
    58         byte keyData[] = new byte[Hash.HASH_LENGTH];
    59         System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
     58        //byte keyData[] = new byte[Hash.HASH_LENGTH];
     59        //System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
     60        _key = Hash.create(data, curIndex);
    6061        curIndex += Hash.HASH_LENGTH;
    61         _key = new Hash(keyData);
     62        //_key = new Hash(keyData);
    6263       
    6364        int num = (int)DataHelper.fromLong(data, curIndex, 1);
     
    6667        _peerHashes.clear();
    6768        for (int i = 0; i < num; i++) {
    68             byte peer[] = new byte[Hash.HASH_LENGTH];
    69             System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH);
     69            //byte peer[] = new byte[Hash.HASH_LENGTH];
     70            //System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH);
     71            Hash p = Hash.create(data, curIndex);
    7072            curIndex += Hash.HASH_LENGTH;
    71             addReply(new Hash(peer));
     73            addReply(p);
    7274        }
    7375           
    74         byte from[] = new byte[Hash.HASH_LENGTH];
    75         System.arraycopy(data, curIndex, from, 0, Hash.HASH_LENGTH);
     76        //byte from[] = new byte[Hash.HASH_LENGTH];
     77        //System.arraycopy(data, curIndex, from, 0, Hash.HASH_LENGTH);
     78        _from = Hash.create(data, curIndex);
    7679        curIndex += Hash.HASH_LENGTH;
    77         _from = new Hash(from);
     80        //_from = new Hash(from);
    7881
    7982        //_context.statManager().addRateData("netDb.searchReplyMessageReceive", num*32 + 64, 1);
  • router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java

    r5d6edad r08a3165  
    114114        int curIndex = offset;
    115115       
    116         byte keyData[] = new byte[Hash.HASH_LENGTH];
    117         System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
     116        //byte keyData[] = new byte[Hash.HASH_LENGTH];
     117        //System.arraycopy(data, curIndex, keyData, 0, Hash.HASH_LENGTH);
     118        _key = Hash.create(data, curIndex);
    118119        curIndex += Hash.HASH_LENGTH;
    119         _key = new Hash(keyData);
     120        //_key = new Hash(keyData);
    120121       
    121122        _type = (int)DataHelper.fromLong(data, curIndex, 1);
     
    131132            curIndex += 4;
    132133           
    133             byte gw[] = new byte[Hash.HASH_LENGTH];
    134             System.arraycopy(data, curIndex, gw, 0, Hash.HASH_LENGTH);
     134            //byte gw[] = new byte[Hash.HASH_LENGTH];
     135            //System.arraycopy(data, curIndex, gw, 0, Hash.HASH_LENGTH);
     136            _replyGateway = Hash.create(data, curIndex);
    135137            curIndex += Hash.HASH_LENGTH;
    136             _replyGateway = new Hash(gw);
     138            //_replyGateway = new Hash(gw);
    137139        } else {
    138140            _replyTunnel = null;
  • router/java/src/net/i2p/data/i2np/DeliveryInstructions.java

    r5d6edad r08a3165  
    9191                break;
    9292            case FLAG_MODE_DESTINATION:
    93                 Hash destHash = new Hash();
    94                 destHash.readBytes(in);
     93                //Hash destHash = new Hash();
     94                //destHash.readBytes(in);
     95                Hash destHash = Hash.create(in);
    9596                setDestination(destHash);
    9697                break;
    9798            case FLAG_MODE_ROUTER:
    98                 Hash routerHash = new Hash();
    99                 routerHash.readBytes(in);
     99                //Hash routerHash = new Hash();
     100                //routerHash.readBytes(in);
     101                Hash routerHash = Hash.create(in);
    100102                setRouter(routerHash);
    101103                break;
    102104            case FLAG_MODE_TUNNEL:
    103                 Hash tunnelRouterHash = new Hash();
    104                 tunnelRouterHash.readBytes(in);
     105                //Hash tunnelRouterHash = new Hash();
     106                //tunnelRouterHash.readBytes(in);
     107                Hash tunnelRouterHash = Hash.create(in);
    105108                setRouter(tunnelRouterHash);
    106109                TunnelId id = new TunnelId();
     
    141144                break;
    142145            case FLAG_MODE_DESTINATION:
    143                 byte destHash[] = new byte[Hash.HASH_LENGTH];
    144                 System.arraycopy(data, cur, destHash, 0, Hash.HASH_LENGTH);
     146                //byte destHash[] = new byte[Hash.HASH_LENGTH];
     147                //System.arraycopy(data, cur, destHash, 0, Hash.HASH_LENGTH);
     148                Hash dh = Hash.create(data, cur);
    145149                cur += Hash.HASH_LENGTH;
    146                 setDestination(new Hash(destHash));
     150                setDestination(dh);
    147151                break;
    148152            case FLAG_MODE_ROUTER:
    149                 byte routerHash[] = new byte[Hash.HASH_LENGTH];
    150                 System.arraycopy(data, cur, routerHash, 0, Hash.HASH_LENGTH);
     153                //byte routerHash[] = new byte[Hash.HASH_LENGTH];
     154                //System.arraycopy(data, cur, routerHash, 0, Hash.HASH_LENGTH);
     155                Hash rh = Hash.create(data, cur);
    151156                cur += Hash.HASH_LENGTH;
    152                 setRouter(new Hash(routerHash));
     157                setRouter(rh);
    153158                break;
    154159            case FLAG_MODE_TUNNEL:
    155                 byte tunnelRouterHash[] = new byte[Hash.HASH_LENGTH];
    156                 System.arraycopy(data, cur, tunnelRouterHash, 0, Hash.HASH_LENGTH);
     160                //byte tunnelRouterHash[] = new byte[Hash.HASH_LENGTH];
     161                //System.arraycopy(data, cur, tunnelRouterHash, 0, Hash.HASH_LENGTH);
     162                Hash trh = Hash.create(data, cur);
    157163                cur += Hash.HASH_LENGTH;
    158                 setRouter(new Hash(tunnelRouterHash));
     164                setRouter(trh);
    159165                setTunnelId(new TunnelId(DataHelper.fromLong(data, cur, 4)));
    160166                cur += 4;
  • router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java

    r5d6edad r08a3165  
    1414import java.util.zip.GZIPOutputStream;
    1515
     16import net.i2p.data.Base64;
    1617import net.i2p.data.DataFormatException;
    1718import net.i2p.data.DataHelper;
     
    291292        }
    292293    }
    293    
     294
    294295    private Hash getHash(String name) {
    295296        String key = name.substring("profile-".length());
    296297        key = key.substring(0, key.length() - ".dat".length());
    297         Hash h = new Hash();
     298        //Hash h = new Hash();
    298299        try {
    299             h.fromBase64(key);
     300            //h.fromBase64(key);
     301            byte[] b = Base64.decode(key);
     302            if (b == null)
     303                return null;
     304            Hash h = Hash.create(b);
    300305            return h;
    301         } catch (DataFormatException dfe) {
     306        } catch (Exception dfe) {
    302307            _log.warn("Invalid base64 [" + key + "]", dfe);
    303308            return null;
  • router/java/src/net/i2p/router/tunnel/FragmentHandler.java

    r5d6edad r08a3165  
    328328        }
    329329        if ( (type == TYPE_ROUTER) || (type == TYPE_TUNNEL) ) {
    330             byte h[] = new byte[Hash.HASH_LENGTH];
    331330            if (offset + Hash.HASH_LENGTH >= preprocessed.length)
    332331                return -1;
    333             System.arraycopy(preprocessed, offset, h, 0, Hash.HASH_LENGTH);
    334             router = new Hash(h);
     332            //byte h[] = new byte[Hash.HASH_LENGTH];
     333            //System.arraycopy(preprocessed, offset, h, 0, Hash.HASH_LENGTH);
     334            //router = new Hash(h);
     335            router = Hash.create(preprocessed, offset);
    335336            offset += Hash.HASH_LENGTH;
    336337        }
Note: See TracChangeset for help on using the changeset viewer.