Skip to content

Commit 8d6369a

Browse files
authored
Add API to clear all feature flags (#720)
1 parent 2eb1862 commit 8d6369a

File tree

29 files changed

+257
-118
lines changed

29 files changed

+257
-118
lines changed

Cargo.Bazel.lock

Lines changed: 47 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.lock

Lines changed: 46 additions & 46 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,31 @@ android_logger = { version = "0.15.1", default-features = false }
1818
anyhow = "1.0.100"
1919
assert_matches = "1.5.0"
2020
async-trait = "0.1.89"
21-
bd-api = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
22-
bd-bonjson = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
23-
bd-bonjson-ffi = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
24-
bd-buffer = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
25-
bd-client-common = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
26-
bd-client-stats-store = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
27-
bd-crash-handler = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
28-
bd-device = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
29-
bd-error-reporter = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
30-
bd-grpc = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
31-
bd-hyper-network = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
32-
bd-key-value = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
33-
bd-log = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
34-
bd-log-metadata = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
35-
bd-log-primitives = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
36-
bd-logger = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
37-
bd-noop-network = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
38-
bd-proto = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
39-
bd-report-writer = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
40-
bd-report-parsers = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
41-
bd-runtime = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
42-
bd-session = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
43-
bd-shutdown = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
44-
bd-test-helpers = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc", default-features = false }
45-
bd-time = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "9beb8f29484b08b64e9f2306bc482a49788ef4dc" }
21+
bd-api = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
22+
bd-bonjson = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
23+
bd-bonjson-ffi = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
24+
bd-buffer = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
25+
bd-client-common = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
26+
bd-client-stats-store = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
27+
bd-crash-handler = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
28+
bd-device = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
29+
bd-error-reporter = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
30+
bd-grpc = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
31+
bd-hyper-network = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
32+
bd-key-value = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
33+
bd-log = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
34+
bd-log-metadata = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
35+
bd-log-primitives = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
36+
bd-logger = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
37+
bd-noop-network = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
38+
bd-proto = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
39+
bd-report-writer = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
40+
bd-report-parsers = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
41+
bd-runtime = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
42+
bd-session = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
43+
bd-shutdown = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
44+
bd-test-helpers = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc", default-features = false }
45+
bd-time = { git = "https://github.com/bitdriftlabs/shared-core.git", rev = "2001d15ee8be22f6d40b2343b6212193e778d2fc" }
4646
clap = { version = "4.5.48", features = ["derive", "env"] }
4747
ctor = "0.6.0"
4848
env_logger = { version = "0.11.8", default-features = false }

examples/swift/hello_world/ContentView.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ struct ContentView: View {
7575
Button(action: { self.loggerCustomer.removeFeatureFlag(flag: "MyFlag") }) {
7676
Text("Remove feature flag 'MyFlag'").frame(maxWidth: .infinity)
7777
}
78+
Button(action: { self.loggerCustomer.clearFeatureFlags() }) {
79+
Text("Clear feature flags").frame(maxWidth: .infinity)
80+
}
7881
Button(action: { Thread.sleep(forTimeInterval: 5.0) }) {
7982
Text("Simulate ANR (5s)").frame(maxWidth: .infinity)
8083
}

examples/swift/hello_world/LoggerCustomer.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ final class LoggerCustomer: NSObject, URLSessionDelegate {
126126
Capture.Logger.removeFeatureFlag(withName: flag)
127127
}
128128

129+
func clearFeatureFlags() {
130+
Capture.Logger.clearFeatureFlags()
131+
}
132+
129133
func performRandomNetworkRequestUsingDataTask() {
130134
let session = URLSession(
131135
instrumentedSessionWithConfiguration: .default,

platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/Capture.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,15 @@ object Capture {
319319
logger()?.removeFeatureFlag(flag)
320320
}
321321

322+
/**
323+
* Clears all feature flags.
324+
*/
325+
@ExperimentalBitdriftApi
326+
@JvmStatic
327+
fun clearFeatureFlags() {
328+
logger()?.clearFeatureFlags()
329+
}
330+
322331
/**
323332
* Logs a message at trace level.
324333
*

platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/CaptureJniLibrary.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,11 @@ internal object CaptureJniLibrary : IBridge, IStreamingReportProcessor {
169169
flag: String,
170170
)
171171

172+
/**
173+
* Clears all feature flags.
174+
*/
175+
external fun clearFeatureFlags(loggerId: Long)
176+
172177
/**
173178
* Writes a log to the Capture logger.
174179
*

platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/ILogger.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ interface ILogger {
100100
*/
101101
fun removeFeatureFlag(flag: String)
102102

103+
/**
104+
* Clear all feature flags.
105+
*/
106+
fun clearFeatureFlags()
107+
103108
/**
104109
* Logs a message at a specified level.
105110
*

platform/jvm/capture/src/main/kotlin/io/bitdrift/capture/LoggerImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,10 @@ internal class LoggerImpl(
405405
CaptureJniLibrary.removeFeatureFlag(this.loggerId, flag)
406406
}
407407

408+
override fun clearFeatureFlags() {
409+
CaptureJniLibrary.clearFeatureFlags(this.loggerId)
410+
}
411+
408412
override fun setSleepMode(sleepMode: SleepMode) {
409413
CaptureJniLibrary.setSleepModeEnabled(this.loggerId, sleepMode == SleepMode.ACTIVE)
410414
}

platform/jvm/gradle-test-app/src/main/java/io/bitdrift/gradletestapp/data/model/Actions.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ sealed class FeatureFlagsTestAction : AppAction {
5656
object AddOneFeatureFlag : FeatureFlagsTestAction()
5757

5858
object AddManyFeatureFlags : FeatureFlagsTestAction()
59+
60+
object ClearFeatureFlags : FeatureFlagsTestAction()
5961
}
6062

6163
object ClearError : AppAction

0 commit comments

Comments
 (0)