Skip to content
34 changes: 34 additions & 0 deletions OptimizelySwiftSDK.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -2078,6 +2078,22 @@
98AC984B2DB8FFE0001405DD /* DecisionServiceTests_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC98482DB8FC29001405DD /* DecisionServiceTests_Holdouts.swift */; };
98AC985E2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */; };
98AC985F2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */; };
98CBECAC2EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECAD2EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECAE2EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECAF2EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB02EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB12EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB22EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB32EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB42EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB52EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB62EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB72EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB82EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECB92EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECBA2EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98CBECBB2EB3CA6500C06A62 /* CmabCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */; };
98D5AE842DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */; };
98D5AE852DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */; };
98F28A1D2E01940500A86546 /* Cmab.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98F28A1C2E01940500A86546 /* Cmab.swift */; };
Expand Down Expand Up @@ -2587,6 +2603,7 @@
98AC98452DB7B762001405DD /* BucketTests_HoldoutToVariation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BucketTests_HoldoutToVariation.swift; sourceTree = "<group>"; };
98AC98482DB8FC29001405DD /* DecisionServiceTests_Holdouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecisionServiceTests_Holdouts.swift; sourceTree = "<group>"; };
98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift; sourceTree = "<group>"; };
98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CmabCache.swift; sourceTree = "<group>"; };
98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyUserContextTests_Decide_Holdouts.swift; sourceTree = "<group>"; };
98F28A1C2E01940500A86546 /* Cmab.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cmab.swift; sourceTree = "<group>"; };
98F28A2D2E01968000A86546 /* CmabTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CmabTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -3304,6 +3321,7 @@
children = (
98F28A402E02DD6D00A86546 /* CmabClient.swift */,
98F28A552E0451CC00A86546 /* CmabService.swift */,
98CBECAB2EB3CA6500C06A62 /* CmabCache.swift */,
);
path = CMAB;
sourceTree = "<group>";
Expand Down Expand Up @@ -4321,6 +4339,7 @@
989428BB2DBFA431008BA1C8 /* MockBucketer.swift in Sources */,
6E14CDAB2423F9EB00010234 /* MockUrlSession.swift in Sources */,
6E14CDAA2423F9C300010234 /* SDKVersion.swift in Sources */,
98CBECB32EB3CA6500C06A62 /* CmabCache.swift in Sources */,
845945C3287758A100D13E11 /* OdpConfig.swift in Sources */,
6E14CD832423F9A100010234 /* DataStoreQueueStackImpl.swift in Sources */,
848617F12863E21200B7F41B /* OdpEventApiManager.swift in Sources */,
Expand Down Expand Up @@ -4475,6 +4494,7 @@
6E424D0926324B620081004A /* FeatureVariable.swift in Sources */,
6E6419DA2657059700C49555 /* NotificationCenterTests_MultiClients.swift in Sources */,
6E424D0A26324B620081004A /* Rollout.swift in Sources */,
98CBECB52EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E2D5DAE26338CA00002077F /* AtomicDictionaryTests.swift in Sources */,
6E424D0B26324B620081004A /* Variation.swift in Sources */,
6E424D0C26324B620081004A /* TrafficAllocation.swift in Sources */,
Expand Down Expand Up @@ -4606,6 +4626,7 @@
6EF8DE1B24BD1BB2008B9488 /* OptimizelyDecideOption.swift in Sources */,
980CC90D2D833F2800E07D24 /* ExperimentCore.swift in Sources */,
6E75173722C520D400B2B157 /* MurmurHash3.swift in Sources */,
98CBECB42EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E7517F922C520D400B2B157 /* DataStoreUserDefaults.swift in Sources */,
C78CAF592445AD8D009FE876 /* OptimizelyJSON.swift in Sources */,
848617C92863DC2700B7F41B /* OdpSegmentManager.swift in Sources */,
Expand Down Expand Up @@ -4648,6 +4669,7 @@
989428B32DBFA431008BA1C8 /* MockBucketer.swift in Sources */,
6E75170222C520D400B2B157 /* OptimizelyLogLevel.swift in Sources */,
6E7516BA22C520D400B2B157 /* DefaultUserProfileService.swift in Sources */,
98CBECB02EB3CA6500C06A62 /* CmabCache.swift in Sources */,
845945C7287758A300D13E11 /* OdpConfig.swift in Sources */,
6E75175622C520D400B2B157 /* LogMessage.swift in Sources */,
848617F62863E21200B7F41B /* OdpEventApiManager.swift in Sources */,
Expand Down Expand Up @@ -4866,6 +4888,7 @@
6E75175E22C520D400B2B157 /* AtomicProperty.swift in Sources */,
6E9B11DE22C548A200C22D81 /* OptimizelyClientTests_Others.swift in Sources */,
C78CAF7424482C86009FE876 /* OptimizelyClientTests_OptimizelyJSON.swift in Sources */,
98CBECBA2EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6EC6DD3724ABF6990017D296 /* OptimizelyClient+Decide.swift in Sources */,
6E7516E622C520D400B2B157 /* OPTEventDispatcher.swift in Sources */,
98F28A612E0451CC00A86546 /* CmabService.swift in Sources */,
Expand Down Expand Up @@ -4925,6 +4948,7 @@
6E75173D22C520D400B2B157 /* MurmurHash3.swift in Sources */,
6E7516E922C520D400B2B157 /* OPTEventDispatcher.swift in Sources */,
6E7518A722C520D400B2B157 /* FeatureFlag.swift in Sources */,
98CBECB92EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E75187722C520D400B2B157 /* Variation.swift in Sources */,
6E7517F322C520D400B2B157 /* DataStoreMemory.swift in Sources */,
6E7518FB22C520D500B2B157 /* UserAttribute.swift in Sources */,
Expand Down Expand Up @@ -5095,6 +5119,7 @@
84E2E94F2852A378001114AB /* VuidManager.swift in Sources */,
6E75176322C520D400B2B157 /* AtomicProperty.swift in Sources */,
6E9B117722C5487100C22D81 /* BatchEventBuilderTests_EventTags.swift in Sources */,
98CBECB62EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E7517DD22C520D400B2B157 /* DefaultNotificationCenter.swift in Sources */,
6E9B116622C5487100C22D81 /* DecisionServiceTests_UserProfiles.swift in Sources */,
6E34A6202319EBB800BAE302 /* Notifications.swift in Sources */,
Expand Down Expand Up @@ -5252,6 +5277,7 @@
6E9B11B822C5489600C22D81 /* OTUtils.swift in Sources */,
98AC97F42DAE9685001405DD /* HoldoutConfigTests.swift in Sources */,
6E9B119022C5488300C22D81 /* AttributeValueTests.swift in Sources */,
98CBECBB2EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E994B4025A3E6EA00999262 /* DecisionResponse.swift in Sources */,
84E2E9802855875E001114AB /* OdpEventManager.swift in Sources */,
6E75175822C520D400B2B157 /* LogMessage.swift in Sources */,
Expand Down Expand Up @@ -5390,6 +5416,7 @@
6E4544AF270E67C800F2CEBC /* NetworkReachability.swift in Sources */,
6E75177522C520D400B2B157 /* SDKVersion.swift in Sources */,
848617CD2863DC2700B7F41B /* OdpSegmentManager.swift in Sources */,
98CBECAE2EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E75180722C520D400B2B157 /* DataStoreFile.swift in Sources */,
8486181D286D188B00B7F41B /* OdpEventApiManagerTests.swift in Sources */,
6E75183722C520D400B2B157 /* EventForDispatch.swift in Sources */,
Expand Down Expand Up @@ -5572,6 +5599,7 @@
6E424C04263228FD0081004A /* AtomicDictionary.swift in Sources */,
6E75189922C520D400B2B157 /* Experiment.swift in Sources */,
6E75178322C520D400B2B157 /* ArrayEventForDispatch+Extension.swift in Sources */,
98CBECB12EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E424BE5263228E90081004A /* AtomicArray.swift in Sources */,
6E7518A522C520D400B2B157 /* FeatureFlag.swift in Sources */,
);
Expand Down Expand Up @@ -5638,6 +5666,7 @@
6E4544B4270E67C800F2CEBC /* NetworkReachability.swift in Sources */,
6E75184622C520D400B2B157 /* Event.swift in Sources */,
6E7517CE22C520D400B2B157 /* DefaultBucketer.swift in Sources */,
98CBECB82EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E75180A22C520D400B2B157 /* DataStoreFile.swift in Sources */,
6E7516B822C520D400B2B157 /* DefaultUserProfileService.swift in Sources */,
6E7517C222C520D400B2B157 /* DefaultDatafileHandler.swift in Sources */,
Expand Down Expand Up @@ -5747,6 +5776,7 @@
6E4544B9270E67C800F2CEBC /* NetworkReachability.swift in Sources */,
6E75184B22C520D400B2B157 /* Event.swift in Sources */,
6E7517D322C520D400B2B157 /* DefaultBucketer.swift in Sources */,
98CBECAD2EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E75180F22C520D400B2B157 /* DataStoreFile.swift in Sources */,
6E7516BD22C520D400B2B157 /* DefaultUserProfileService.swift in Sources */,
6E7517C722C520D400B2B157 /* DefaultDatafileHandler.swift in Sources */,
Expand Down Expand Up @@ -5861,6 +5891,7 @@
6EF8DE1A24BD1BB2008B9488 /* OptimizelyDecideOption.swift in Sources */,
980CC90B2D833F2800E07D24 /* ExperimentCore.swift in Sources */,
6E75186422C520D400B2B157 /* Rollout.swift in Sources */,
98CBECAF2EB3CA6500C06A62 /* CmabCache.swift in Sources */,
6E75179622C520D400B2B157 /* DataStoreQueueStackImpl+Extension.swift in Sources */,
C78CAF582445AD8D009FE876 /* OptimizelyJSON.swift in Sources */,
848617C82863DC2700B7F41B /* OdpSegmentManager.swift in Sources */,
Expand Down Expand Up @@ -5903,6 +5934,7 @@
989428BE2DBFA431008BA1C8 /* MockBucketer.swift in Sources */,
6E7516FC22C520D400B2B157 /* OptimizelyLogLevel.swift in Sources */,
6E7516B422C520D400B2B157 /* DefaultUserProfileService.swift in Sources */,
98CBECAC2EB3CA6500C06A62 /* CmabCache.swift in Sources */,
845945C02877589F00D13E11 /* OdpConfig.swift in Sources */,
6E75175022C520D400B2B157 /* LogMessage.swift in Sources */,
848617EE2863E21200B7F41B /* OdpEventApiManager.swift in Sources */,
Expand Down Expand Up @@ -6089,6 +6121,7 @@
75C71A3B25E454460084187E /* ArrayEventForDispatch+Extension.swift in Sources */,
75C71A3C25E454460084187E /* OptimizelyClient+Extension.swift in Sources */,
75C71A3D25E454460084187E /* DataStoreQueueStackImpl+Extension.swift in Sources */,
98CBECB72EB3CA6500C06A62 /* CmabCache.swift in Sources */,
845945BF2877589F00D13E11 /* OdpConfig.swift in Sources */,
75C71A3E25E454460084187E /* Array+Extension.swift in Sources */,
75C71A3F25E454460084187E /* Constants.swift in Sources */,
Expand Down Expand Up @@ -6172,6 +6205,7 @@
6EF8DE1C24BD1BB2008B9488 /* OptimizelyDecideOption.swift in Sources */,
980CC9132D833F2800E07D24 /* ExperimentCore.swift in Sources */,
BD6485642491474500F30986 /* Rollout.swift in Sources */,
98CBECB22EB3CA6500C06A62 /* CmabCache.swift in Sources */,
BD6485652491474500F30986 /* DataStoreQueueStackImpl+Extension.swift in Sources */,
BD6485662491474500F30986 /* OptimizelyJSON.swift in Sources */,
848617CA2863DC2700B7F41B /* OdpSegmentManager.swift in Sources */,
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,4 @@ Used to enforce Swift style and conventions.

