mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-08 05:47:07 +09:00
WIP periodic interface check
This commit is contained in:
parent
95d33a9137
commit
cf5be48dce
6 changed files with 80 additions and 58 deletions
2
go.mod
2
go.mod
|
@ -190,6 +190,7 @@ require (
|
|||
github.com/ipfs/go-ipfs-provider v0.8.1 // indirect
|
||||
github.com/ipfs/go-ipfs-util v0.0.2 // indirect
|
||||
github.com/ipfs/go-ipld-legacy v0.1.1 // indirect
|
||||
github.com/ipfs/go-libipfs v0.3.0 // indirect
|
||||
github.com/ipfs/go-metrics-interface v0.0.1 // indirect
|
||||
github.com/ipfs/go-peertaskqueue v0.8.0 // indirect
|
||||
github.com/ipfs/go-verifcid v0.0.2 // indirect
|
||||
|
@ -269,7 +270,6 @@ require (
|
|||
go.uber.org/fx v1.18.2 // indirect
|
||||
golang.org/x/crypto v0.5.0 // indirect
|
||||
golang.org/x/image v0.0.0-20200119044424-58c23975cae1 // indirect
|
||||
golang.org/x/mobile v0.0.0-20221110043201-43a038452099 // indirect
|
||||
golang.org/x/mod v0.7.0 // indirect
|
||||
golang.org/x/sync v0.1.0 // indirect
|
||||
golang.org/x/sys v0.4.0 // indirect
|
||||
|
|
27
go.sum
27
go.sum
|
@ -83,12 +83,6 @@ github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYU
|
|||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
||||
github.com/anytypeio/amplitude-go v0.0.0-20211130222238-8d16496a9b31 h1:fCXBjRAxXq4pKyfH8xmYPfjL/E6v5zTTxYrIKDz8ufw=
|
||||
github.com/anytypeio/amplitude-go v0.0.0-20211130222238-8d16496a9b31/go.mod h1:uX6FcwR+wTQWzFszLXQxeKfNeittg1408V7pVAtLKqQ=
|
||||
github.com/anytypeio/any-sync v0.0.8-0.20230204164120-d3362ba85e19 h1:QT0wvSV6MN8FoIfVutJwh1Olkc5Al1psCNuCI+nh10k=
|
||||
github.com/anytypeio/any-sync v0.0.8-0.20230204164120-d3362ba85e19/go.mod h1:v11BGtMFMdQ9RaYggyI/CwsS5K6CnsCoO89a6WEcVEA=
|
||||
github.com/anytypeio/any-sync v0.0.8-0.20230205142955-b2140f3c30de h1:1fAnGfxNPHNeyuDIG5rKkCTqF8AB2a2l3WcGGzZReYM=
|
||||
github.com/anytypeio/any-sync v0.0.8-0.20230205142955-b2140f3c30de/go.mod h1:v11BGtMFMdQ9RaYggyI/CwsS5K6CnsCoO89a6WEcVEA=
|
||||
github.com/anytypeio/any-sync v0.0.8 h1:2bJJBOaYZHeQnx2x4UHuqqqTbpsbwP3KgoEblfi/OSg=
|
||||
github.com/anytypeio/any-sync v0.0.8/go.mod h1:rFQjYtpQOYdhqjQxolTNsoW/OXR3CEPFXGrAiUR5/i0=
|
||||
github.com/anytypeio/any-sync v0.0.9-0.20230208165349-75214ee231e6 h1:4q17xwyu38G0bUsZDRTen40bfN3ppVTulhBuaQoKqWg=
|
||||
github.com/anytypeio/any-sync v0.0.9-0.20230208165349-75214ee231e6/go.mod h1:rFQjYtpQOYdhqjQxolTNsoW/OXR3CEPFXGrAiUR5/i0=
|
||||
github.com/anytypeio/go-chash v0.0.2 h1:BSpyMC3HXNkf2eosQrHM4svov0DrvxL9tb4gnHbdmbA=
|
||||
|
@ -389,8 +383,7 @@ github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8=
|
|||
github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
|
||||
github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo=
|
||||
github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
|
||||
github.com/goccy/go-graphviz v0.0.9 h1:s/FMMJ1Joj6La3S5ApO3Jk2cwM4LpXECC2muFx3IPQQ=
|
||||
github.com/goccy/go-graphviz v0.0.9/go.mod h1:wXVsXxmyMQU6TN3zGRttjNn3h+iCAS7xQFC6TlNvLhk=
|
||||
github.com/goccy/go-graphviz v0.1.0 h1:6OqQoQ5PeAiHYe/YcusyeulqBrOkUb16HQ4ctRdyVUU=
|
||||
github.com/goccy/go-graphviz v0.1.0/go.mod h1:wXVsXxmyMQU6TN3zGRttjNn3h+iCAS7xQFC6TlNvLhk=
|
||||
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
|
@ -596,8 +589,8 @@ github.com/ipfs/go-bitswap v0.11.0 h1:j1WVvhDX1yhG32NTC9xfxnqycqYIlhzEzLXG/cU1Hy
|
|||
github.com/ipfs/go-bitswap v0.11.0/go.mod h1:05aE8H3XOU+LXpTedeAS0OZpcO1WFsj5niYQH9a1Tmk=
|
||||
github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc=
|
||||
github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY=
|
||||
github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc=
|
||||
github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk=
|
||||
github.com/ipfs/go-block-format v0.1.1 h1:129vSO3zwbsYADcyQWcOYiuCpAqt462SFfqFHdFJhhI=
|
||||
github.com/ipfs/go-block-format v0.1.1/go.mod h1:+McEIT+g52p+zz5xGAABGSOKrzmrdX97bc0USBdWPUs=
|
||||
github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7sYcvYaKbop39M=
|
||||
github.com/ipfs/go-blockservice v0.2.1/go.mod h1:k6SiwmgyYgs4M/qt+ww6amPeUH9EISLRBnvUurKJhi8=
|
||||
|
@ -698,6 +691,8 @@ github.com/ipfs/go-ipld-legacy v0.1.1 h1:BvD8PEuqwBHLTKqlGFTHSwrwFOMkVESEvwIYwR2
|
|||
github.com/ipfs/go-ipld-legacy v0.1.1/go.mod h1:8AyKFCjgRPsQFf15ZQgDB8Din4DML/fOmKZkkFkrIEg=
|
||||
github.com/ipfs/go-ipns v0.3.0 h1:ai791nTgVo+zTuq2bLvEGmWP1M0A6kGTXUsgv/Yq67A=
|
||||
github.com/ipfs/go-ipns v0.3.0/go.mod h1:3cLT2rbvgPZGkHJoPO1YMJeh6LtkxopCkKFcio/wE24=
|
||||
github.com/ipfs/go-libipfs v0.3.0 h1:YvzFWGcl88eiz2tjOheNqaeQseH+dW3fUKrSaHOG/dU=
|
||||
github.com/ipfs/go-libipfs v0.3.0/go.mod h1:pSUHZ5qPJTAidsxe9bAeHp3KIiw2ODEW2a2kM3v+iXI=
|
||||
github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM=
|
||||
github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk=
|
||||
github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A=
|
||||
|
@ -707,8 +702,7 @@ github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JP
|
|||
github.com/ipfs/go-merkledag v0.2.3/go.mod h1:SQiXrtSts3KGNmgOzMICy5c0POOpUNQLvB3ClKnBAlk=
|
||||
github.com/ipfs/go-merkledag v0.3.2/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M=
|
||||
github.com/ipfs/go-merkledag v0.5.1/go.mod h1:cLMZXx8J08idkp5+id62iVftUQV+HlYJ3PIhDfZsjA4=
|
||||
github.com/ipfs/go-merkledag v0.8.1 h1:N3yrqSre/ffvdwtHL4MXy0n7XH+VzN8DlzDrJySPa94=
|
||||
github.com/ipfs/go-merkledag v0.8.1/go.mod h1:uYUlWE34GhbcTjGuUDEcdPzsEtOdnOupL64NgSRjmWI=
|
||||
github.com/ipfs/go-merkledag v0.9.0 h1:DFC8qZ96Dz1hMT7dtIpcY524eFFDiEWAF8hNJHWW2pk=
|
||||
github.com/ipfs/go-merkledag v0.9.0/go.mod h1:bPHqkHt5OZ0p1n3iqPeDiw2jIBkjAytRjS3WSBwjq90=
|
||||
github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg=
|
||||
github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY=
|
||||
|
@ -719,8 +713,7 @@ github.com/ipfs/go-peertaskqueue v0.7.0/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68
|
|||
github.com/ipfs/go-peertaskqueue v0.8.0 h1:JyNO144tfu9bx6Hpo119zvbEL9iQ760FHOiJYsUjqaU=
|
||||
github.com/ipfs/go-peertaskqueue v0.8.0/go.mod h1:cz8hEnnARq4Du5TGqiWKgMr/BOSQ5XOgMOh1K5YYKKM=
|
||||
github.com/ipfs/go-unixfs v0.2.4/go.mod h1:SUdisfUjNoSDzzhGVxvCL9QO/nKdwXdr+gbMUdqcbYw=
|
||||
github.com/ipfs/go-unixfs v0.4.1 h1:nmJFKvF+khK03PIWyCxxydD/nkQX315NZDcgvRqMXf0=
|
||||
github.com/ipfs/go-unixfs v0.4.1/go.mod h1:2SUDFhUSzrcL408B1qpIkJJ5HznnyTzweViPXUAvkNg=
|
||||
github.com/ipfs/go-unixfs v0.4.2 h1:hdQlsHHK5tek9gC9mjGVua8xyTqC+eopGseCRcbCZNg=
|
||||
github.com/ipfs/go-unixfs v0.4.2/go.mod h1:L+x6JRlFE0PfyMqeoLYVOKLhn5IeZHvNT7ZI51Y9Qyc=
|
||||
github.com/ipfs/go-unixfsnode v1.1.2/go.mod h1:5dcE2x03pyjHk4JjamXmunTMzz+VUtqvPwZjIEkfV6s=
|
||||
github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0=
|
||||
|
@ -1045,8 +1038,7 @@ github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
|
|||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||
github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
|
||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
|
||||
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||
github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0=
|
||||
github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc=
|
||||
|
@ -1445,8 +1437,7 @@ github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvS
|
|||
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ=
|
||||
github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20221213004032-c09a31a7d5e8 h1:wGJHI5UqTlrtrgpA5kaQACNegkEHGhG/6Lmc7QORfqI=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20221213004032-c09a31a7d5e8/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20221220214510-0333c149dec0 h1:obKzQ1ey5AJg5NKjgtTo/CKwLImVP4ETLRcsmzFJ4Qw=
|
||||
github.com/whyrusleeping/cbor-gen v0.0.0-20221220214510-0333c149dec0/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ=
|
||||
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E=
|
||||
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8=
|
||||
|
@ -1597,8 +1588,6 @@ golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPI
|
|||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
golang.org/x/mobile v0.0.0-20221110043201-43a038452099 h1:aIu0lKmfdgtn2uTj7JI2oN4TUrQvgB+wzTPO23bCKt8=
|
||||
golang.org/x/mobile v0.0.0-20221110043201-43a038452099/go.mod h1:aAjjkJNdrh3PMckS4B10TGS2nag27cbKR1y2BpUxsiY=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
|
|
44
net/addrs/common.go
Normal file
44
net/addrs/common.go
Normal file
|
@ -0,0 +1,44 @@
|
|||
package addrs
|
||||
|
||||
import (
|
||||
"golang.org/x/exp/slices"
|
||||
"net"
|
||||
)
|
||||
|
||||
type Interface struct {
|
||||
net.Interface
|
||||
Addrs []InterfaceAddr
|
||||
}
|
||||
|
||||
type InterfaceAddr struct {
|
||||
Ip []byte
|
||||
Prefix int
|
||||
}
|
||||
|
||||
type InterfacesAddrs struct {
|
||||
Interfaces []net.Interface
|
||||
Addrs []net.Addr
|
||||
}
|
||||
|
||||
func (i InterfacesAddrs) Equal(other InterfacesAddrs) bool {
|
||||
if len(other.Interfaces) != len(i.Interfaces) {
|
||||
return false
|
||||
}
|
||||
if len(other.Addrs) != len(i.Addrs) {
|
||||
return false
|
||||
}
|
||||
myStr := getStrings(i)
|
||||
otherStr := getStrings(other)
|
||||
return slices.Equal(myStr, otherStr)
|
||||
}
|
||||
|
||||
func getStrings(i InterfacesAddrs) (allStrings []string) {
|
||||
for _, i := range i.Interfaces {
|
||||
allStrings = append(allStrings, i.Name)
|
||||
}
|
||||
for _, i := range i.Addrs {
|
||||
allStrings = append(allStrings, i.String())
|
||||
}
|
||||
slices.Sort(allStrings)
|
||||
return
|
||||
}
|
|
@ -9,21 +9,6 @@ func SetInterfaceAddrsGetter(getter InterfaceAddrsGetter) {}
|
|||
|
||||
func SetInterfaceGetter(getter InterfaceGetter) {}
|
||||
|
||||
type Interface struct {
|
||||
net.Interface
|
||||
Addrs []InterfaceAddr
|
||||
}
|
||||
|
||||
type InterfaceAddr struct {
|
||||
Ip []byte
|
||||
Prefix int
|
||||
}
|
||||
|
||||
type InterfacesAddrs struct {
|
||||
Interfaces []net.Interface
|
||||
Addrs []net.Addr
|
||||
}
|
||||
|
||||
type InterfaceGetter interface {
|
||||
Interfaces() []Interface
|
||||
}
|
||||
|
|
|
@ -22,21 +22,6 @@ func SetInterfaceGetter(getter InterfaceGetter) {
|
|||
interfaceGetter = getter
|
||||
}
|
||||
|
||||
type InterfaceAddr struct {
|
||||
Ip []byte
|
||||
Prefix int
|
||||
}
|
||||
|
||||
type Interface struct {
|
||||
net.Interface
|
||||
Addrs []InterfaceAddr
|
||||
}
|
||||
|
||||
type InterfacesAddrs struct {
|
||||
Interfaces []net.Interface
|
||||
Addrs []net.Addr
|
||||
}
|
||||
|
||||
type InterfaceGetter interface {
|
||||
Interfaces() []Interface
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"github.com/anytypeio/any-sync/app"
|
||||
"github.com/anytypeio/any-sync/app/logger"
|
||||
"github.com/anytypeio/any-sync/net"
|
||||
"github.com/anytypeio/any-sync/util/periodicsync"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/anytype/config"
|
||||
"github.com/anytypeio/go-anytype-middleware/net/addrs"
|
||||
"github.com/libp2p/zeroconf/v2"
|
||||
|
@ -49,6 +50,7 @@ type localDiscovery struct {
|
|||
cancel context.CancelFunc
|
||||
closeWait sync.WaitGroup
|
||||
interfacesAddrs addrs.InterfacesAddrs
|
||||
periodicCheck periodicsync.PeriodicSync
|
||||
|
||||
notifier Notifier
|
||||
}
|
||||
|
@ -65,6 +67,7 @@ func (l *localDiscovery) Init(a *app.App) (err error) {
|
|||
l.peerId = a.MustComponent(accountservice.CName).(accountservice.Service).Account().PeerId
|
||||
addrs := a.MustComponent(config.CName).(net.ConfigGetter).GetNet().Server.ListenAddrs
|
||||
l.port, err = getPort(addrs)
|
||||
l.periodicCheck = periodicsync.NewPeriodicSync(30, 0, l.checkAddrs, log)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -72,11 +75,7 @@ func (l *localDiscovery) Run(ctx context.Context) (err error) {
|
|||
if l.port == 0 {
|
||||
return
|
||||
}
|
||||
l.ctx, l.cancel = context.WithCancel(ctx)
|
||||
if err = l.startServer(); err != nil {
|
||||
return
|
||||
}
|
||||
l.startQuerying(l.ctx)
|
||||
l.periodicCheck.Run()
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -88,19 +87,39 @@ func (l *localDiscovery) Close(ctx context.Context) (err error) {
|
|||
if len(l.addrs) == 0 {
|
||||
return
|
||||
}
|
||||
l.periodicCheck.Close()
|
||||
l.cancel()
|
||||
if l.server != nil {
|
||||
l.server.Shutdown()
|
||||
l.closeWait.Wait()
|
||||
}
|
||||
l.closeWait.Wait()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (l *localDiscovery) startServer() (err error) {
|
||||
l.interfacesAddrs, err = addrs.GetInterfacesAddrs()
|
||||
func (l *localDiscovery) checkAddrs(ctx context.Context) (err error) {
|
||||
newAddrs, err := addrs.GetInterfacesAddrs()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if newAddrs.Equal(l.interfacesAddrs) && l.server != nil {
|
||||
return
|
||||
}
|
||||
l.interfacesAddrs = newAddrs
|
||||
if l.server != nil {
|
||||
l.cancel()
|
||||
l.server.Shutdown()
|
||||
l.closeWait.Wait()
|
||||
l.closeWait = sync.WaitGroup{}
|
||||
}
|
||||
l.ctx, l.cancel = context.WithCancel(ctx)
|
||||
if err = l.startServer(); err != nil {
|
||||
return
|
||||
}
|
||||
l.startQuerying(l.ctx)
|
||||
return
|
||||
}
|
||||
|
||||
func (l *localDiscovery) startServer() (err error) {
|
||||
var ips []string
|
||||
for _, addr := range l.interfacesAddrs.Addrs {
|
||||
ip := strings.Split(addr.String(), "/")[0]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue