Skip to content

Commit b0aa02f

Browse files
committed
priority wrapped in zenoh-java
1 parent 8db16c3 commit b0aa02f

4 files changed

Lines changed: 52 additions & 19 deletions

File tree

prebindgen-ext/src/jni/jni_ext.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,10 @@ impl JniExt {
596596

597597
/// Resolve a relative class name against [`Self::package`]. Panics
598598
/// if `name` contains a `.` (a check that catches accidental FQNs in
599-
/// the relative-name builders).
599+
/// the relative-name builders). The framework refuses dotted names
600+
/// on purpose: a binding crate owns one package and must not write
601+
/// classes into anyone else's namespace. Higher layers wrap or
602+
/// re-export — they don't get injected into.
600603
pub(crate) fn resolve_class_fqn(&self, name: &str) -> String {
601604
assert!(
602605
!name.contains('.'),

zenoh-java/src/commonMain/kotlin/io/zenoh/Session.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
609609
keyExpr.jniKeyExpr,
610610
keyExpr.keyExpr,
611611
options.congestionControl.value,
612-
options.priority.value,
612+
options.priority.toJni(),
613613
options.express,
614614
options.reliability.ordinal
615615
)
@@ -718,7 +718,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
718718
options.target.ordinal,
719719
options.consolidationMode.ordinal,
720720
options.congestionControl.value,
721-
options.priority.value,
721+
options.priority.toJni(),
722722
options.express,
723723
options.timeout.toMillis(),
724724
options.acceptReplies.ordinal
@@ -770,7 +770,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
770770
options.payload?.into()?.bytes,
771771
options.encoding?.toJni(),
772772
options.qos.congestionControl.value,
773-
options.qos.priority.value,
773+
options.qos.priority.toJni(),
774774
options.qos.express,
775775
options.acceptReplies.ordinal
776776
)
@@ -819,7 +819,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
819819
options.payload?.into()?.bytes,
820820
options.encoding?.toJni(),
821821
options.qos.congestionControl.value,
822-
options.qos.priority.value,
822+
options.qos.priority.toJni(),
823823
options.qos.express,
824824
options.acceptReplies.ordinal
825825
)
@@ -836,7 +836,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
836836
payload.into().bytes,
837837
encoding,
838838
putOptions.congestionControl.value,
839-
putOptions.priority.value,
839+
putOptions.priority.toJni(),
840840
putOptions.express,
841841
putOptions.attachment?.into()?.bytes,
842842
putOptions.reliability.ordinal
@@ -851,7 +851,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
851851
keyExpr.jniKeyExpr,
852852
keyExpr.keyExpr,
853853
deleteOptions.congestionControl.value,
854-
deleteOptions.priority.value,
854+
deleteOptions.priority.toJni(),
855855
deleteOptions.express,
856856
deleteOptions.attachment?.into()?.bytes,
857857
deleteOptions.reliability.ordinal

zenoh-java/src/commonMain/kotlin/io/zenoh/qos/Priority.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
package io.zenoh.qos
1616

17+
import io.zenoh.jni.Priority as JniPriority
18+
1719
/**
1820
* The Priority of Zenoh messages.
1921
*
@@ -31,7 +33,35 @@ enum class Priority(val value: Int) {
3133
DATA_LOW(6),
3234
BACKGROUND(7);
3335

36+
/**
37+
* Project this public-API priority onto the JNI-layer enum that
38+
* crosses the boundary. Variant-for-variant, no `Int` round-trip.
39+
*/
40+
fun toJni(): JniPriority = when (this) {
41+
REALTIME -> JniPriority.REAL_TIME
42+
INTERACTIVE_HIGH -> JniPriority.INTERACTIVE_HIGH
43+
INTERACTIVE_LOW -> JniPriority.INTERACTIVE_LOW
44+
DATA_HIGH -> JniPriority.DATA_HIGH
45+
DATA -> JniPriority.DATA
46+
DATA_LOW -> JniPriority.DATA_LOW
47+
BACKGROUND -> JniPriority.BACKGROUND
48+
}
49+
3450
companion object {
3551
fun fromInt(value: Int) = entries.first { it.value == value }
52+
53+
/**
54+
* Lift a JNI-layer priority into the public-API enum.
55+
* Variant-for-variant, no `Int` round-trip.
56+
*/
57+
fun fromJni(p: JniPriority): Priority = when (p) {
58+
JniPriority.REAL_TIME -> REALTIME
59+
JniPriority.INTERACTIVE_HIGH -> INTERACTIVE_HIGH
60+
JniPriority.INTERACTIVE_LOW -> INTERACTIVE_LOW
61+
JniPriority.DATA_HIGH -> DATA_HIGH
62+
JniPriority.DATA -> DATA
63+
JniPriority.DATA_LOW -> DATA_LOW
64+
JniPriority.BACKGROUND -> BACKGROUND
65+
}
3666
}
3767
}

