mirror of
https://github.com/netbirdio/netbird.git
synced 2025-03-04 18:01:13 +01:00
37 lines
908 B
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
|
|
}
|