Skip to content

Commit

Permalink
conneced peers counter (#145)
Browse files Browse the repository at this point in the history
  • Loading branch information
GrigoryKrasnochub authored Oct 19, 2024
1 parent 7f644ea commit 44177a4
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
14 changes: 14 additions & 0 deletions cmd/awl-tray/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"fyne.io/systray"
"github.com/gen2brain/beeep"
"github.com/ipfs/go-log/v2"
"github.com/libp2p/go-libp2p/core/network"
"github.com/libp2p/go-libp2p/p2p/host/eventbus"

"github.com/anywherelan/awl"
Expand Down Expand Up @@ -112,8 +113,21 @@ func InitServer() (err error) {
}
app.Api.SetupFrontend(awl.FrontendStatic())

// Peers counter updater
app.P2p.SubscribeConnectionEvents(
func(_ network.Network, conn network.Conn) {
peerID := conn.RemotePeer().String()
refreshPeersCounterOnPeersConnectionChanged(&peerID)
},
func(_ network.Network, conn network.Conn) {
peerID := conn.RemotePeer().String()
refreshPeersCounterOnPeersConnectionChanged(&peerID)
},
)

subscribeToNotifications(app)
refreshMenusOnStartedServer()
refreshPeersCounterOnPeersConnectionChanged(nil)

return nil
}
Expand Down
31 changes: 31 additions & 0 deletions cmd/awl-tray/tray.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (

var (
statusMenu *systray.MenuItem
peersCountMenu *systray.MenuItem
openBrowserMenu *systray.MenuItem
peersMenu *systray.MenuItem
startStopMenu *systray.MenuItem
Expand Down Expand Up @@ -61,6 +62,9 @@ func initTray() {
statusMenu = systray.AddMenuItem("", "")
statusMenu.Disable()

peersCountMenu = systray.AddMenuItem("", "")
peersCountMenu.Disable()

openBrowserMenu = systray.AddMenuItem("Open Web UI", "")
go func() {
for range openBrowserMenu.ClickedCh {
Expand Down Expand Up @@ -134,6 +138,7 @@ func initTray() {

func refreshMenusOnStartedServer() {
statusMenu.SetTitle("Status: running")
setPeersConnectedCounter(0)
openBrowserMenu.Enable()
peersMenu.Enable()
startStopMenu.SetTitle("Stop server")
Expand All @@ -144,12 +149,38 @@ func refreshMenusOnStartedServer() {

func refreshMenusOnStoppedServer() {
statusMenu.SetTitle("Status: stopped")
setPeersConnectedCounter(0)
openBrowserMenu.Disable()
peersMenu.Disable()
startStopMenu.SetTitle("Start server")
restartMenu.Disable()
}

func setPeersConnectedCounter(peers int) {
peersCountMenu.SetTitle(fmt.Sprintf("Peers connected: %d", peers))
}

func refreshPeersCounterOnPeersConnectionChanged(peerID *string) {
app.Conf.RLock()
defer app.Conf.RUnlock()

if peerID != nil {
if _, known := app.Conf.GetPeer(*peerID); !known {
return
}
}

connected := 0
for _, knownPeer := range app.Conf.KnownPeers {
online := app.P2p.IsConnected(knownPeer.PeerId())
if online {
connected++
}
}

setPeersConnectedCounter(connected)
}

var peersSubmenus []*systray.MenuItem
var previousOnlinePeers []string
var previousOfflinePeers []string
Expand Down

0 comments on commit 44177a4

Please sign in to comment.