Mercurial > lbo > hg > dnsoverrpc
changeset 3:4207d32497e2
Enhance client performance too
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Thu, 01 Oct 2020 12:09:02 +0200 |
parents | 9cb09adb4740 |
children | 0a6f3af05763 |
files | client/client.go |
diffstat | 1 files changed, 22 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/client/client.go Thu Oct 01 12:03:33 2020 +0200 +++ b/client/client.go Thu Oct 01 12:09:02 2020 +0200 @@ -2,15 +2,15 @@ import ( "flag" + "fmt" "log" "net" "strconv" - "golang.org/x/net/dns/dnsmessage" - "github.com/dermesser/clusterrpc/client" rpclog "github.com/dermesser/clusterrpc/log" "github.com/dermesser/clusterrpc/securitymanager" + "golang.org/x/net/dns/dnsmessage" ) func extractQueryHost(pkg []byte) (string, error) { @@ -36,10 +36,12 @@ type dnsclient struct { rpccl *client.Client listener *net.UDPConn + n int } func (dc *dnsclient) run() { pkg := make([]byte, 1500) + log.Println("Resolver", dc.n, "ready") for { sz, from, err := dc.listener.ReadFrom(pkg) @@ -47,14 +49,13 @@ log.Print(err) continue } - log.Println("Received", sz, "bytes from", from) hosts, err := extractQueryHost(pkg[0:sz]) if err != nil { log.Print(err) continue } - log.Print(hosts) + log.Println("Resolver", dc.n, "resolving", hosts) resp, err := dc.rpccl.Request(pkg[0:sz], "DNSOverRPC", "Resolve", nil) if err != nil { @@ -102,13 +103,6 @@ log.Fatal(err) } - peer := client.Peer(host, uint(iport)) - ch, err := client.NewChannelAndConnect(peer, sm) - if err != nil { - log.Fatal(err) - } - cl := client.New("Main", ch) - ua, err := net.ResolveUDPAddr("udp", *addr) if err != nil { log.Fatal(err) @@ -117,6 +111,21 @@ if err != nil { log.Fatal(err) } - dc := dnsclient{rpccl: &cl, listener: uc} - dc.run() + + const numClients = 10 + + for i := 0; i < numClients; i++ { + peer := client.Peer(host, uint(iport)) + ch, err := client.NewChannelAndConnect(peer, sm) + if err != nil { + log.Fatal(err) + } + cl := client.New(fmt.Sprintf("Resolver%d", i), ch) + dc := dnsclient{rpccl: &cl, listener: uc, n: i} + if i < numClients-1 { + go dc.run() + } else { + dc.run() + } + } }