netbird/client/server/event.go

37 lines
908 B
Go

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
}