@@ -400,7 +400,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
400400 @Throws(ZError ::class )
401401 fun declareKeyExpr (keyExpr : String ): KeyExpr {
402402 return jniSession?.run {
403- val ke = KeyExpr (keyExpr, io.zenoh.jni. NativeHandle ( declareKeyExpr(keyExpr) ))
403+ val ke = KeyExpr (keyExpr, declareKeyExpr(keyExpr))
404404 strongDeclarations.add(ke)
405405 ke
406406 } ? : throw sessionClosedException
@@ -420,12 +420,12 @@ class Session private constructor(private val config: Config) : AutoCloseable {
420420 val js = jniSession ? : throw sessionClosedException
421421 val nh = keyExpr.jniKeyExpr
422422 ? : throw ZError (" Attempting to undeclare a non declared key expression." )
423- // `NativeHandle.consume` atomically takes the Long under the
424- // write lock and nulls the field, so the generator-emitted
425- // `undeclareKeyExpr` (Rust: `Arc::unwrap_or_clone(Arc::from_raw)`)
426- // gets exactly-once handoff. By- value transfer IS the
427- // destruction; no separate `keyExprDrop` is needed.
428- nh.consume { handle -> js.undeclareKeyExpr(handle) }
423+ // `JNISession.undeclareKeyExpr` routes through the generator-
424+ // emitted wrapper, which does `keyExpr.consume { ... }` — the
425+ // NativeHandle's write lock provides exactly-once handoff and
426+ // by- value Rust transfer IS the destruction (no separate
427+ // `keyExprDrop` needed) .
428+ js.undeclareKeyExpr(nh)
429429 }
430430
431431 /* *
@@ -605,7 +605,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
605605 options.priority,
606606 options.encoding,
607607 declarePublisher(
608- keyExpr.jniKeyExprHandle ,
608+ keyExpr.jniKeyExpr ,
609609 keyExpr.keyExpr,
610610 options.congestionControl.value,
611611 options.priority.value,
@@ -626,7 +626,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
626626 val subCallback = JNISampleCallback { sample ->
627627 handler.handle(sample.toPublic())
628628 }
629- val subscriber = HandlerSubscriber (keyExpr, declareSubscriber(keyExpr.jniKeyExprHandle , keyExpr.keyExpr, subCallback, handler::onClose), handler.receiver())
629+ val subscriber = HandlerSubscriber (keyExpr, declareSubscriber(keyExpr.jniKeyExpr , keyExpr.keyExpr, subCallback, handler::onClose), handler.receiver())
630630 strongDeclarations.add(subscriber)
631631 subscriber
632632 } ? : throw (sessionClosedException)
@@ -640,7 +640,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
640640 val subCallback = JNISampleCallback { sample ->
641641 callback.run (sample.toPublic())
642642 }
643- val subscriber = CallbackSubscriber (keyExpr, declareSubscriber(keyExpr.jniKeyExprHandle , keyExpr.keyExpr, subCallback, fun () {}))
643+ val subscriber = CallbackSubscriber (keyExpr, declareSubscriber(keyExpr.jniKeyExpr , keyExpr.keyExpr, subCallback, fun () {}))
644644 strongDeclarations.add(subscriber)
645645 subscriber
646646 } ? : throw (sessionClosedException)
@@ -668,7 +668,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
668668 )
669669 )
670670 }
671- val queryable = HandlerQueryable (keyExpr, declareQueryable(keyExpr.jniKeyExprHandle , keyExpr.keyExpr, queryCallback, handler::onClose, options.complete), handler.receiver())
671+ val queryable = HandlerQueryable (keyExpr, declareQueryable(keyExpr.jniKeyExpr , keyExpr.keyExpr, queryCallback, handler::onClose, options.complete), handler.receiver())
672672 strongDeclarations.add(queryable)
673673 queryable
674674 } ? : throw (sessionClosedException)
@@ -696,7 +696,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
696696 )
697697 )
698698 }
699- val queryable = CallbackQueryable (keyExpr, declareQueryable(keyExpr.jniKeyExprHandle , keyExpr.keyExpr, queryCallback, fun () {}, options.complete))
699+ val queryable = CallbackQueryable (keyExpr, declareQueryable(keyExpr.jniKeyExpr , keyExpr.keyExpr, queryCallback, fun () {}, options.complete))
700700 strongDeclarations.add(queryable)
701701 queryable
702702 } ? : throw (sessionClosedException)
@@ -712,7 +712,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
712712 keyExpr,
713713 QoS (congestionControl = options.congestionControl, priority = options.priority, express = options.express),
714714 declareQuerier(
715- keyExpr.jniKeyExprHandle ,
715+ keyExpr.jniKeyExpr ,
716716 keyExpr.keyExpr,
717717 options.target.ordinal,
718718 options.consolidationMode.ordinal,
@@ -757,7 +757,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
757757 }
758758 val sel = selector.into()
759759 get(
760- sel.keyExpr.jniKeyExprHandle ,
760+ sel.keyExpr.jniKeyExpr ,
761761 sel.keyExpr.keyExpr,
762762 sel.parameters?.toString(),
763763 getCallback,
@@ -806,7 +806,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
806806 }
807807 val sel = selector.into()
808808 get(
809- sel.keyExpr.jniKeyExprHandle ,
809+ sel.keyExpr.jniKeyExpr ,
810810 sel.keyExpr.keyExpr,
811811 sel.parameters?.toString(),
812812 getCallback,
@@ -830,7 +830,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
830830 jniSession?.run {
831831 val encoding = (putOptions.encoding ? : Encoding .defaultEncoding()).toJni()
832832 put(
833- keyExpr.jniKeyExprHandle ,
833+ keyExpr.jniKeyExpr ,
834834 keyExpr.keyExpr,
835835 payload.into().bytes,
836836 encoding,
@@ -847,7 +847,7 @@ class Session private constructor(private val config: Config) : AutoCloseable {
847847 internal fun resolveDelete (keyExpr : KeyExpr , deleteOptions : DeleteOptions ) {
848848 jniSession?.run {
849849 delete(
850- keyExpr.jniKeyExprHandle ,
850+ keyExpr.jniKeyExpr ,
851851 keyExpr.keyExpr,
852852 deleteOptions.congestionControl.value,
853853 deleteOptions.priority.value,
0 commit comments