-
-
Notifications
You must be signed in to change notification settings - Fork 231
/
sentry_transaction_context.dart
86 lines (81 loc) · 2.58 KB
/
sentry_transaction_context.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import 'package:meta/meta.dart';
import 'sentry_trace_origins.dart';
import 'protocol.dart';
import 'sentry_baggage.dart';
import 'tracing.dart';
@immutable
class SentryTransactionContext extends SentrySpanContext {
final String name;
final SentryTracesSamplingDecision? parentSamplingDecision;
final SentryTransactionNameSource? transactionNameSource;
final SentryTracesSamplingDecision? samplingDecision;
SentryTransactionContext(
this.name,
String operation, {
String? description,
this.parentSamplingDecision,
SentryId? traceId,
SpanId? spanId,
SpanId? parentSpanId,
this.transactionNameSource,
this.samplingDecision,
String? origin,
}) : super(
operation: operation,
description: description,
traceId: traceId,
spanId: spanId,
parentSpanId: parentSpanId,
origin: origin,
);
factory SentryTransactionContext.fromSentryTrace(
String name,
String operation,
SentryTraceHeader traceHeader, {
SentryTransactionNameSource? transactionNameSource,
SentryBaggage? baggage,
}) {
final sampleRate = baggage?.getSampleRate();
return SentryTransactionContext(
name,
operation,
traceId: traceHeader.traceId,
parentSpanId: traceHeader.spanId,
parentSamplingDecision: traceHeader.sampled != null
? SentryTracesSamplingDecision(
traceHeader.sampled!,
sampleRate: sampleRate,
)
: null,
transactionNameSource:
transactionNameSource ?? SentryTransactionNameSource.custom,
origin: SentryTraceOrigins.manual,
);
}
SentryTransactionContext copyWith({
String? name,
String? operation,
String? description,
SentryTracesSamplingDecision? parentSamplingDecision,
SentryId? traceId,
SpanId? spanId,
SpanId? parentSpanId,
SentryTransactionNameSource? transactionNameSource,
SentryTracesSamplingDecision? samplingDecision,
String? origin,
}) =>
SentryTransactionContext(
name ?? this.name,
operation ?? this.operation,
description: description ?? this.description,
parentSamplingDecision:
parentSamplingDecision ?? this.parentSamplingDecision,
traceId: traceId ?? this.traceId,
spanId: spanId ?? this.spanId,
parentSpanId: parentSpanId ?? this.parentSpanId,
transactionNameSource:
transactionNameSource ?? this.transactionNameSource,
samplingDecision: samplingDecision ?? this.samplingDecision,
origin: origin ?? this.origin,
);
}