52 lines
1.2 KiB
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
|
|
}
|