[tor-commits] [onionoo/master] Store family fingerprints more efficiently.

karsten at torproject.org karsten at torproject.org
Tue Nov 4 09:22:57 UTC 2014


commit b1750dc6a0bb3b4016214c44291da318e74b76d9
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Sat Oct 25 15:42:04 2014 +0200

    Store family fingerprints more efficiently.
---
 .../org/torproject/onionoo/docs/NodeStatus.java    |   32 ++++++++++++++++----
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/torproject/onionoo/docs/NodeStatus.java b/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
index 7f635b6..3a93030 100644
--- a/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
+++ b/src/main/java/org/torproject/onionoo/docs/NodeStatus.java
@@ -4,6 +4,7 @@ package org.torproject.onionoo.docs;
 
 import java.util.Arrays;
 import java.util.BitSet;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -316,13 +317,33 @@ public class NodeStatus extends Document {
     return this.recommendedVersion;
   }
 
-  private SortedSet<String> familyFingerprints;
+  private String[] familyFingerprints;
   public void setFamilyFingerprints(
       SortedSet<String> familyFingerprints) {
-    this.familyFingerprints = familyFingerprints;
+    this.familyFingerprints = collectionToStringArray(familyFingerprints);
   }
   public SortedSet<String> getFamilyFingerprints() {
-    return this.familyFingerprints;
+    return stringArrayToSortedSet(this.familyFingerprints);
+  }
+
+  private static String[] collectionToStringArray(
+      Collection<String> collection) {
+    String[] stringArray = null;
+    if (collection != null && !collection.isEmpty()) {
+      stringArray = new String[collection.size()];
+      int i = 0;
+      for (String string : collection) {
+        stringArray[i++] = string;
+      }
+    }
+    return stringArray;
+  }
+  private SortedSet<String> stringArrayToSortedSet(String[] stringArray) {
+    SortedSet<String> sortedSet = new TreeSet<String>();
+    if (stringArray != null) {
+      sortedSet.addAll(Arrays.asList(stringArray));
+    }
+    return sortedSet;
   }
 
   public NodeStatus(boolean isRelay, String nickname, String fingerprint,
@@ -372,7 +393,7 @@ public class NodeStatus extends Document {
     this.aSNumber = aSNumber;
     this.contact = contact;
     this.recommendedVersion = recommendedVersion;
-    this.familyFingerprints = familyFingerprints;
+    this.setFamilyFingerprints(familyFingerprints);
   }
 
   public static NodeStatus fromString(String documentString) {
@@ -580,8 +601,7 @@ public class NodeStatus extends Document {
     sb.append("\t" + (this.contact != null ? this.contact : ""));
     sb.append("\t" + (this.recommendedVersion == null ? "null" :
         this.recommendedVersion ? "true" : "false"));
-    if (this.familyFingerprints == null ||
-        this.familyFingerprints.isEmpty()) {
+    if (this.familyFingerprints == null) {
       sb.append("\tnull");
     } else {
       sb.append("\t");





More information about the tor-commits mailing list