|
15 | 15 | use std::{ptr::null, sync::Arc, time::Duration}; |
16 | 16 |
|
17 | 17 | use jni::{ |
18 | | - objects::{GlobalRef, JByteArray, JClass, JObject, JString, JValue}, |
| 18 | + objects::{JClass, JObject, JString}, |
19 | 19 | sys::{jboolean, jint, jlong}, |
20 | 20 | JNIEnv, |
21 | 21 | }; |
22 | 22 | use zenoh::{ |
23 | 23 | config::Config, |
24 | 24 | key_expr::KeyExpr, |
25 | 25 | pubsub::{Publisher, Subscriber}, |
26 | | - query::{Querier, Queryable, ReplyError}, |
27 | | - sample::Sample, |
28 | | - session::{EntityGlobalId, Session}, |
| 26 | + query::{Querier, Queryable}, |
| 27 | + session::Session, |
29 | 28 | Wait, |
30 | 29 | }; |
31 | 30 |
|
@@ -54,154 +53,6 @@ include!(concat!(env!("OUT_DIR"), "/zenoh_flat_jni.rs")); |
54 | 53 |
|
55 | 54 |
|
56 | 55 |
|
57 | | -pub(crate) fn on_reply_success( |
58 | | - env: &mut JNIEnv, |
59 | | - replier_id: Option<EntityGlobalId>, |
60 | | - sample: &Sample, |
61 | | - callback_global_ref: &GlobalRef, |
62 | | -) -> ZResult<()> { |
63 | | - let zenoh_id = replier_id |
64 | | - .map_or_else( |
65 | | - || Ok(JByteArray::default()), |
66 | | - |replier_id| { |
67 | | - env.byte_array_from_slice(&replier_id.zid().to_le_bytes()) |
68 | | - .map_err(|err| zerror!(err)) |
69 | | - }, |
70 | | - ) |
71 | | - .map(|value| env.auto_local(value))?; |
72 | | - let eid = replier_id.map_or_else(|| 0, |replier_id| replier_id.eid() as jint); |
73 | | - |
74 | | - let byte_array = |
75 | | - bytes_to_java_array(env, sample.payload()).map(|value| env.auto_local(value))?; |
76 | | - let encoding: jint = sample.encoding().id() as jint; |
77 | | - let encoding_schema = sample |
78 | | - .encoding() |
79 | | - .schema() |
80 | | - .map_or_else( |
81 | | - || Ok(JString::default()), |
82 | | - |schema| slice_to_java_string(env, schema), |
83 | | - ) |
84 | | - .map(|value| env.auto_local(value))?; |
85 | | - let kind = sample.kind() as jint; |
86 | | - |
87 | | - let (timestamp, is_valid) = sample |
88 | | - .timestamp() |
89 | | - .map(|timestamp| (timestamp.get_time().as_u64(), true)) |
90 | | - .unwrap_or((0, false)); |
91 | | - |
92 | | - let attachment_bytes = sample |
93 | | - .attachment() |
94 | | - .map_or_else( |
95 | | - || Ok(JByteArray::default()), |
96 | | - |attachment| bytes_to_java_array(env, attachment), |
97 | | - ) |
98 | | - .map(|value| env.auto_local(value)) |
99 | | - .map_err(|err| zerror!("Error processing attachment of reply: {}.", err))?; |
100 | | - |
101 | | - let key_expr_str = env |
102 | | - .new_string(sample.key_expr().to_string()) |
103 | | - .map(|value| env.auto_local(value)) |
104 | | - .map_err(|err| { |
105 | | - zerror!( |
106 | | - "Could not create a JString through JNI for the Sample key expression. {}", |
107 | | - err |
108 | | - ) |
109 | | - })?; |
110 | | - |
111 | | - let express = sample.express(); |
112 | | - let priority = sample.priority() as jint; |
113 | | - let cc = sample.congestion_control() as jint; |
114 | | - |
115 | | - let result = match env.call_method( |
116 | | - callback_global_ref, |
117 | | - "run", |
118 | | - "([BIZLjava/lang/String;[BILjava/lang/String;IJZ[BZII)V", |
119 | | - &[ |
120 | | - JValue::from(&zenoh_id), |
121 | | - JValue::from(eid), |
122 | | - JValue::from(true), |
123 | | - JValue::from(&key_expr_str), |
124 | | - JValue::from(&byte_array), |
125 | | - JValue::from(encoding), |
126 | | - JValue::from(&encoding_schema), |
127 | | - JValue::from(kind), |
128 | | - JValue::from(timestamp as i64), |
129 | | - JValue::from(is_valid), |
130 | | - JValue::from(&attachment_bytes), |
131 | | - JValue::from(express), |
132 | | - JValue::from(priority), |
133 | | - JValue::from(cc), |
134 | | - ], |
135 | | - ) { |
136 | | - Ok(_) => Ok(()), |
137 | | - Err(err) => { |
138 | | - _ = env.exception_describe(); |
139 | | - Err(zerror!("On GET callback error: {}", err)) |
140 | | - } |
141 | | - }; |
142 | | - result |
143 | | -} |
144 | | - |
145 | | -pub(crate) fn on_reply_error( |
146 | | - env: &mut JNIEnv, |
147 | | - replier_id: Option<EntityGlobalId>, |
148 | | - reply_error: &ReplyError, |
149 | | - callback_global_ref: &GlobalRef, |
150 | | -) -> ZResult<()> { |
151 | | - let zenoh_id = replier_id |
152 | | - .map_or_else( |
153 | | - || Ok(JByteArray::default()), |
154 | | - |replier_id| { |
155 | | - env.byte_array_from_slice(&replier_id.zid().to_le_bytes()) |
156 | | - .map_err(|err| zerror!(err)) |
157 | | - }, |
158 | | - ) |
159 | | - .map(|value| env.auto_local(value))?; |
160 | | - let eid = replier_id.map_or_else(|| 0, |replier_id| replier_id.eid() as jint); |
161 | | - |
162 | | - let payload = |
163 | | - bytes_to_java_array(env, reply_error.payload()).map(|value| env.auto_local(value))?; |
164 | | - let encoding_id: jint = reply_error.encoding().id() as jint; |
165 | | - let encoding_schema = reply_error |
166 | | - .encoding() |
167 | | - .schema() |
168 | | - .map_or_else( |
169 | | - || Ok(JString::default()), |
170 | | - |schema| slice_to_java_string(env, schema), |
171 | | - ) |
172 | | - .map(|value| env.auto_local(value))?; |
173 | | - let result = match env.call_method( |
174 | | - callback_global_ref, |
175 | | - "run", |
176 | | - "([BIZLjava/lang/String;[BILjava/lang/String;IJZ[BZII)V", |
177 | | - &[ |
178 | | - JValue::from(&zenoh_id), |
179 | | - JValue::from(eid), |
180 | | - JValue::from(false), |
181 | | - JValue::from(&JString::default()), |
182 | | - JValue::from(&payload), |
183 | | - JValue::from(encoding_id), |
184 | | - JValue::from(&encoding_schema), |
185 | | - // The remaining parameters aren't used in case of replying error, so we set them to default. |
186 | | - JValue::from(0 as jint), |
187 | | - JValue::from(0_i64), |
188 | | - JValue::from(false), |
189 | | - JValue::from(&JByteArray::default()), |
190 | | - JValue::from(false), |
191 | | - JValue::from(0 as jint), |
192 | | - JValue::from(0 as jint), |
193 | | - ], |
194 | | - ) { |
195 | | - Ok(_) => Ok(()), |
196 | | - Err(err) => { |
197 | | - _ = env.exception_describe(); |
198 | | - Err(zerror!("On GET callback error: {}", err)) |
199 | | - } |
200 | | - }; |
201 | | - result |
202 | | -} |
203 | | - |
204 | | - |
205 | 56 | /// Declare an advanced Zenoh subscriber via JNI. |
206 | 57 | /// |
207 | 58 | /// # Parameters: |
|
0 commit comments