zenoh-jni-runtime/src/commonMain/kotlin/io/zenoh/jni/JNISession.kt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
4545
keyExprHandle: NativeHandle?,
4646
keyExprString: String,
4747
congestionControl: Int,
48-
priority: Int,
48+
priority: Priority,
4949
express: Boolean,
5050
reliability: Int
5151
): JNIPublisher = JNIPublisher(
5252
JNIWrappers.declarePublisher(
5353
this,
5454
(keyExprHandle ?: keyExprString),
5555
congestionControl,
56-
Priority.fromInt(priority),
56+
priority,
5757
express,
5858
reliability,
5959
).peek()
@@ -98,7 +98,7 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
9898
target: Int,
9999
consolidation: Int,
100100
congestionControl: Int,
101-
priority: Int,
101+
priority: Priority,
102102
express: Boolean,
103103
timeoutMs: Long,
104104
acceptReplies: Int
@@ -109,7 +109,7 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
109109
target,
110110
consolidation,
111111
congestionControl,
112-
Priority.fromInt(priority),
112+
priority,
113113
express,
114114
timeoutMs,
115115
acceptReplies,
@@ -138,7 +138,7 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
138138
payload: ByteArray?,
139139
encoding: JNIEncoding?,
140140
congestionControl: Int,
141-
priority: Int,
141+
priority: Priority,
142142
express: Boolean,
143143
acceptReplies: Int,
144144
) = JNIWrappers.get(
@@ -154,7 +154,7 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
154154
payload,
155155
encoding,
156156
congestionControl,
157-
Priority.fromInt(priority),
157+
priority,
158158
express,
159159
acceptReplies,
160160
)
@@ -166,7 +166,7 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
166166
valuePayload: ByteArray,
167167
valueEncoding: JNIEncoding,
168168
congestionControl: Int,
169-
priority: Int,
169+
priority: Priority,
170170
express: Boolean,
171171
attachmentBytes: ByteArray?,
172172
reliability: Int
@@ -176,7 +176,7 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
176176
valuePayload,
177177
valueEncoding,
178178
congestionControl,
179-
Priority.fromInt(priority),
179+
priority,
180180
express,
181181
attachmentBytes,
182182
reliability,
@@ -187,15 +187,15 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
187187
keyExprHandle: NativeHandle?,
188188
keyExprString: String,
189189
congestionControl: Int,
190-
priority: Int,
190+
priority: Priority,
191191
express: Boolean,
192192
attachmentBytes: ByteArray?,
193193
reliability: Int
194194
) = JNIWrappers.delete(
195195
this,
196196
(keyExprHandle ?: keyExprString),
197197
congestionControl,
198-
Priority.fromInt(priority),
198+
priority,
199199
express,
200200
attachmentBytes,
201201
reliability,
@@ -236,7 +236,7 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
236236
keyExprHandle: NativeHandle?,
237237
keyExprStr: String,
238238
congestionControl: Int,
239-
priority: Int,
239+
priority: Priority,
240240
isExpress: Boolean,
241241
reliability: Int,
242242
cache: CacheConfig?,
@@ -247,7 +247,7 @@ public class JNISession(initialPtr: Long) : NativeHandle(initialPtr) {
247247
this,
248248
(keyExprHandle ?: keyExprStr),
249249
congestionControl,
250-
Priority.fromInt(priority),
250+
priority,
251251
isExpress,
252252
reliability,
253253
cache,

0 commit comments

Comments
 (0)