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