- React - https://github.com/optimizely/react-sdk

- Ruby - https://github.com/optimizely/ruby-sdk
- Ruby - https://github.com/optimizely/ruby-sdk
22 changes: 22 additions & 0 deletions Sources/CMAB/CmabCache.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//
// Copyright 2022, Optimizely, Inc. and contributors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

import Foundation

let DEFAULT_CMAB_CACHE_TIMEOUT = 30 * 60 // 30 minutes
let DEFAULT_CMAB_CACHE_SIZE = 100

typealias CmabCache = LruCache<String, CmabCacheValue>
2 changes: 1 addition & 1 deletion Sources/CMAB/CmabClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ enum CmabClientError: Error, Equatable {
}

struct CmabRetryConfig {
var maxRetries: Int = 3
var maxRetries: Int = 1
var initialBackoff: TimeInterval = 0.1 // seconds
var maxBackoff: TimeInterval = 10.0 // seconds
var backoffMultiplier: Double = 2.0
Expand Down
15 changes: 10 additions & 5 deletions Sources/CMAB/CmabService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ class DefaultCmabService: CmabService {
typealias UserAttributes = [String : Any?]

private let cmabClient: CmabClient
private let cmabCache: LruCache<String, CmabCacheValue>
let cmabCache: CmabCache
private let logger = OPTLoggerFactory.getLogger()

private static let NUM_LOCKS = 1000
private let locks: [NSLock]

init(cmabClient: CmabClient, cmabCache: LruCache<String, CmabCacheValue>) {
init(cmabClient: CmabClient, cmabCache: CmabCache) {
self.cmabClient = cmabClient
self.cmabCache = cmabCache
self.locks = (0..<Self.NUM_LOCKS).map { _ in NSLock() }
Expand Down Expand Up @@ -193,9 +193,14 @@ class DefaultCmabService: CmabService {

extension DefaultCmabService {
static func createDefault() -> DefaultCmabService {
let DEFAULT_CMAB_CACHE_TIMEOUT = 30 * 60 * 1000 // 30 minutes in milliseconds
let DEFAULT_CMAB_CACHE_SIZE = 1000
let cache = LruCache<String, CmabCacheValue>(size: DEFAULT_CMAB_CACHE_SIZE, timeoutInSecs: DEFAULT_CMAB_CACHE_TIMEOUT)
let cache = CmabCache(size: DEFAULT_CMAB_CACHE_SIZE, timeoutInSecs: DEFAULT_CMAB_CACHE_TIMEOUT)
return DefaultCmabService(cmabClient: DefaultCmabClient(), cmabCache: cache)
}

static func createDefault(cacheSize: Int, cacheTimeout: Int) -> DefaultCmabService {
// if cache timeout is set to 0 or negative, use default timeout
let timeout = cacheTimeout <= 0 ? DEFAULT_CMAB_CACHE_TIMEOUT : cacheTimeout
let cache = CmabCache(size: cacheSize, timeoutInSecs: timeout)
return DefaultCmabService(cmabClient: DefaultCmabClient(), cmabCache: cache)
}
}
10 changes: 10 additions & 0 deletions Sources/ODP/OptimizelySdkSettings.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ public struct OptimizelySdkSettings {
let timeoutForSegmentFetchInSecs: Int
/// The timeout in seconds of odp event dispatch - OS default timeout will be used if this is set to zero.
let timeoutForOdpEventInSecs: Int
/// The maximum size of cmab cache
let cmabCacheSize: Int
/// The timeout in seconds of cmab cache
let cmabCacheTimeoutInSecs: Int
/// ODP features are disabled if this is set to true.
let disableOdp: Bool
/// VUID is enabled if this is set to true.
Expand All @@ -37,6 +41,8 @@ public struct OptimizelySdkSettings {
/// - segmentsCacheTimeoutInSecs: The timeout in seconds of audience segments cache (optional. default = 600). Set to zero to disable timeout.
/// - timeoutForSegmentFetchInSecs: The timeout in seconds of odp segment fetch (optional. default = 10) - OS default timeout will be used if this is set to zero.
/// - timeoutForOdpEventInSecs: The timeout in seconds of odp event dispatch (optional. default = 10) - OS default timeout will be used if this is set to zero.
/// - cmabCacheSize: The maximum size of cmab cache (optional. default = 100).
/// - cmabCacheTimeoutInSecs: The timeout in seconds of amb cache (optional. default = 30 * 60).
/// - disableOdp: Set this flag to true (default = false) to disable ODP features
/// - enableVuid: Set this flag to true (default = false) to enable vuid.
/// - sdkName: Set this flag to override sdkName included in events
Expand All @@ -45,12 +51,16 @@ public struct OptimizelySdkSettings {
segmentsCacheTimeoutInSecs: Int = 600,
timeoutForSegmentFetchInSecs: Int = 10,
timeoutForOdpEventInSecs: Int = 10,
cmabCacheSize: Int = 100,
cmabCacheTimeoutInSecs: Int = 30 * 60,
disableOdp: Bool = false,
enableVuid: Bool = false,
sdkName: String? = nil,
sdkVersion: String? = nil) {
self.segmentsCacheSize = segmentsCacheSize
self.segmentsCacheTimeoutInSecs = segmentsCacheTimeoutInSecs
self.cmabCacheSize = cmabCacheSize
self.cmabCacheTimeoutInSecs = cmabCacheTimeoutInSecs
self.timeoutForSegmentFetchInSecs = timeoutForSegmentFetchInSecs
self.timeoutForOdpEventInSecs = timeoutForOdpEventInSecs
self.disableOdp = disableOdp
Expand Down
2 changes: 1 addition & 1 deletion Sources/Optimizely/OptimizelyClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ open class OptimizelyClient: NSObject {
let logger = logger ?? DefaultLogger()
type(of: logger).logLevel = defaultLogLevel ?? .info

let cmabService = DefaultCmabService.createDefault()
let cmabService = DefaultCmabService.createDefault(cacheSize: self.sdkSettings.cmabCacheSize, cacheTimeout: self.sdkSettings.cmabCacheTimeoutInSecs)

self.registerServices(sdkKey: sdkKey,
logger: logger,
Expand Down
Loading
Loading