Files
Hein 1adf50e3db
CI / build-and-test (push) Failing after 1s
Release / release (push) Failing after 19m26s
fix(go.sum): update ResolveSpec dependency to v1.0.87
2026-06-23 13:17:16 +02:00

41 lines
1.6 KiB
Go

package report
import (
"github.com/getsentry/sentry-go/internal/protocol"
"github.com/getsentry/sentry-go/internal/ratelimit"
)
// ClientReportRecorder is used by components that need to record lost/discarded events.
type ClientReportRecorder interface {
Record(reason DiscardReason, category ratelimit.Category, quantity int64)
RecordOne(reason DiscardReason, category ratelimit.Category)
RecordForEnvelope(reason DiscardReason, envelope *protocol.Envelope)
RecordItem(reason DiscardReason, item protocol.TelemetryItem)
}
// ClientReportProvider is used by the single component responsible for sending client reports.
type ClientReportProvider interface {
TakeReport() *ClientReport
AttachToEnvelope(envelope *protocol.Envelope)
}
// noopRecorder is a no-op implementation of ClientReportRecorder.
type noopRecorder struct{}
func (noopRecorder) Record(DiscardReason, ratelimit.Category, int64) {}
func (noopRecorder) RecordOne(DiscardReason, ratelimit.Category) {}
func (noopRecorder) RecordForEnvelope(DiscardReason, *protocol.Envelope) {}
func (noopRecorder) RecordItem(DiscardReason, protocol.TelemetryItem) {}
// noopProvider is a no-op implementation of ClientReportProvider.
type noopProvider struct{}
func (noopProvider) TakeReport() *ClientReport { return nil }
func (noopProvider) AttachToEnvelope(_ *protocol.Envelope) {}
// NoopRecorder returns a no-op ClientReportRecorder that silently discards all records.
func NoopRecorder() ClientReportRecorder { return noopRecorder{} }
// NoopProvider returns a no-op ClientReportProvider that always returns nil reports.
func NoopProvider() ClientReportProvider { return noopProvider{} }