@@ -16,15 +16,6 @@ private let OS_ACTIVITY_CURRENT = unsafeBitCast(dlsym(UnsafeMutableRawPointer(bi
16
16
17
17
class ActivityContextManager: ContextManager {
18
18
static let instance = ActivityContextManager ( )
19
- #if canImport(_Concurrency)
20
- #if swift(<5.5.2)
21
- @available ( macOS 12 . 0 , iOS 15 . 0 , tvOS 15 . 0 , * )
22
- static let taskLocalContextManager = TaskLocalContextManager . instance
23
- #else
24
- @available ( macOS 10 . 15 , iOS 13 . 0 , tvOS 13 . 0 , * )
25
- static let taskLocalContextManager = TaskLocalContextManager . instance
26
- #endif
27
- #endif
28
19
29
20
let rlock = NSRecursiveLock ( )
30
21
@@ -33,8 +24,6 @@ class ActivityContextManager: ContextManager {
33
24
self . scope = scope
34
25
}
35
26
36
- deinit { }
37
-
38
27
var scope : os_activity_scope_state_s
39
28
}
40
29
@@ -46,77 +35,28 @@ class ActivityContextManager: ContextManager {
46
35
var parentIdent : os_activity_id_t = 0
47
36
let activityIdent = os_activity_get_identifier ( OS_ACTIVITY_CURRENT, & parentIdent)
48
37
var contextValue : AnyObject ?
49
- if activityIdent != 0 {
50
- rlock. lock ( )
51
- guard let context = contextMap [ activityIdent] ?? contextMap [ parentIdent] else {
52
- rlock. unlock ( )
53
- return nil
54
- }
55
- contextValue = context [ key. rawValue]
38
+ rlock. lock ( )
39
+ guard let context = contextMap [ activityIdent] ?? contextMap [ parentIdent] else {
56
40
rlock. unlock ( )
57
- return contextValue
58
- } else {
59
- // If activityIdent == 0, it means no active Span or we are inside an Task
60
- #if canImport(_Concurrency)
61
- #if swift(<5.5.2)
62
- if #available( macOS 12 . 0 , iOS 15 . 0 , tvOS 15 . 0 , * ) {
63
- if let contextValue = ActivityContextManager . taskLocalContextManager. getCurrentContextValue ( forKey: key) {
64
- return contextValue
65
- }
66
- }
67
- #else
68
- if #available( macOS 10 . 15 , iOS 13 . 0 , tvOS 13 . 0 , * ) {
69
- if let contextValue = ActivityContextManager . taskLocalContextManager. getCurrentContextValue ( forKey: key) {
70
- return contextValue
71
- }
72
- }
73
- #endif
74
- #endif
41
+ return nil
75
42
}
76
- return nil
43
+ contextValue = context [ key. rawValue]
44
+ rlock. unlock ( )
45
+ return contextValue
77
46
}
78
47
79
48
func setCurrentContextValue( forKey key: OpenTelemetryContextKeys , value: AnyObject ) {
80
49
var parentIdent : os_activity_id_t = 0
81
50
var activityIdent = os_activity_get_identifier ( OS_ACTIVITY_CURRENT, & parentIdent)
82
- if activityIdent != 0 {
83
- // We are inside an activity, it can be an activity created by us for a span context or another independent activty
84
- // We are surely not inside a Task
85
- rlock. lock ( )
86
- if contextMap [ activityIdent] == nil || contextMap [ activityIdent] ? [ key. rawValue] != nil {
87
- var scope : os_activity_scope_state_s
88
- ( activityIdent, scope) = createActivityContext ( )
89
- contextMap [ activityIdent] = [ String: AnyObject] ( )
90
- objectScope. setObject ( ScopeElement ( scope: scope) , forKey: value)
91
- }
92
- contextMap [ activityIdent] ? [ key. rawValue] = value
93
- rlock. unlock ( )
94
- } else {
51
+ rlock. lock ( )
52
+ if contextMap [ activityIdent] == nil || contextMap [ activityIdent] ? [ key. rawValue] != nil {
95
53
var scope : os_activity_scope_state_s
96
54
( activityIdent, scope) = createActivityContext ( )
97
- if activityIdent == 0 {
98
- // If activityIdent == 0, means we are inside a Task, because we cannot create an activity, set the context inside the task
99
- #if canImport(_Concurrency)
100
- #if swift(<5.5.2)
101
- if #available( macOS 12 . 0 , iOS 15 . 0 , tvOS 15 . 0 , * ) {
102
- ActivityContextManager . taskLocalContextManager. setCurrentContextValue ( forKey: key, value: value)
103
- }
104
- #else
105
- if #available( macOS 10 . 15 , iOS 13 . 0 , tvOS 13 . 0 , * ) {
106
- ActivityContextManager . taskLocalContextManager. setCurrentContextValue ( forKey: key, value: value)
107
- }
108
-
109
- #endif
110
- #endif
111
- } else {
112
- // We could create the activity so we store the context in the activity map
113
- rlock. lock ( )
114
- contextMap [ activityIdent] = [ String: AnyObject] ( )
115
- objectScope. setObject ( ScopeElement ( scope: scope) , forKey: value)
116
- contextMap [ activityIdent] ? [ key. rawValue] = value
117
- rlock. unlock ( )
118
- }
55
+ contextMap [ activityIdent] = [ String: AnyObject] ( )
56
+ objectScope. setObject ( ScopeElement ( scope: scope) , forKey: value)
119
57
}
58
+ contextMap [ activityIdent] ? [ key. rawValue] = value
59
+ rlock. unlock ( )
120
60
}
121
61
122
62
func createActivityContext( ) -> ( os_activity_id_t , os_activity_scope_state_s ) {
@@ -133,26 +73,6 @@ class ActivityContextManager: ContextManager {
133
73
var scope = scope. scope
134
74
os_activity_scope_leave ( & scope)
135
75
objectScope. removeObject ( forKey: value)
136
- } else {
137
- #if canImport(_Concurrency)
138
- #if swift(<5.5.2)
139
- if #available( macOS 12 . 0 , iOS 15 . 0 , tvOS 15 . 0 , * ) {
140
- // If there is a parent activity, set its content as the task local
141
- ActivityContextManager . taskLocalContextManager. removeContextValue ( forKey: key, value: value)
142
- if let currentContext = self . getCurrentContextValue ( forKey: key) {
143
- ActivityContextManager . taskLocalContextManager. setCurrentContextValue ( forKey: key, value: currentContext)
144
- }
145
- }
146
- #else
147
- // If there is a parent activity, set its content as the task local
148
- if #available( macOS 10 . 15 , iOS 13 . 0 , tvOS 13 . 0 , * ) {
149
- ActivityContextManager . taskLocalContextManager. removeContextValue ( forKey: key, value: value)
150
- if let currentContext = self . getCurrentContextValue ( forKey: key) {
151
- ActivityContextManager . taskLocalContextManager. setCurrentContextValue ( forKey: key, value: currentContext)
152
- }
153
- }
154
- #endif
155
- #endif
156
76
}
157
77
}
158
78
}
0 commit comments