Live: use latest changes in Go SDK to deal with streaming frames (#34668)

This commit is contained in:
Alexander Emelin
2021-05-25 10:29:02 -07:00
committed by GitHub
parent 93c5c8345c
commit 063e1b5ff5
15 changed files with 84 additions and 101 deletions
+13 -20
View File
@@ -18,10 +18,10 @@ var (
logger = log.New("live.runstream")
)
//go:generate mockgen -destination=mock.go -package=runstream github.com/grafana/grafana/pkg/services/live/runstream StreamPacketSender,PresenceGetter,StreamRunner,PluginContextGetter
//go:generate mockgen -destination=mock.go -package=runstream github.com/grafana/grafana/pkg/services/live/runstream ChannelSender,PresenceGetter,StreamRunner,PluginContextGetter
type StreamPacketSender interface {
Send(channel string, packet *backend.StreamPacket) error
type ChannelSender interface {
Send(channel string, data []byte) error
}
type PluginContextGetter interface {
@@ -33,23 +33,16 @@ type PresenceGetter interface {
}
type StreamRunner interface {
RunStream(ctx context.Context, request *backend.RunStreamRequest, sender backend.StreamPacketSender) error
RunStream(ctx context.Context, request *backend.RunStreamRequest, sender *backend.StreamSender) error
}
type streamSender struct {
channel string
packetSender StreamPacketSender
type packetSender struct {
channelSender ChannelSender
channel string
}
func newStreamSender(channel string, packetSender StreamPacketSender) *streamSender {
return &streamSender{
channel: channel,
packetSender: packetSender,
}
}
func (p *streamSender) Send(packet *backend.StreamPacket) error {
return p.packetSender.Send(p.channel, packet)
func (p *packetSender) Send(packet *backend.StreamPacket) error {
return p.channelSender.Send(p.channel, packet.Data)
}
// Manager manages streams from Grafana to plugins (i.e. RunStream method).
@@ -60,7 +53,7 @@ type Manager struct {
datasourceStreams map[string]map[string]struct{}
presenceGetter PresenceGetter
pluginContextGetter PluginContextGetter
packetSender StreamPacketSender
channelSender ChannelSender
registerCh chan submitRequest
closedCh chan struct{}
checkInterval time.Duration
@@ -86,11 +79,11 @@ const (
)
// NewManager creates new Manager.
func NewManager(packetSender StreamPacketSender, presenceGetter PresenceGetter, pluginContextGetter PluginContextGetter, opts ...ManagerOption) *Manager {
func NewManager(channelSender ChannelSender, presenceGetter PresenceGetter, pluginContextGetter PluginContextGetter, opts ...ManagerOption) *Manager {
sm := &Manager{
streams: make(map[string]streamContext),
datasourceStreams: map[string]map[string]struct{}{},
packetSender: packetSender,
channelSender: channelSender,
presenceGetter: presenceGetter,
pluginContextGetter: pluginContextGetter,
registerCh: make(chan submitRequest),
@@ -308,7 +301,7 @@ func (s *Manager) runStream(ctx context.Context, cancelFn func(), sr streamReque
PluginContext: pluginCtx,
Path: sr.Path,
},
newStreamSender(sr.Channel, s.packetSender),
backend.NewStreamSender(&packetSender{channelSender: s.channelSender, channel: sr.Channel}),
)
if err != nil {
if errors.Is(ctx.Err(), context.Canceled) {