Skip to content

Commit 990965d

Browse files
refactor handler and fix logger (#170)
1 parent eed4a88 commit 990965d

File tree

2 files changed

+26
-27
lines changed

2 files changed

+26
-27
lines changed

OptimizelySDK/Customization/DefaultLogger.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ open class DefaultLogger : OPTLogger {
3030
}
3131

3232
required public init() {
33-
DefaultLogger.logLevel = .info
3433
}
3534

3635
open func log(level: OptimizelyLogLevel, message: String) {

OptimizelySDK/Utils/HandlerRegistryService.swift

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,40 +20,41 @@ class HandlerRegistryService {
2020

2121
static let shared = HandlerRegistryService()
2222

23-
let dispatchQueue = DispatchQueue(label: "com.optimizely.HandlerRegistryService")
23+
struct ServiceKey : Hashable {
24+
var service:String
25+
var sdkKey:String?
26+
}
2427

25-
var binders = [BinderProtocol]()
28+
var binders:[ServiceKey:BinderProtocol] = [ServiceKey:BinderProtocol]()
2629

2730
private init() {
2831

2932
}
3033

3134
func registerBinding(binder:BinderProtocol) {
32-
dispatchQueue.sync {
33-
if let _ = binders.filter({(type(of: $0.service) == type(of: binder.service)) && $0.sdkKey == binder.sdkKey}).first {
34-
}
35-
else {
36-
binders.append(binder)
37-
}
38-
}
35+
let sk = ServiceKey(service: "\(type(of: binder.service))", sdkKey: binder.sdkKey)
36+
if let _ = binders[sk] {
37+
}
38+
else {
39+
binders[sk] = binder
40+
}
3941
}
4042

4143
func injectComponent(service:Any, sdkKey:String? = nil, isReintialize:Bool=false) -> Any? {
4244
var result:Any?
43-
dispatchQueue.sync {
44-
if var binder = binders.filter({(type(of: $0.service) == type(of: service)) && $0.sdkKey == sdkKey}).first {
45-
if isReintialize && binder.strategy == .reCreate {
46-
binder.instance = binder.factory()
47-
result = binder.instance
48-
}
49-
else if let inst = binder.instance, binder.isSingleton {
50-
result = inst
51-
}
52-
else {
53-
let inst = binder.factory()
54-
binder.instance = inst
55-
result = inst
56-
}
45+
let sk = ServiceKey(service: "\(type(of:service))", sdkKey: sdkKey)
46+
if var binder = binders[sk] {
47+
if isReintialize && binder.strategy == .reCreate {
48+
binder.instance = binder.factory()
49+
result = binder.instance
50+
}
51+
else if let inst = binder.instance, binder.isSingleton {
52+
result = inst
53+
}
54+
else {
55+
let inst = binder.factory()
56+
binder.instance = inst
57+
result = inst
5758
}
5859
}
5960
return result
@@ -64,10 +65,9 @@ class HandlerRegistryService {
6465
}
6566

6667
func lookupComponents(sdkKey:String)->[Any?]? {
67-
var value:[Any]?
6868

69-
value = self.binders.filter({$0.sdkKey == sdkKey}).map({ self.injectComponent(service: $0.service) as Any })
70-
69+
let value = self.binders.keys.filter({$0.sdkKey == sdkKey}).map({self.injectComponent(service: self.binders[$0]!.service)!})
70+
7171
return value
7272
}
7373
}

0 commit comments

Comments
 (0)