You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuweni.apache.org by to...@apache.org on 2020/05/09 06:30:15 UTC

[incubator-tuweni] 03/03: reuse the resolver across visits

This is an automated email from the ASF dual-hosted git repository.

toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git

commit cf5c7ed3516a516075ad3a3ea844f7275747b0e0
Author: Antoine Toulme <an...@lunar-ocean.com>
AuthorDate: Fri May 8 23:29:55 2020 -0700

    reuse the resolver across visits
---
 .../kotlin/org/apache/tuweni/discovery/DNSDaemon.kt   | 19 +++++++++++--------
 .../kotlin/org/apache/tuweni/discovery/DNSResolver.kt |  6 ++++--
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSDaemon.kt b/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSDaemon.kt
index 17b07f3..afead4d 100644
--- a/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSDaemon.kt
+++ b/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSDaemon.kt
@@ -17,6 +17,8 @@
 package org.apache.tuweni.discovery
 
 import org.apache.tuweni.devp2p.EthereumNodeRecord
+import org.xbill.DNS.Resolver
+import org.xbill.DNS.SimpleResolver
 import java.util.Timer
 import java.util.TimerTask
 import java.util.concurrent.atomic.AtomicReference
@@ -28,12 +30,14 @@ import java.util.concurrent.atomic.AtomicReference
  * @param seq the sequence number of the root record. If the root record seq is higher, proceed with visit.
  * @param enrLink the ENR link to start with, of the form enrtree://PUBKEY@domain
  * @param period the period at which to poll DNS records
+ * @param resolver
  */
 public class DNSDaemon @JvmOverloads constructor(
   private val dnsServer: String? = null,
   private val seq: Long = 0,
   private val enrLink: String,
-  private val period: Long = 60000L
+  private val period: Long = 60000L,
+  private val resolver: Resolver = SimpleResolver(dnsServer)
 ) {
 
   /**
@@ -45,7 +49,7 @@ public class DNSDaemon @JvmOverloads constructor(
   private val records = AtomicReference<EthereumNodeRecord>()
 
   init {
-    timer.scheduleAtFixedRate(DNSTimerTask(dnsServer, seq, enrLink, this::updateRecords), 0, period)
+    timer.scheduleAtFixedRate(DNSTimerTask(resolver, seq, enrLink, this::updateRecords), 0, period)
   }
 
   private fun updateRecords(records: List<EthereumNodeRecord>) {
@@ -61,15 +65,14 @@ public class DNSDaemon @JvmOverloads constructor(
 }
 
 class DNSTimerTask(
-  private val dnsServer: String? = null,
-  private var seq: Long,
+  private val resolver: Resolver,
+  private val seq: Long,
   private val enrLink: String,
-  private val records: (List<EthereumNodeRecord>) -> Unit
+  private val records: (List<EthereumNodeRecord>) -> Unit,
+  private val dnsResolver: DNSResolver = DNSResolver(null, seq, resolver)
 ) : TimerTask() {
 
   override fun run() {
-    val resolver = DNSResolver(dnsServer, seq)
-    records(resolver.collectAll(enrLink))
-    seq = resolver.seq
+    records(dnsResolver.collectAll(enrLink))
   }
 }
diff --git a/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSResolver.kt b/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSResolver.kt
index 503715d..c61f621 100644
--- a/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSResolver.kt
+++ b/dns-discovery/src/main/kotlin/org/apache/tuweni/discovery/DNSResolver.kt
@@ -40,6 +40,7 @@ import org.xbill.DNS.DClass
 import org.xbill.DNS.Message
 import org.xbill.DNS.Name
 import org.xbill.DNS.Record
+import org.xbill.DNS.Resolver
 import org.xbill.DNS.Section
 import org.xbill.DNS.SimpleResolver
 import org.xbill.DNS.Type
@@ -54,7 +55,8 @@ import org.xbill.DNS.WireParseException
 
 public class DNSResolver @JvmOverloads constructor(
   private val dnsServer: String? = null,
-  var seq: Long = 0
+  var seq: Long = 0,
+  private val resolver: Resolver = SimpleResolver(dnsServer)
 ) {
 
   companion object {
@@ -138,7 +140,7 @@ public class DNSResolver @JvmOverloads constructor(
    */
   fun resolveRecordRaw(domainName: String): String? {
     try {
-      val resolver = SimpleResolver(dnsServer)
+
       // required as TXT records are quite big, and dnsjava maxes out UDP payload.
       resolver.setTCP(true)
       val type = Type.TXT


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tuweni.apache.org
For additional commands, e-mail: commits-help@tuweni.apache.org