// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package telemetry // import "go.opentelemetry.io/collector/service/telemetry"

import (
	sdktrace "go.opentelemetry.io/otel/sdk/trace"
)

type recordSampler struct{}

func (r recordSampler) ShouldSample(_ sdktrace.SamplingParameters) sdktrace.SamplingResult {
	return sdktrace.SamplingResult{Decision: sdktrace.RecordOnly}
}

func (r recordSampler) Description() string {
	return "Always record sampler"
}

func alwaysRecord() sdktrace.Sampler {
	rs := &recordSampler{}
	return sdktrace.ParentBased(
		rs,
		sdktrace.WithRemoteParentSampled(sdktrace.AlwaysSample()),
		sdktrace.WithRemoteParentNotSampled(rs),
		sdktrace.WithLocalParentSampled(sdktrace.AlwaysSample()),
		sdktrace.WithRemoteParentSampled(rs))
}