Live: array for Processor, Outputter and Subscriber in channel rule top level (#39677)
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package pipeline
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/data"
|
||||
)
|
||||
|
||||
type ConditionalOutput struct {
|
||||
Condition FrameConditionChecker
|
||||
Outputter FrameOutputter
|
||||
}
|
||||
|
||||
func NewConditionalOutput(condition FrameConditionChecker, outputter FrameOutputter) *ConditionalOutput {
|
||||
return &ConditionalOutput{Condition: condition, Outputter: outputter}
|
||||
}
|
||||
|
||||
const FrameOutputTypeConditional = "conditional"
|
||||
|
||||
func (out *ConditionalOutput) Type() string {
|
||||
return FrameOutputTypeConditional
|
||||
}
|
||||
|
||||
func (out ConditionalOutput) OutputFrame(ctx context.Context, vars Vars, frame *data.Frame) ([]*ChannelFrame, error) {
|
||||
ok, err := out.Condition.CheckFrameCondition(ctx, frame)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !ok {
|
||||
return nil, nil
|
||||
}
|
||||
return out.Outputter.OutputFrame(ctx, vars, frame)
|
||||
}
|
||||
Reference in New Issue
Block a user