Skip to content

Commit 605f7c5

Browse files
committed
common template for zenoh_flat wrapping
1 parent 2d48599 commit 605f7c5

1 file changed

Lines changed: 29 additions & 22 deletions

File tree

zenoh-jni/src/session.rs

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,15 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_closeSessionViaJNI(
9595
_class: JClass,
9696
session_ptr: *const Session,
9797
) {
98-
let session = Arc::from_raw(session_ptr);
99-
let _ = || -> ZResult<()> {
100-
zenoh_flat::session::close_session(&session)
98+
|| -> ZResult<()> {
99+
let session = Arc::from_raw(session_ptr);
100+
zenoh_flat::session::close_session(&session)?;
101+
Ok(())
101102
}()
102-
.map_err(|err| throw_exception!(env, err));
103+
.unwrap_or_else(|err| {
104+
throw_exception!(env, err);
105+
()
106+
});
103107
}
104108

105109
/// Declare a Zenoh publisher via JNI.
@@ -140,8 +144,8 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_declarePublisherViaJNI(
140144
is_express: jboolean,
141145
reliability: jint,
142146
) -> *const Publisher<'static> {
143-
let session = OwnedObject::from_raw(session_ptr);
144147
|| -> ZResult<*const Publisher<'static>> {
148+
let session = OwnedObject::from_raw(session_ptr);
145149
let key_expr = process_kotlin_key_expr(&mut env, &key_expr_str, key_expr_ptr)?;
146150
let congestion_control = decode_congestion_control(congestion_control)?;
147151
let priority = decode_priority(priority)?;
@@ -206,8 +210,8 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_putViaJNI(
206210
attachment: JByteArray,
207211
reliability: jint,
208212
) {
209-
let session = OwnedObject::from_raw(session_ptr);
210-
let _ = || -> ZResult<()> {
213+
|| -> ZResult<()> {
214+
let session = OwnedObject::from_raw(session_ptr);
211215
let key_expr = process_kotlin_key_expr(&mut env, &key_expr_str, key_expr_ptr)?;
212216
let payload = decode_byte_array(&env, payload)?;
213217
let encoding = decode_encoding(&mut env, encoding_id, &encoding_schema)?;
@@ -231,9 +235,13 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_putViaJNI(
231235
is_express,
232236
attachment,
233237
reliability,
234-
)
238+
)?;
239+
Ok(())
235240
}()
236-
.map_err(|err| throw_exception!(env, err));
241+
.unwrap_or_else(|err| {
242+
throw_exception!(env, err);
243+
()
244+
});
237245
}
238246

239247
/// Performs a `delete` operation in the Zenoh session via JNI.
@@ -274,8 +282,8 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_deleteViaJNI(
274282
attachment: JByteArray,
275283
reliability: jint,
276284
) {
277-
let session = OwnedObject::from_raw(session_ptr);
278-
let _ = || -> ZResult<()> {
285+
|| -> ZResult<()> {
286+
let session = OwnedObject::from_raw(session_ptr);
279287
let key_expr = process_kotlin_key_expr(&mut env, &key_expr_str, key_expr_ptr)?;
280288
let congestion_control = decode_congestion_control(congestion_control)?;
281289
let priority = decode_priority(priority)?;
@@ -295,9 +303,13 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_deleteViaJNI(
295303
is_express,
296304
attachment,
297305
reliability,
298-
)
306+
)?;
307+
Ok(())
299308
}()
300-
.map_err(|err| throw_exception!(env, err));
309+
.unwrap_or_else(|err| {
310+
throw_exception!(env, err);
311+
()
312+
});
301313
}
302314

303315
/// Declare a Zenoh subscriber via JNI.
@@ -336,8 +348,8 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_declareSubscriberViaJNI(
336348
callback: JObject,
337349
on_close: JObject,
338350
) -> *const Subscriber<()> {
339-
let session = OwnedObject::from_raw(session_ptr);
340351
|| -> ZResult<*const Subscriber<()>> {
352+
let session = OwnedObject::from_raw(session_ptr);
341353
let key_expr = process_kotlin_key_expr(&mut env, &key_expr_str, key_expr_ptr)?;
342354
let callback = process_kotlin_sample_callback(&mut env, callback, on_close)?;
343355

@@ -346,7 +358,6 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_declareSubscriberViaJNI(
346358
key_expr,
347359
callback,
348360
)?;
349-
350361
Ok(Arc::into_raw(Arc::new(subscriber)))
351362
}()
352363
.unwrap_or_else(|err| {
@@ -388,8 +399,8 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_declareQuerierViaJNI(
388399
timeout_ms: jlong,
389400
accept_replies: jint,
390401
) -> *const Querier<'static> {
391-
let session = OwnedObject::from_raw(session_ptr);
392402
|| -> ZResult<*const Querier<'static>> {
403+
let session = OwnedObject::from_raw(session_ptr);
393404
let key_expr = process_kotlin_key_expr(&mut env, &key_expr_str, key_expr_ptr)?;
394405
let query_target = decode_query_target(target)?;
395406
let consolidation = decode_consolidation(consolidation)?;
@@ -398,7 +409,6 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_declareQuerierViaJNI(
398409
let is_express = is_express != 0;
399410
let timeout = Duration::from_millis(timeout_ms as u64);
400411
let reply_key_expr = decode_reply_key_expr(accept_replies)?;
401-
402412
let querier = zenoh_flat::session::declare_querier(
403413
&session,
404414
key_expr,
@@ -410,7 +420,6 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_declareQuerierViaJNI(
410420
timeout,
411421
reply_key_expr,
412422
)?;
413-
414423
Ok(Arc::into_raw(Arc::new(querier)))
415424
}()
416425
.unwrap_or_else(|err| {
@@ -459,14 +468,12 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_declareQueryableViaJNI(
459468
on_close: JObject,
460469
complete: jboolean,
461470
) -> *const Queryable<()> {
462-
let session = OwnedObject::from_raw(session_ptr);
463471
|| -> ZResult<*const Queryable<()>> {
472+
let session = OwnedObject::from_raw(session_ptr);
464473
let key_expr = process_kotlin_key_expr(&mut env, &key_expr_str, key_expr_ptr)?;
465474
let callback = process_kotlin_query_callback(&mut env, callback, on_close)?;
466475
let complete = complete != 0;
467-
468476
let queryable = zenoh_flat::session::declare_queryable(&session, key_expr, callback, complete)?;
469-
470477
Ok(Arc::into_raw(Arc::new(queryable)))
471478
}()
472479
.unwrap_or_else(|err| {
@@ -501,8 +508,8 @@ pub unsafe extern "C" fn Java_io_zenoh_jni_JNISession_declareKeyExprViaJNI(
501508
session_ptr: *const Session,
502509
key_expr_str: JString,
503510
) -> *const KeyExpr<'static> {
504-
let session = OwnedObject::from_raw(session_ptr);
505511
|| -> ZResult<*const KeyExpr<'static>> {
512+
let session = OwnedObject::from_raw(session_ptr);
506513
let key_expr_str = decode_string(&mut env, &key_expr_str)?;
507514
let key_expr = session
508515
.declare_keyexpr(key_expr_str.to_owned())

0 commit comments

Comments
 (0)