opentelemetry-collector/pipeline/internal/globalsignal/signal.go

52 lines
1.2 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package globalsignal // import "go.opentelemetry.io/collector/pipeline/internal/globalsignal"
import (
"encoding"
"fmt"
)
var (
SignalProfiles = Signal{name: "profiles"}
SignalTraces = Signal{name: "traces"}
SignalMetrics = Signal{name: "metrics"}
SignalLogs = Signal{name: "logs"}
_ encoding.TextMarshaler = (*Signal)(nil)
_ encoding.TextUnmarshaler = (*Signal)(nil)
)
// Signal represents the signals supported by the collector.
type Signal struct {
name string
}
// String returns the string representation of the signal.
func (s Signal) String() string {
return s.name
}
// MarshalText marshals the Signal.
func (s Signal) MarshalText() ([]byte, error) {
return []byte(s.name), nil
}
// UnmarshalText marshals the Signal.
func (s *Signal) UnmarshalText(text []byte) error {
switch string(text) {
case SignalProfiles.name:
*s = SignalProfiles
case SignalTraces.name:
*s = SignalTraces
case SignalMetrics.name:
*s = SignalMetrics
case SignalLogs.name:
*s = SignalLogs
default:
return fmt.Errorf("unknown pipeline signal: %q", string(text))
}
return nil
}