@@ -20,9 +20,9 @@ import Opentracing
2020public class SpanContextShim : OTSpanContext , BaseShimProtocol {
2121 var telemetryInfo : TelemetryInfo
2222 public private( set) var context : SpanContext
23- public private( set) var baggage : Baggage
23+ public private( set) var baggage : Baggage ?
2424
25- init ( telemetryInfo: TelemetryInfo , context: SpanContext , baggage: Baggage ) {
25+ init ( telemetryInfo: TelemetryInfo , context: SpanContext , baggage: Baggage ? ) {
2626 self . telemetryInfo = telemetryInfo
2727 self . context = context
2828 self . baggage = baggage
@@ -37,21 +37,22 @@ public class SpanContextShim: OTSpanContext, BaseShimProtocol {
3737 }
3838
3939 func newWith( key: String , value: String ) -> SpanContextShim {
40- let baggageBuilder = baggageManager. baggageBuilder ( ) . setParent ( baggage)
40+ let baggageBuilder = baggageManager. baggageBuilder ( )
41+ baggageBuilder. setParent ( baggage)
4142 baggageBuilder. put ( key: EntryKey ( name: key) !, value: EntryValue ( string: value) !, metadata: nil )
4243
4344 return SpanContextShim ( telemetryInfo: telemetryInfo, context: context, baggage: baggageBuilder. build ( ) )
4445 }
4546
4647 func getBaggageItem( key: String ) -> String ? {
4748 guard let key = EntryKey ( name: key) else { return nil }
48- let value = baggage. getEntryValue ( key: key)
49+ let value = baggage? . getEntryValue ( key: key)
4950 return value? . string
5051 }
5152
5253 public func forEachBaggageItem( _ callback: @escaping ( String , String ) -> Bool ) {
53- let entries = baggage. getEntries ( )
54- entries. forEach {
54+ let entries = baggage? . getEntries ( )
55+ entries? . forEach {
5556 if !callback( $0. key. name, $0. value. string) {
5657 return
5758 }
@@ -61,6 +62,11 @@ public class SpanContextShim: OTSpanContext, BaseShimProtocol {
6162
6263extension SpanContextShim : Equatable {
6364 public static func == ( lhs: SpanContextShim , rhs: SpanContextShim ) -> Bool {
64- return lhs. context == rhs. context && lhs. baggage == rhs. baggage
65+ if let lbaggage = lhs. baggage, let rbaggage = rhs. baggage {
66+ return lbaggage == rbaggage && lhs. context == rhs. context
67+ }
68+ else {
69+ return lhs. baggage == nil && rhs. baggage == nil && lhs. context == rhs. context
70+ }
6571 }
6672}
0 commit comments