Skip to content

Commit 0380496

Browse files
authored
Add options to set NDK handler strategy (#1099)
* Add options to set NDK handler strategy * Update Changelog
1 parent 3baf0c7 commit 0380496

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
**Features**:
6+
- [NDK] Expose option to set handler strategy ([#1099](https://github.com/getsentry/sentry-native/pull/1099))
7+
38
## 0.7.16
49

510
**Features**:

ndk/lib/api/sentry-native-ndk.api

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,26 @@ public final class io/sentry/ndk/NativeScope : io/sentry/ndk/INativeScope {
6464
public fun setUser (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
6565
}
6666

67+
public final class io/sentry/ndk/NdkHandlerStrategy : java/lang/Enum {
68+
public static final field SENTRY_HANDLER_STRATEGY_CHAIN_AT_START Lio/sentry/ndk/NdkHandlerStrategy;
69+
public static final field SENTRY_HANDLER_STRATEGY_DEFAULT Lio/sentry/ndk/NdkHandlerStrategy;
70+
public fun getValue ()I
71+
public static fun valueOf (Ljava/lang/String;)Lio/sentry/ndk/NdkHandlerStrategy;
72+
public static fun values ()[Lio/sentry/ndk/NdkHandlerStrategy;
73+
}
74+
6775
public final class io/sentry/ndk/NdkOptions {
6876
public fun <init> (Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
6977
public fun getDist ()Ljava/lang/String;
7078
public fun getDsn ()Ljava/lang/String;
7179
public fun getEnvironment ()Ljava/lang/String;
7280
public fun getMaxBreadcrumbs ()I
81+
public fun getNdkHandlerStrategy ()I
7382
public fun getOutboxPath ()Ljava/lang/String;
7483
public fun getRelease ()Ljava/lang/String;
7584
public fun getSdkName ()Ljava/lang/String;
7685
public fun isDebug ()Z
86+
public fun setNdkHandlerStrategy (Lio/sentry/ndk/NdkHandlerStrategy;)V
7787
}
7888

7989
public final class io/sentry/ndk/SentryNdk {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.sentry.ndk;
2+
3+
public enum NdkHandlerStrategy {
4+
// Needs to match sentry_handler_strategy_t
5+
SENTRY_HANDLER_STRATEGY_DEFAULT(0),
6+
SENTRY_HANDLER_STRATEGY_CHAIN_AT_START(1);
7+
8+
private final int value;
9+
10+
NdkHandlerStrategy(final int value) {
11+
this.value = value;
12+
}
13+
14+
public int getValue() {
15+
return value;
16+
}
17+
}

ndk/lib/src/main/java/io/sentry/ndk/NdkOptions.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ public final class NdkOptions {
1212
private final @Nullable String dist;
1313
private final int maxBreadcrumbs;
1414
private final @Nullable String sdkName;
15+
private NdkHandlerStrategy ndkHandlerStrategy =
16+
NdkHandlerStrategy.SENTRY_HANDLER_STRATEGY_DEFAULT;
1517

1618
public NdkOptions(
1719
@NotNull String dsn,
@@ -69,4 +71,12 @@ public int getMaxBreadcrumbs() {
6971
public String getSdkName() {
7072
return sdkName;
7173
}
74+
75+
public void setNdkHandlerStrategy(final @NotNull NdkHandlerStrategy ndkHandlerStrategy) {
76+
this.ndkHandlerStrategy = ndkHandlerStrategy;
77+
}
78+
79+
public int getNdkHandlerStrategy() {
80+
return ndkHandlerStrategy.getValue();
81+
}
7282
}

ndk/lib/src/main/jni/sentry.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,8 @@ Java_io_sentry_ndk_SentryNdk_initSentryNative(
253253
jmethodID native_sdk_name_mid = (*env)->GetMethodID(env, options_cls, "getSdkName",
254254
"()Ljava/lang/String;");
255255

256+
jmethodID handler_strategy_mid = (*env)->GetMethodID(env, options_cls, "getNdkHandlerStrategy", "()I");
257+
256258
(*env)->DeleteLocalRef(env, options_cls);
257259

258260
char *outbox_path = NULL;
@@ -332,6 +334,9 @@ Java_io_sentry_ndk_SentryNdk_initSentryNative(
332334
sentry_free(native_sdk_name_str);
333335
}
334336

337+
jint handler_strategy = (jint) (*env)->CallIntMethod(env, sentry_ndk_options, handler_strategy_mid);
338+
sentry_options_set_handler_strategy(options, handler_strategy);
339+
335340
sentry_init(options);
336341
return;
337342

0 commit comments

Comments
 (0)