@@ -31,22 +31,14 @@ public struct TraceParent {
3131 /// An 8-bit field that controls tracing flags such as sampling, trace level, etc.
3232 ///
3333 /// - SeeAlso: [W3C TraceContext: trace-flags](https://www.w3.org/TR/2020/REC-trace-context-1-20200206/#trace-flags)
34- public let traceFlags : String
34+ public internal ( set ) var traceFlags : TraceFlags
3535
36- init ( traceID: String , parentID: String , traceFlags: String ) {
36+ init ( traceID: String , parentID: String , traceFlags: TraceFlags ) {
3737 self . traceID = traceID
3838 self . parentID = parentID
3939 self . traceFlags = traceFlags
4040 }
4141
42- /// When `true`, the least significant bit (right-most), denotes that the caller may have recorded trace data.
43- /// When `false`, the caller did not record trace data out-of-band.
44- ///
45- /// - SeeAlso: [W3C TraceContext: Sampled flag](https://www.w3.org/TR/2020/REC-trace-context-1-20200206/#sampled-flag)
46- public var sampled : Bool {
47- self . traceFlags == " 01 "
48- }
49-
5042 /// The HTTP header name for `TraceParent`.
5143 public static let headerName = " traceparent "
5244
@@ -90,9 +82,8 @@ extension TraceParent: RawRepresentable {
9082 self . parentID = String ( parentIDComponent)
9183
9284 // trace-flags
93- let traceFlagsComponent = components [ 3 ]
94- guard traceFlagsComponent. count == 2 else { return nil }
95- self . traceFlags = String ( traceFlagsComponent)
85+ guard let traceFlags = UInt8 ( components [ 3 ] , radix: 2 ) . map ( TraceFlags . init) else { return nil }
86+ self . traceFlags = traceFlags. rawValue <= 1 ? traceFlags : [ ]
9687 }
9788
9889 /// A `String` representation of this trace parent, suitable for injecting into HTTP headers.
@@ -115,7 +106,7 @@ extension TraceParent {
115106 public static func random< G: RandomNumberGenerator > ( using generator: inout G ) -> TraceParent {
116107 let traceID = Self . randomTraceID ( using: & generator)
117108 let parentID = Self . randomParentID ( using: & generator)
118- return . init( traceID: traceID, parentID: parentID, traceFlags: UInt64 ( 0 ) . paddedHexString ( radix : 2 ) )
109+ return . init( traceID: traceID, parentID: parentID, traceFlags: [ ] )
119110 }
120111
121112 /// Returns a random `TraceParent` using the system random number generator.
0 commit comments