Author: j16sdiz
Date: 2008-06-24 14:29:10 +0000 (Tue, 24 Jun 2008)
New Revision: 20646

Modified:
   
branches/saltedhashstore/freenet/src/freenet/store/SaltedHashFreenetStore.java
Log:
add "generation" (perpare for better filter rebuild and key count)


Modified: 
branches/saltedhashstore/freenet/src/freenet/store/SaltedHashFreenetStore.java
===================================================================
--- 
branches/saltedhashstore/freenet/src/freenet/store/SaltedHashFreenetStore.java  
    2008-06-24 14:28:47 UTC (rev 20645)
+++ 
branches/saltedhashstore/freenet/src/freenet/store/SaltedHashFreenetStore.java  
    2008-06-24 14:29:10 UTC (rev 20646)
@@ -76,6 +76,7 @@
        private final int dataBlockLength;
        private final Random random;
        private long storeSize;
+       private byte generation;

        public static SaltedHashFreenetStore construct(File baseDir, String 
name, StoreCallback callback, Random random,
                        long maxKeys, SemiOrderedShutdownHook shutdownHook) 
throws IOException {
@@ -305,7 +306,7 @@

        /**
         * Data entry
-        *
+        * 
         * <pre>
         *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         *       |0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|
@@ -320,9 +321,9 @@
         *  +----+---------------+---------------+
         *  |0040|       Plain Routing Key       |
         *  |0050| (Only if ENTRY_FLAG_PLAINKEY) |
-        *  +----+-------------------------------+
-        *  |0060|            Reserved           |
-        *  +----+-------------------------------+
+        *  +----+-+-----------------------------+
+        *  |0060|G|          Reserved           |
+        *  +----+-+-----------------------------+
         *  |0070|       Encrypted Header        |
         *  |  . + - - - - - - - - - - - - - - - +
         *  |  . |        Encrypted Data         |
@@ -330,7 +331,7 @@
         *  |    |           Padding             |
         *  +----+-------------------------------+
         * </pre>
-        *
+        * 
         * Total length is padded to multiple of 512bytes. All reserved bytes 
should be zero when
         * written, ignored on read.
         */
@@ -340,11 +341,13 @@
                private byte[] dataEncryptIV;
                private long flag;
                private long storeSize;
+               private byte generation;
                private byte[] header;
                private byte[] data;
-
+               
                private boolean isEncrypted;
                public long curOffset = -1;
+               

                /**
                 * Create a new entry
@@ -358,6 +361,7 @@

                        flag = ENTRY_FLAG_OCCUPIED;
                        storeSize = SaltedHashFreenetStore.this.storeSize;
+                       generation = SaltedHashFreenetStore.this.generation;

                        // header/data will be overwritten in 
encrypt()/decrypt(),
                        // let's make a copy here
@@ -405,6 +409,9 @@
                                in.get(plainRoutingKey);
                        }

+                       in.position(0x60);
+                       generation = in.get();
+                       
                        // reserved bytes
                        in.position((int) ENTRY_HEADER_LENGTH);

@@ -431,7 +438,10 @@
                        if (OPTION_SAVE_PLAINKEY && plainRoutingKey != null) {
                                out.put(plainRoutingKey);
                        }
-
+                       
+                       out.position(0x60);
+                       out.put(generation);
+                       
                        // reserved bytes
                        out.position((int) ENTRY_HEADER_LENGTH);

@@ -753,7 +763,7 @@
        // ------------- Configuration
        /**
         * Configuration File
-        *
+        * 
         * <pre>
         *       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         *       |0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|
@@ -761,9 +771,11 @@
         *  |0000|             Salt              |
         *  +----+---------------+---------------+
         *  |0010|   Store Size  | prevStoreSize |
-        *  +----+---------------+---------------+
-        *  |0010| Est Key Count |    reserved   |
-        *  +----+---------------+---------------+
+        *  +----+---------------+-+-------------+
+        *  |0020| Est Key Count |G|  reserved   |
+        *  +----+---------------+-+-------------+
+        *  
+        *  G = Generation
         * </pre>
         */
        private final File configFile;
@@ -789,7 +801,7 @@
                        storeSize = raf.readLong();
                        prevStoreSize = raf.readLong();
                        keyCount.set(raf.readLong());
-                       raf.readLong();
+                       generation = raf.readByte();

                        raf.close();
                }
@@ -810,7 +822,8 @@
                        raf.writeLong(storeSize);
                        raf.writeLong(prevStoreSize);
                        raf.writeLong(keyCount.get());
-                       raf.writeLong(0);
+                       raf.write(generation);
+                       raf.setLength(0x30);

                        raf.close();



Reply via email to