mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-09 07:15:15 +02:00
[client] Add UI client event notifications (#3207)
This commit is contained in:
36
client/server/event.go
Normal file
36
client/server/event.go
Normal file
@ -0,0 +1,36 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/netbirdio/netbird/client/proto"
|
||||
)
|
||||
|
||||
func (s *Server) SubscribeEvents(req *proto.SubscribeRequest, stream proto.DaemonService_SubscribeEventsServer) error {
|
||||
subscription := s.statusRecorder.SubscribeToEvents()
|
||||
defer func() {
|
||||
s.statusRecorder.UnsubscribeFromEvents(subscription)
|
||||
log.Debug("client unsubscribed from events")
|
||||
}()
|
||||
|
||||
log.Debug("client subscribed to events")
|
||||
|
||||
for {
|
||||
select {
|
||||
case event := <-subscription.Events():
|
||||
if err := stream.Send(event); err != nil {
|
||||
log.Warnf("error sending event to %v: %v", req, err)
|
||||
return err
|
||||
}
|
||||
case <-stream.Context().Done():
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) GetEvents(context.Context, *proto.GetEventsRequest) (*proto.GetEventsResponse, error) {
|
||||
events := s.statusRecorder.GetEventHistory()
|
||||
return &proto.GetEventsResponse{Events: events}, nil
|
||||
}
|
Reference in New Issue
Block a user