[tor-commits] [metrics-lib/master] Parse transport lines in bridge extra-infos.

karsten at torproject.org karsten at torproject.org
Fri Jun 29 11:55:00 UTC 2012


commit ca201de75e451e1131e1ae68f7cdfb24280c36be
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Fri Jun 29 13:54:31 2012 +0200

    Parse transport lines in bridge extra-infos.
---
 .../torproject/descriptor/ExtraInfoDescriptor.java |    4 ++++
 .../descriptor/impl/ExtraInfoDescriptorImpl.java   |   15 +++++++++++++++
 2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/src/org/torproject/descriptor/ExtraInfoDescriptor.java b/src/org/torproject/descriptor/ExtraInfoDescriptor.java
index 229b075..05707a5 100644
--- a/src/org/torproject/descriptor/ExtraInfoDescriptor.java
+++ b/src/org/torproject/descriptor/ExtraInfoDescriptor.java
@@ -237,5 +237,9 @@ public interface ExtraInfoDescriptor extends Descriptor {
    * have connected from that country rounded up to the nearest multiple
    * of 8, or null if no bridge statistics are included. */
   public SortedMap<String, Integer> getBridgeIps();
+
+  /* Return the (possibly empty) list of transports supported by this
+   * bridge. */
+  public List<String> getTransports();
 }
 
diff --git a/src/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java b/src/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
index f6e0fd9..0a0bf1a 100644
--- a/src/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
+++ b/src/org/torproject/descriptor/impl/ExtraInfoDescriptorImpl.java
@@ -166,6 +166,8 @@ public class ExtraInfoDescriptorImpl extends DescriptorImpl
         this.parseBridgeStatsEndLine(line, lineNoOpt, partsNoOpt);
       } else if (keyword.equals("bridge-ips")) {
         this.parseBridgeStatsIpsLine(line, lineNoOpt, partsNoOpt);
+      } else if (keyword.equals("transport")) {
+        this.parseTransportLine(line, lineNoOpt, partsNoOpt);
       } else if (keyword.equals("router-signature")) {
         this.parseRouterSignatureLine(line, lineNoOpt, partsNoOpt);
       } else if (keyword.equals("router-digest")) {
@@ -567,6 +569,14 @@ public class ExtraInfoDescriptorImpl extends DescriptorImpl
         partsNoOpt, 1, 2);
   }
 
+  private void parseTransportLine(String line, String lineNoOpt,
+      String[] partsNoOpt) throws DescriptorParseException {
+    if (partsNoOpt.length != 2) {
+      throw new DescriptorParseException("Illegal line '" + line + "'.");
+    }
+    this.transports.add(partsNoOpt[1]);
+  }
+
   private void parseRouterSignatureLine(String line, String lineNoOpt,
       String[] partsNoOpt) throws DescriptorParseException {
     if (!lineNoOpt.equals("router-signature")) {
@@ -869,5 +879,10 @@ public class ExtraInfoDescriptorImpl extends DescriptorImpl
     return this.bridgeIps == null ? null :
         new TreeMap<String, Integer>(this.bridgeIps);
   }
+
+  private List<String> transports = new ArrayList<String>();
+  public List<String> getTransports() {
+    return new ArrayList<String>(this.transports);
+  }
 }
 



More information about the tor-commits mailing list