mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Remove live from models (#61711)
This commit is contained in:
87
pkg/services/live/model/model.go
Normal file
87
pkg/services/live/model/model.go
Normal file
@@ -0,0 +1,87 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
|
||||
"github.com/grafana/grafana/pkg/services/user"
|
||||
)
|
||||
|
||||
// ChannelPublisher writes data into a channel. Note that permissions are not checked.
|
||||
type ChannelPublisher func(orgID int64, channel string, data []byte) error
|
||||
|
||||
// ChannelClientCount will return the number of clients for a channel
|
||||
type ChannelClientCount func(orgID int64, channel string) (int, error)
|
||||
|
||||
// SubscribeEvent contains subscription data.
|
||||
type SubscribeEvent struct {
|
||||
Channel string
|
||||
Path string
|
||||
Data json.RawMessage
|
||||
}
|
||||
|
||||
// SubscribeReply is a reaction to SubscribeEvent.
|
||||
type SubscribeReply struct {
|
||||
Presence bool
|
||||
JoinLeave bool
|
||||
Recover bool
|
||||
Data json.RawMessage
|
||||
}
|
||||
|
||||
// PublishEvent contains publication data.
|
||||
type PublishEvent struct {
|
||||
Channel string
|
||||
Path string
|
||||
Data json.RawMessage
|
||||
}
|
||||
|
||||
// PublishReply is a reaction to PublishEvent.
|
||||
type PublishReply struct {
|
||||
// By default, it's a handler responsibility to publish data
|
||||
// into a stream upon OnPublish but returning a data here
|
||||
// will make Grafana Live publish data itself (i.e. stream handler
|
||||
// just works as permission proxy in this case).
|
||||
Data json.RawMessage
|
||||
// HistorySize sets a stream history size.
|
||||
HistorySize int
|
||||
// HistoryTTL is a time that messages will live in stream history.
|
||||
HistoryTTL time.Duration
|
||||
}
|
||||
|
||||
// ChannelHandler defines the core channel behavior
|
||||
type ChannelHandler interface {
|
||||
// OnSubscribe is called when a client wants to subscribe to a channel
|
||||
OnSubscribe(ctx context.Context, user *user.SignedInUser, e SubscribeEvent) (SubscribeReply, backend.SubscribeStreamStatus, error)
|
||||
|
||||
// OnPublish is called when a client writes a message to the channel websocket.
|
||||
OnPublish(ctx context.Context, user *user.SignedInUser, e PublishEvent) (PublishReply, backend.PublishStreamStatus, error)
|
||||
}
|
||||
|
||||
// ChannelHandlerFactory should be implemented by all core features.
|
||||
type ChannelHandlerFactory interface {
|
||||
// GetHandlerForPath gets a ChannelHandler for a path.
|
||||
// This is called fast and often -- it must be synchronized
|
||||
GetHandlerForPath(path string) (ChannelHandler, error)
|
||||
}
|
||||
|
||||
type LiveMessage struct {
|
||||
Id int64
|
||||
OrgId int64
|
||||
Channel string
|
||||
Data json.RawMessage
|
||||
Published time.Time
|
||||
}
|
||||
|
||||
type SaveLiveMessageQuery struct {
|
||||
OrgId int64
|
||||
Channel string
|
||||
Data json.RawMessage
|
||||
}
|
||||
|
||||
type GetLiveMessageQuery struct {
|
||||
OrgId int64
|
||||
Channel string
|
||||
}
|
||||
Reference in New Issue
Block a user