gui/pkg/display/p2p.go
Snider 9eb87cdc68
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Harden p2p bridge cleanup
2026-04-17 20:12:18 +01:00

42 lines
898 B
Go

package display
import (
"context"
core "dappco.re/go/core"
"forge.lthn.ai/core/gui/pkg/p2p"
)
func (s *Service) attachP2PBridge() {
router, ok := core.ServiceFor[*p2p.Service](s.Core(), "p2p")
if !ok || router == nil {
return
}
if s.p2pBridgeCancel != nil {
s.p2pBridgeCancel()
s.p2pBridgeCancel = nil
}
ctx, cancel := context.WithCancel(context.Background())
if err := router.Subscribe(ctx, "display", func(envelope p2p.Envelope) {
if s.events == nil {
return
}
s.events.Emit(Event{
Type: EventCustomEvent,
Data: map[string]any{
"source": "p2p",
"topic": envelope.Topic,
"route": envelope.Route,
"sender_id": envelope.SenderID,
"payload": envelope.Payload,
},
})
}); err != nil {
cancel()
if s.app != nil {
s.app.Logger().Info("p2p bridge subscribe failed", "err", err)
}
return
}
s.p2pBridgeCancel = cancel
}