mirror of
https://github.com/grafana/grafana.git
synced 2024-11-29 20:24:18 -06:00
1b8e9b51b2
* Make identity.Requester available at Context * Clean pkg/services/guardian/guardian.go * Clean guardian provider and guardian AC * Clean pkg/api/team.go * Clean ctxhandler, datasources, plugin and live * Clean dashboards and guardian * Implement NewUserDisplayDTOFromRequester * Change status code numbers for http constants * Upgrade signature of ngalert services * log parsing errors instead of throwing error
88 lines
2.5 KiB
Go
88 lines
2.5 KiB
Go
package model
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
|
|
"github.com/grafana/grafana/pkg/services/auth/identity"
|
|
)
|
|
|
|
// 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 identity.Requester, e SubscribeEvent) (SubscribeReply, backend.SubscribeStreamStatus, error)
|
|
|
|
// OnPublish is called when a client writes a message to the channel websocket.
|
|
OnPublish(ctx context.Context, user identity.Requester, 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 `xorm:"pk autoincr 'id'"`
|
|
OrgID int64 `xorm:"org_id"`
|
|
Channel string
|
|
Data json.RawMessage
|
|
Published time.Time
|
|
}
|
|
|
|
type SaveLiveMessageQuery struct {
|
|
OrgID int64 `xorm:"org_id"`
|
|
Channel string
|
|
Data json.RawMessage
|
|
}
|
|
|
|
type GetLiveMessageQuery struct {
|
|
OrgID int64 `xorm:"org_id"`
|
|
Channel string
|
|
}
|