[tor-commits] [metrics-db/master] Add @type annotations to relay descriptors.

karsten at torproject.org karsten at torproject.org
Wed May 16 10:33:22 UTC 2012


commit 442489f142fc60a783a524e7480d229a836214a0
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Fri May 11 15:24:18 2012 +0200

    Add @type annotations to relay descriptors.
---
 src/org/torproject/ernie/db/ArchiveWriter.java |   26 ++++++++++++++++++-----
 1 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/org/torproject/ernie/db/ArchiveWriter.java b/src/org/torproject/ernie/db/ArchiveWriter.java
index 9d9e4de..0cc983a 100644
--- a/src/org/torproject/ernie/db/ArchiveWriter.java
+++ b/src/org/torproject/ernie/db/ArchiveWriter.java
@@ -31,7 +31,8 @@ public class ArchiveWriter {
         DescriptorSourceFactory.createDescriptorParser();
   }
 
-  private boolean store(byte[] data, String filename) {
+  private boolean store(byte[] typeAnnotation, byte[] data,
+      String filename) {
     try {
       File file = new File(filename);
       if (!file.exists()) {
@@ -45,6 +46,9 @@ public class ArchiveWriter {
         file.getParentFile().mkdirs();
         BufferedOutputStream bos = new BufferedOutputStream(
             new FileOutputStream(file));
+        if (data.length > 0 && data[0] != '@') {
+          bos.write(typeAnnotation, 0, typeAnnotation.length);
+        }
         bos.write(data, 0, data.length);
         bos.close();
         return true;
@@ -59,17 +63,21 @@ public class ArchiveWriter {
     return false;
   }
 
+  private static final byte[] CONSENSUS_ANNOTATION =
+      "@type network-status-consensus-3 1.0\n".getBytes();
   public void storeConsensus(byte[] data, long validAfter) {
     SimpleDateFormat printFormat = new SimpleDateFormat(
         "yyyy/MM/dd/yyyy-MM-dd-HH-mm-ss");
     printFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
     String filename = outputDirectory + "/consensus/"
         + printFormat.format(new Date(validAfter)) + "-consensus";
-    if (this.store(data, filename)) {
+    if (this.store(CONSENSUS_ANNOTATION, data, filename)) {
       this.storedConsensuses++;
     }
   }
 
+  private static final byte[] VOTE_ANNOTATION =
+      "@type network-status-vote-3 1.0\n".getBytes();
   public void storeVote(byte[] data, long validAfter,
       String fingerprint, String digest) {
     SimpleDateFormat printFormat = new SimpleDateFormat(
@@ -78,11 +86,13 @@ public class ArchiveWriter {
     String filename = outputDirectory + "/vote/"
         + printFormat.format(new Date(validAfter)) + "-vote-"
         + fingerprint + "-" + digest;
-    if (this.store(data, filename)) {
+    if (this.store(VOTE_ANNOTATION, data, filename)) {
       this.storedVotes++;
     }
   }
 
+  private static final byte[] CERTIFICATE_ANNOTATION =
+      "@type dir-key-certificate-3 1.0\n".getBytes();
   public void storeCertificate(byte[] data, String fingerprint,
       long published) {
     SimpleDateFormat printFormat = new SimpleDateFormat(
@@ -90,11 +100,13 @@ public class ArchiveWriter {
     printFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
     String filename = outputDirectory + "/certs/"
         + fingerprint + "-" + printFormat.format(new Date(published));
-    if (this.store(data, filename)) {
+    if (this.store(CERTIFICATE_ANNOTATION, data, filename)) {
       this.storedCerts++;
     }
   }
 
+  private static final byte[] SERVER_DESCRIPTOR_ANNOTATION =
+      "@type server-descriptor 1.0\n".getBytes();
   public void storeServerDescriptor(byte[] data, String digest,
       long published) {
     SimpleDateFormat printFormat = new SimpleDateFormat("yyyy/MM/");
@@ -103,11 +115,13 @@ public class ArchiveWriter {
         + printFormat.format(new Date(published))
         + digest.substring(0, 1) + "/" + digest.substring(1, 2) + "/"
         + digest;
-    if (this.store(data, filename)) {
+    if (this.store(SERVER_DESCRIPTOR_ANNOTATION, data, filename)) {
       this.storedServerDescriptors++;
     }
   }
 
+  private static final byte[] EXTRA_INFO_ANNOTATION =
+      "@type extra-info 1.0\n".getBytes();
   public void storeExtraInfoDescriptor(byte[] data,
       String extraInfoDigest, long published) {
     SimpleDateFormat descriptorFormat = new SimpleDateFormat("yyyy/MM/");
@@ -117,7 +131,7 @@ public class ArchiveWriter {
         + extraInfoDigest.substring(0, 1) + "/"
         + extraInfoDigest.substring(1, 2) + "/"
         + extraInfoDigest;
-    if (this.store(data, filename)) {
+    if (this.store(EXTRA_INFO_ANNOTATION, data, filename)) {
       this.storedExtraInfoDescriptors++;
     }
   }





More information about the tor-commits mailing list