aboutsummaryrefslogtreecommitdiff
path: root/cmd/dendrite-demo-pinecone
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2021-06-14 13:13:07 +0100
committerNeil Alexander <neilalexander@users.noreply.github.com>2021-06-14 13:13:07 +0100
commitbd9dec8e066ebf9af6b25b733c8b4fecd67dddcf (patch)
tree35a45e3854c98ea8df739f8ea3941de0598c9c8b /cmd/dendrite-demo-pinecone
parent2c9a390fa67aa80bd8cfffb02b20739d0b1807d8 (diff)
Pinecone demo updates
Diffstat (limited to 'cmd/dendrite-demo-pinecone')
-rw-r--r--cmd/dendrite-demo-pinecone/main.go37
1 files changed, 16 insertions, 21 deletions
diff --git a/cmd/dendrite-demo-pinecone/main.go b/cmd/dendrite-demo-pinecone/main.go
index 7851fdb1..f40f9190 100644
--- a/cmd/dendrite-demo-pinecone/main.go
+++ b/cmd/dendrite-demo-pinecone/main.go
@@ -23,7 +23,6 @@ import (
"fmt"
"io/ioutil"
"log"
- "math"
"net"
"net/http"
"os"
@@ -48,12 +47,11 @@ import (
"github.com/matrix-org/dendrite/setup/config"
"github.com/matrix-org/dendrite/userapi"
"github.com/matrix-org/gomatrixserverlib"
- "go.uber.org/atomic"
pineconeMulticast "github.com/matrix-org/pinecone/multicast"
+ "github.com/matrix-org/pinecone/router"
pineconeRouter "github.com/matrix-org/pinecone/router"
pineconeSessions "github.com/matrix-org/pinecone/sessions"
- pineconeTypes "github.com/matrix-org/pinecone/types"
"github.com/sirupsen/logrus"
)
@@ -123,27 +121,23 @@ func main() {
pMulticast := pineconeMulticast.NewMulticast(logger, pRouter)
pMulticast.Start()
- var staticPeerAttempts atomic.Uint32
- var connectToStaticPeer func()
- connectToStaticPeer = func() {
- uri := *instancePeer
- if uri == "" {
- return
+ connectToStaticPeer := func() {
+ attempt := func() {
+ if pRouter.PeerCount(router.PeerTypeRemote) == 0 {
+ uri := *instancePeer
+ if uri == "" {
+ return
+ }
+ if err := conn.ConnectToPeer(pRouter, uri); err != nil {
+ logrus.WithError(err).Error("Failed to connect to static peer")
+ }
+ }
}
- if err := conn.ConnectToPeer(pRouter, uri); err != nil {
- exp := time.Second * time.Duration(math.Exp2(float64(staticPeerAttempts.Inc())))
- time.AfterFunc(exp, connectToStaticPeer)
- } else {
- staticPeerAttempts.Store(0)
+ for {
+ attempt()
+ time.Sleep(time.Second * 5)
}
}
- pRouter.SetDisconnectedCallback(func(port pineconeTypes.SwitchPortID, public pineconeTypes.PublicKey, peertype int, err error) {
- if peertype == pineconeRouter.PeerTypeRemote && err != nil {
- staticPeerAttempts.Store(0)
- time.AfterFunc(time.Second, connectToStaticPeer)
- }
- })
- go connectToStaticPeer()
cfg := &config.Dendrite{}
cfg.Defaults()
@@ -257,6 +251,7 @@ func main() {
Handler: pMux,
}
+ go connectToStaticPeer()
go func() {
pubkey := pRouter.PublicKey()
logrus.Info("Listening on ", hex.EncodeToString(pubkey[:]))