1use jni::JNIEnv;
23use jni::objects::{JClass, JString};
24use jni::sys::{jlong, jboolean, jstring, jint};
25use crate::core::{RiAppBuilder, RiAppRuntime, RiError, RiServiceContext, RiHealthStatus, RiHealthCheckResult, RiHealthCheckConfig, RiHealthReport, RiHealthChecker, RiErrorChain, RiLockError, RiLifecycleObserver, RiLogAnalyticsModule};
26use crate::java::exception::{throw_ri_error, check_not_null};
27use crate::config::RiConfig;
28use std::time::Duration;
29
30#[no_mangle]
35pub extern "system" fn Java_com_dunimd_ri_RiAppBuilder_new0(
36 _env: JNIEnv,
37 _class: JClass,
38) -> jlong {
39 let builder = Box::new(RiAppBuilder::new());
40 Box::into_raw(builder) as jlong
41}
42
43#[no_mangle]
44pub extern "system" fn Java_com_dunimd_ri_RiAppBuilder_withConfig(
45 mut env: JNIEnv,
46 _class: JClass,
47 ptr: jlong,
48 config_path: JString,
49) -> jlong {
50 if !check_not_null(&mut env, ptr, "RiAppBuilder") {
51 return 0;
52 }
53
54 let builder = unsafe { Box::from_raw(ptr as *mut RiAppBuilder) };
55 let path: String = env.get_string(&config_path)
56 .expect("Failed to get config path")
57 .into();
58
59 match builder.with_config(&path) {
60 Ok(new_builder) => {
61 let boxed = Box::new(new_builder);
62 Box::into_raw(boxed) as jlong
63 }
64 Err(e) => {
65 throw_ri_error(&mut env, &e.to_string());
66 0
67 }
68 }
69}
70
71#[no_mangle]
72pub extern "system" fn Java_com_dunimd_ri_RiAppBuilder_build(
73 mut env: JNIEnv,
74 _class: JClass,
75 ptr: jlong,
76) -> jlong {
77 if !check_not_null(&mut env, ptr, "RiAppBuilder") {
78 return 0;
79 }
80
81 let builder = unsafe { Box::from_raw(ptr as *mut RiAppBuilder) };
82
83 match builder.build() {
84 Ok(runtime) => {
85 let boxed = Box::new(runtime);
86 Box::into_raw(boxed) as jlong
87 }
88 Err(e) => {
89 throw_ri_error(&mut env, &e.to_string());
90 0
91 }
92 }
93}
94
95#[no_mangle]
96pub extern "system" fn Java_com_dunimd_ri_RiAppBuilder_free0(
97 _env: JNIEnv,
98 _class: JClass,
99 ptr: jlong,
100) {
101 if ptr != 0 {
102 unsafe {
103 let _ = Box::from_raw(ptr as *mut RiAppBuilder);
104 }
105 }
106}
107
108#[no_mangle]
113pub extern "system" fn Java_com_dunimd_ri_RiAppRuntime_free0(
114 _env: JNIEnv,
115 _class: JClass,
116 ptr: jlong,
117) {
118 if ptr != 0 {
119 unsafe {
120 let _ = Box::from_raw(ptr as *mut RiAppRuntime);
121 }
122 }
123}
124
125#[no_mangle]
126pub extern "system" fn Java_com_dunimd_ri_RiAppRuntime_isRunning(
127 mut env: JNIEnv,
128 _class: JClass,
129 ptr: jlong,
130) -> jboolean {
131 if !check_not_null(&mut env, ptr, "RiAppRuntime") {
132 return 0;
133 }
134
135 let _runtime = unsafe { &*(ptr as *const RiAppRuntime) };
136 0
137}
138
139#[no_mangle]
140pub extern "system" fn Java_com_dunimd_ri_RiAppRuntime_shutdown(
141 mut env: JNIEnv,
142 _class: JClass,
143 ptr: jlong,
144) {
145 if !check_not_null(&mut env, ptr, "RiAppRuntime") {
146 return;
147 }
148
149 let _runtime = unsafe { &*(ptr as *const RiAppRuntime) };
150}
151
152#[no_mangle]
157pub extern "system" fn Java_com_dunimd_ri_RiConfig_new0(
158 _env: JNIEnv,
159 _class: JClass,
160) -> jlong {
161 let config = Box::new(RiConfig::default());
162 Box::into_raw(config) as jlong
163}
164
165#[no_mangle]
166pub extern "system" fn Java_com_dunimd_ri_RiConfig_free0(
167 _env: JNIEnv,
168 _class: JClass,
169 ptr: jlong,
170) {
171 if ptr != 0 {
172 unsafe {
173 let _ = Box::from_raw(ptr as *mut RiConfig);
174 }
175 }
176}
177
178#[no_mangle]
179pub extern "system" fn Java_com_dunimd_ri_RiConfig_get(
180 mut env: JNIEnv,
181 _class: JClass,
182 ptr: jlong,
183 key: JString,
184) -> jstring {
185 if !check_not_null(&mut env, ptr, "RiConfig") {
186 return std::ptr::null_mut();
187 }
188
189 let config = unsafe { &*(ptr as *const RiConfig) };
190 let key_str: String = env.get_string(&key)
191 .expect("Failed to get key")
192 .into();
193
194 match config.get(&key_str) {
195 Some(value) => {
196 env.new_string(value)
197 .expect("Failed to create Java string")
198 .into_raw()
199 }
200 None => std::ptr::null_mut(),
201 }
202}
203
204#[no_mangle]
209pub extern "system" fn Java_com_dunimd_ri_RiError_getMessage(
210 mut env: JNIEnv,
211 _class: JClass,
212 ptr: jlong,
213) -> jstring {
214 if !check_not_null(&mut env, ptr, "RiError") {
215 return std::ptr::null_mut();
216 }
217
218 let error = unsafe { &*(ptr as *const RiError) };
219 env.new_string(error.to_string())
220 .expect("Failed to create Java string")
221 .into_raw()
222}
223
224#[no_mangle]
225pub extern "system" fn Java_com_dunimd_ri_RiError_free0(
226 _env: JNIEnv,
227 _class: JClass,
228 ptr: jlong,
229) {
230 if ptr != 0 {
231 unsafe {
232 let _ = Box::from_raw(ptr as *mut RiError);
233 }
234 }
235}
236
237#[no_mangle]
242pub extern "system" fn Java_com_dunimd_ri_RiServiceContext_new0(
243 mut env: JNIEnv,
244 _class: JClass,
245) -> jlong {
246 match RiServiceContext::new_default() {
247 Ok(ctx) => {
248 let boxed = Box::new(ctx);
249 Box::into_raw(boxed) as jlong
250 }
251 Err(e) => {
252 throw_ri_error(&mut env, &e.to_string());
253 0
254 }
255 }
256}
257
258#[no_mangle]
259pub extern "system" fn Java_com_dunimd_ri_RiServiceContext_logger0(
260 mut env: JNIEnv,
261 _class: JClass,
262 ptr: jlong,
263) -> jlong {
264 if !check_not_null(&mut env, ptr, "RiServiceContext") {
265 return 0;
266 }
267
268 let ctx = unsafe { &*(ptr as *const RiServiceContext) };
269 let logger = ctx.logger().clone();
270 let boxed = Box::new(logger);
271 Box::into_raw(boxed) as jlong
272}
273
274#[no_mangle]
275pub extern "system" fn Java_com_dunimd_ri_RiServiceContext_config0(
276 mut env: JNIEnv,
277 _class: JClass,
278 ptr: jlong,
279) -> jlong {
280 if !check_not_null(&mut env, ptr, "RiServiceContext") {
281 return 0;
282 }
283
284 let ctx = unsafe { &*(ptr as *const RiServiceContext) };
285 let config_manager = ctx.config();
286 let config = (*config_manager).config().clone();
287 let boxed = Box::new(config);
288 Box::into_raw(boxed) as jlong
289}
290
291#[no_mangle]
292pub extern "system" fn Java_com_dunimd_ri_RiServiceContext_fs0(
293 mut env: JNIEnv,
294 _class: JClass,
295 ptr: jlong,
296) -> jlong {
297 if !check_not_null(&mut env, ptr, "RiServiceContext") {
298 return 0;
299 }
300
301 let ctx = unsafe { &*(ptr as *const RiServiceContext) };
302 let fs = ctx.fs().clone();
303 let boxed = Box::new(fs);
304 Box::into_raw(boxed) as jlong
305}
306
307#[no_mangle]
308pub extern "system" fn Java_com_dunimd_ri_RiServiceContext_hooks0(
309 mut env: JNIEnv,
310 _class: JClass,
311 ptr: jlong,
312) -> jlong {
313 if !check_not_null(&mut env, ptr, "RiServiceContext") {
314 return 0;
315 }
316
317 let ctx = unsafe { &*(ptr as *const RiServiceContext) };
318 let hooks = ctx.hooks();
319 let hooks_inner = (*hooks).clone();
320 let boxed = Box::new(hooks_inner);
321 Box::into_raw(boxed) as jlong
322}
323
324#[no_mangle]
325pub extern "system" fn Java_com_dunimd_ri_RiServiceContext_free0(
326 _env: JNIEnv,
327 _class: JClass,
328 ptr: jlong,
329) {
330 if ptr != 0 {
331 unsafe {
332 let _ = Box::from_raw(ptr as *mut RiServiceContext);
333 }
334 }
335}
336
337#[no_mangle]
342pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckResult_new0(
343 mut env: JNIEnv,
344 _class: JClass,
345 name: JString,
346 status: jint,
347 message: JString,
348) -> jlong {
349 let name_str: String = env.get_string(&name)
350 .expect("Failed to get name")
351 .into();
352
353 let health_status = match status {
354 0 => RiHealthStatus::Healthy,
355 1 => RiHealthStatus::Degraded,
356 2 => RiHealthStatus::Unhealthy,
357 _ => RiHealthStatus::Unknown,
358 };
359
360 let message_str: Option<String> = if message.is_null() {
361 None
362 } else {
363 Some(env.get_string(&message).expect("Failed to get message").into())
364 };
365
366 let result = RiHealthCheckResult {
367 name: name_str,
368 status: health_status,
369 message: message_str,
370 timestamp: std::time::SystemTime::now(),
371 duration: Duration::ZERO,
372 };
373
374 let boxed = Box::new(result);
375 Box::into_raw(boxed) as jlong
376}
377
378#[no_mangle]
379pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckResult_getName0(
380 mut env: JNIEnv,
381 _class: JClass,
382 ptr: jlong,
383) -> jstring {
384 if !check_not_null(&mut env, ptr, "RiHealthCheckResult") {
385 return std::ptr::null_mut();
386 }
387
388 let result = unsafe { &*(ptr as *const RiHealthCheckResult) };
389 env.new_string(&result.name)
390 .expect("Failed to create Java string")
391 .into_raw()
392}
393
394#[no_mangle]
395pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckResult_getStatus0(
396 mut env: JNIEnv,
397 _class: JClass,
398 ptr: jlong,
399) -> jint {
400 if !check_not_null(&mut env, ptr, "RiHealthCheckResult") {
401 return 3;
402 }
403
404 let result = unsafe { &*(ptr as *const RiHealthCheckResult) };
405 match result.status {
406 RiHealthStatus::Healthy => 0,
407 RiHealthStatus::Degraded => 1,
408 RiHealthStatus::Unhealthy => 2,
409 RiHealthStatus::Unknown => 3,
410 }
411}
412
413#[no_mangle]
414pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckResult_getMessage0(
415 mut env: JNIEnv,
416 _class: JClass,
417 ptr: jlong,
418) -> jstring {
419 if !check_not_null(&mut env, ptr, "RiHealthCheckResult") {
420 return std::ptr::null_mut();
421 }
422
423 let result = unsafe { &*(ptr as *const RiHealthCheckResult) };
424 match &result.message {
425 Some(msg) => env.new_string(msg)
426 .expect("Failed to create Java string")
427 .into_raw(),
428 None => std::ptr::null_mut(),
429 }
430}
431
432#[no_mangle]
433pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckResult_free0(
434 _env: JNIEnv,
435 _class: JClass,
436 ptr: jlong,
437) {
438 if ptr != 0 {
439 unsafe {
440 let _ = Box::from_raw(ptr as *mut RiHealthCheckResult);
441 }
442 }
443}
444
445#[no_mangle]
450pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_new0(
451 _env: JNIEnv,
452 _class: JClass,
453) -> jlong {
454 let config = Box::new(RiHealthCheckConfig::default());
455 Box::into_raw(config) as jlong
456}
457
458#[no_mangle]
459pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_newWithValues0(
460 _env: JNIEnv,
461 _class: JClass,
462 check_interval: jlong,
463 timeout: jlong,
464 failure_threshold: jint,
465 success_threshold: jint,
466 enabled: jboolean,
467) -> jlong {
468 let config = Box::new(RiHealthCheckConfig {
469 check_interval: Duration::from_secs(check_interval as u64),
470 timeout: Duration::from_secs(timeout as u64),
471 failure_threshold: failure_threshold as u32,
472 success_threshold: success_threshold as u32,
473 enabled: enabled != 0,
474 });
475 Box::into_raw(config) as jlong
476}
477
478#[no_mangle]
479pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_getCheckInterval0(
480 mut env: JNIEnv,
481 _class: JClass,
482 ptr: jlong,
483) -> jlong {
484 if !check_not_null(&mut env, ptr, "RiHealthCheckConfig") {
485 return 0;
486 }
487
488 let config = unsafe { &*(ptr as *const RiHealthCheckConfig) };
489 config.check_interval.as_secs() as jlong
490}
491
492#[no_mangle]
493pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_setCheckInterval0(
494 mut env: JNIEnv,
495 _class: JClass,
496 ptr: jlong,
497 value: jlong,
498) {
499 if !check_not_null(&mut env, ptr, "RiHealthCheckConfig") {
500 return;
501 }
502
503 let config = unsafe { &mut *(ptr as *mut RiHealthCheckConfig) };
504 config.check_interval = Duration::from_secs(value as u64);
505}
506
507#[no_mangle]
508pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_getTimeout0(
509 mut env: JNIEnv,
510 _class: JClass,
511 ptr: jlong,
512) -> jlong {
513 if !check_not_null(&mut env, ptr, "RiHealthCheckConfig") {
514 return 0;
515 }
516
517 let config = unsafe { &*(ptr as *const RiHealthCheckConfig) };
518 config.timeout.as_secs() as jlong
519}
520
521#[no_mangle]
522pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_setTimeout0(
523 mut env: JNIEnv,
524 _class: JClass,
525 ptr: jlong,
526 value: jlong,
527) {
528 if !check_not_null(&mut env, ptr, "RiHealthCheckConfig") {
529 return;
530 }
531
532 let config = unsafe { &mut *(ptr as *mut RiHealthCheckConfig) };
533 config.timeout = Duration::from_secs(value as u64);
534}
535
536#[no_mangle]
537pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_getFailureThreshold0(
538 mut env: JNIEnv,
539 _class: JClass,
540 ptr: jlong,
541) -> jint {
542 if !check_not_null(&mut env, ptr, "RiHealthCheckConfig") {
543 return 0;
544 }
545
546 let config = unsafe { &*(ptr as *const RiHealthCheckConfig) };
547 config.failure_threshold as jint
548}
549
550#[no_mangle]
551pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_getSuccessThreshold0(
552 mut env: JNIEnv,
553 _class: JClass,
554 ptr: jlong,
555) -> jint {
556 if !check_not_null(&mut env, ptr, "RiHealthCheckConfig") {
557 return 0;
558 }
559
560 let config = unsafe { &*(ptr as *const RiHealthCheckConfig) };
561 config.success_threshold as jint
562}
563
564#[no_mangle]
565pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_isEnabled0(
566 mut env: JNIEnv,
567 _class: JClass,
568 ptr: jlong,
569) -> jboolean {
570 if !check_not_null(&mut env, ptr, "RiHealthCheckConfig") {
571 return 0;
572 }
573
574 let config = unsafe { &*(ptr as *const RiHealthCheckConfig) };
575 if config.enabled { 1 } else { 0 }
576}
577
578#[no_mangle]
579pub extern "system" fn Java_com_dunimd_ri_RiHealthCheckConfig_free0(
580 _env: JNIEnv,
581 _class: JClass,
582 ptr: jlong,
583) {
584 if ptr != 0 {
585 unsafe {
586 let _ = Box::from_raw(ptr as *mut RiHealthCheckConfig);
587 }
588 }
589}
590
591#[no_mangle]
596pub extern "system" fn Java_com_dunimd_ri_RiHealthReport_new0(
597 _env: JNIEnv,
598 _class: JClass,
599) -> jlong {
600 let report = Box::new(RiHealthReport::new());
601 Box::into_raw(report) as jlong
602}
603
604#[no_mangle]
605pub extern "system" fn Java_com_dunimd_ri_RiHealthReport_getOverallStatus0(
606 mut env: JNIEnv,
607 _class: JClass,
608 ptr: jlong,
609) -> jint {
610 if !check_not_null(&mut env, ptr, "RiHealthReport") {
611 return 3;
612 }
613
614 let report = unsafe { &*(ptr as *const RiHealthReport) };
615 match report.overall_status {
616 RiHealthStatus::Healthy => 0,
617 RiHealthStatus::Degraded => 1,
618 RiHealthStatus::Unhealthy => 2,
619 RiHealthStatus::Unknown => 3,
620 }
621}
622
623#[no_mangle]
624pub extern "system" fn Java_com_dunimd_ri_RiHealthReport_getTotalComponents0(
625 mut env: JNIEnv,
626 _class: JClass,
627 ptr: jlong,
628) -> jint {
629 if !check_not_null(&mut env, ptr, "RiHealthReport") {
630 return 0;
631 }
632
633 let report = unsafe { &*(ptr as *const RiHealthReport) };
634 report.total_components as jint
635}
636
637#[no_mangle]
638pub extern "system" fn Java_com_dunimd_ri_RiHealthReport_getHealthyCount0(
639 mut env: JNIEnv,
640 _class: JClass,
641 ptr: jlong,
642) -> jint {
643 if !check_not_null(&mut env, ptr, "RiHealthReport") {
644 return 0;
645 }
646
647 let report = unsafe { &*(ptr as *const RiHealthReport) };
648 report.healthy_count as jint
649}
650
651#[no_mangle]
652pub extern "system" fn Java_com_dunimd_ri_RiHealthReport_getDegradedCount0(
653 mut env: JNIEnv,
654 _class: JClass,
655 ptr: jlong,
656) -> jint {
657 if !check_not_null(&mut env, ptr, "RiHealthReport") {
658 return 0;
659 }
660
661 let report = unsafe { &*(ptr as *const RiHealthReport) };
662 report.degraded_count as jint
663}
664
665#[no_mangle]
666pub extern "system" fn Java_com_dunimd_ri_RiHealthReport_getUnhealthyCount0(
667 mut env: JNIEnv,
668 _class: JClass,
669 ptr: jlong,
670) -> jint {
671 if !check_not_null(&mut env, ptr, "RiHealthReport") {
672 return 0;
673 }
674
675 let report = unsafe { &*(ptr as *const RiHealthReport) };
676 report.unhealthy_count as jint
677}
678
679#[no_mangle]
680pub extern "system" fn Java_com_dunimd_ri_RiHealthReport_getUnknownCount0(
681 mut env: JNIEnv,
682 _class: JClass,
683 ptr: jlong,
684) -> jint {
685 if !check_not_null(&mut env, ptr, "RiHealthReport") {
686 return 0;
687 }
688
689 let report = unsafe { &*(ptr as *const RiHealthReport) };
690 report.unknown_count as jint
691}
692
693#[no_mangle]
694pub extern "system" fn Java_com_dunimd_ri_RiHealthReport_free0(
695 _env: JNIEnv,
696 _class: JClass,
697 ptr: jlong,
698) {
699 if ptr != 0 {
700 unsafe {
701 let _ = Box::from_raw(ptr as *mut RiHealthReport);
702 }
703 }
704}
705
706#[no_mangle]
711pub extern "system" fn Java_com_dunimd_ri_RiHealthChecker_new0(
712 _env: JNIEnv,
713 _class: JClass,
714) -> jlong {
715 let checker = Box::new(RiHealthChecker::new());
716 Box::into_raw(checker) as jlong
717}
718
719#[no_mangle]
720pub extern "system" fn Java_com_dunimd_ri_RiHealthChecker_withConfig0(
721 mut env: JNIEnv,
722 _class: JClass,
723 config_ptr: jlong,
724) -> jlong {
725 if !check_not_null(&mut env, config_ptr, "RiHealthCheckConfig") {
726 return 0;
727 }
728
729 let config = unsafe { &*(config_ptr as *const RiHealthCheckConfig) };
730 let checker = Box::new(RiHealthChecker::with_config(config.clone()));
731 Box::into_raw(checker) as jlong
732}
733
734#[no_mangle]
735pub extern "system" fn Java_com_dunimd_ri_RiHealthChecker_getCheckCount0(
736 mut env: JNIEnv,
737 _class: JClass,
738 ptr: jlong,
739) -> jint {
740 if !check_not_null(&mut env, ptr, "RiHealthChecker") {
741 return 0;
742 }
743
744 let checker = unsafe { &*(ptr as *const RiHealthChecker) };
745 checker.check_count() as jint
746}
747
748#[no_mangle]
749pub extern "system" fn Java_com_dunimd_ri_RiHealthChecker_free0(
750 _env: JNIEnv,
751 _class: JClass,
752 ptr: jlong,
753) {
754 if ptr != 0 {
755 unsafe {
756 let _ = Box::from_raw(ptr as *mut RiHealthChecker);
757 }
758 }
759}
760
761#[no_mangle]
766pub extern "system" fn Java_com_dunimd_ri_RiErrorChain_new0(
767 mut env: JNIEnv,
768 _class: JClass,
769 message: JString,
770) -> jlong {
771 let msg: String = env.get_string(&message)
772 .expect("Failed to get message")
773 .into();
774
775 let error = std::io::Error::other(msg);
776 let chain = Box::new(RiErrorChain::new(error));
777 Box::into_raw(chain) as jlong
778}
779
780#[no_mangle]
781pub extern "system" fn Java_com_dunimd_ri_RiErrorChain_withContext0(
782 mut env: JNIEnv,
783 _class: JClass,
784 message: JString,
785 context: JString,
786) -> jlong {
787 let msg: String = env.get_string(&message)
788 .expect("Failed to get message")
789 .into();
790 let ctx: String = env.get_string(&context)
791 .expect("Failed to get context")
792 .into();
793
794 let error = std::io::Error::other(msg);
795 let chain = Box::new(RiErrorChain::with_context(error, ctx));
796 Box::into_raw(chain) as jlong
797}
798
799#[no_mangle]
800pub extern "system" fn Java_com_dunimd_ri_RiErrorChain_getContext0(
801 mut env: JNIEnv,
802 _class: JClass,
803 ptr: jlong,
804) -> jstring {
805 if !check_not_null(&mut env, ptr, "RiErrorChain") {
806 return std::ptr::null_mut();
807 }
808
809 let chain = unsafe { &*(ptr as *const RiErrorChain) };
810 env.new_string(chain.get_context())
811 .expect("Failed to create Java string")
812 .into_raw()
813}
814
815#[no_mangle]
816pub extern "system" fn Java_com_dunimd_ri_RiErrorChain_getSourceError0(
817 mut env: JNIEnv,
818 _class: JClass,
819 ptr: jlong,
820) -> jstring {
821 if !check_not_null(&mut env, ptr, "RiErrorChain") {
822 return std::ptr::null_mut();
823 }
824
825 let chain = unsafe { &*(ptr as *const RiErrorChain) };
826 env.new_string(chain.source_error().to_string())
827 .expect("Failed to create Java string")
828 .into_raw()
829}
830
831#[no_mangle]
832pub extern "system" fn Java_com_dunimd_ri_RiErrorChain_prettyFormat0(
833 mut env: JNIEnv,
834 _class: JClass,
835 ptr: jlong,
836) -> jstring {
837 if !check_not_null(&mut env, ptr, "RiErrorChain") {
838 return std::ptr::null_mut();
839 }
840
841 let chain = unsafe { &*(ptr as *const RiErrorChain) };
842 env.new_string(chain.pretty_format())
843 .expect("Failed to create Java string")
844 .into_raw()
845}
846
847#[no_mangle]
848pub extern "system" fn Java_com_dunimd_ri_RiErrorChain_free0(
849 _env: JNIEnv,
850 _class: JClass,
851 ptr: jlong,
852) {
853 if ptr != 0 {
854 unsafe {
855 let _ = Box::from_raw(ptr as *mut RiErrorChain);
856 }
857 }
858}
859
860#[no_mangle]
865pub extern "system" fn Java_com_dunimd_ri_RiErrorContext_new0(
866 _env: JNIEnv,
867 _class: JClass,
868) -> jlong {
869 0
870}
871
872#[no_mangle]
873pub extern "system" fn Java_com_dunimd_ri_RiErrorContext_chainFromMsg0(
874 mut env: JNIEnv,
875 _class: JClass,
876 message: JString,
877) -> jlong {
878 let msg: String = env.get_string(&message)
879 .expect("Failed to get message")
880 .into();
881
882 let error = std::io::Error::other(msg);
883 let chain = Box::new(RiErrorChain::new(error));
884 Box::into_raw(chain) as jlong
885}
886
887#[no_mangle]
888pub extern "system" fn Java_com_dunimd_ri_RiErrorContext_free0(
889 _env: JNIEnv,
890 _class: JClass,
891 _ptr: jlong,
892) {
893}
894
895#[no_mangle]
900pub extern "system" fn Java_com_dunimd_ri_RiLockError_new0(
901 mut env: JNIEnv,
902 _class: JClass,
903 context: JString,
904) -> jlong {
905 let ctx: String = env.get_string(&context)
906 .expect("Failed to get context")
907 .into();
908
909 let error = Box::new(RiLockError::new(&ctx));
910 Box::into_raw(error) as jlong
911}
912
913#[no_mangle]
914pub extern "system" fn Java_com_dunimd_ri_RiLockError_newWithPoisoned0(
915 mut env: JNIEnv,
916 _class: JClass,
917 context: JString,
918 is_poisoned: jboolean,
919) -> jlong {
920 let ctx: String = env.get_string(&context)
921 .expect("Failed to get context")
922 .into();
923
924 let error = if is_poisoned != 0 {
925 Box::new(RiLockError::poisoned(&ctx))
926 } else {
927 Box::new(RiLockError::new(&ctx))
928 };
929 Box::into_raw(error) as jlong
930}
931
932#[no_mangle]
933pub extern "system" fn Java_com_dunimd_ri_RiLockError_poisoned0(
934 mut env: JNIEnv,
935 _class: JClass,
936 context: JString,
937) -> jlong {
938 let ctx: String = env.get_string(&context)
939 .expect("Failed to get context")
940 .into();
941
942 let error = Box::new(RiLockError::poisoned(&ctx));
943 Box::into_raw(error) as jlong
944}
945
946#[no_mangle]
947pub extern "system" fn Java_com_dunimd_ri_RiLockError_getContext0(
948 mut env: JNIEnv,
949 _class: JClass,
950 ptr: jlong,
951) -> jstring {
952 if !check_not_null(&mut env, ptr, "RiLockError") {
953 return std::ptr::null_mut();
954 }
955
956 let error = unsafe { &*(ptr as *const RiLockError) };
957 env.new_string(error.get_context())
958 .expect("Failed to create Java string")
959 .into_raw()
960}
961
962#[no_mangle]
963pub extern "system" fn Java_com_dunimd_ri_RiLockError_isPoisoned0(
964 mut env: JNIEnv,
965 _class: JClass,
966 ptr: jlong,
967) -> jboolean {
968 if !check_not_null(&mut env, ptr, "RiLockError") {
969 return 0;
970 }
971
972 let error = unsafe { &*(ptr as *const RiLockError) };
973 if error.is_poisoned() { 1 } else { 0 }
974}
975
976#[no_mangle]
977pub extern "system" fn Java_com_dunimd_ri_RiLockError_getMessage0(
978 mut env: JNIEnv,
979 _class: JClass,
980 ptr: jlong,
981) -> jstring {
982 if !check_not_null(&mut env, ptr, "RiLockError") {
983 return std::ptr::null_mut();
984 }
985
986 let error = unsafe { &*(ptr as *const RiLockError) };
987 env.new_string(error.to_string())
988 .expect("Failed to create Java string")
989 .into_raw()
990}
991
992#[no_mangle]
993pub extern "system" fn Java_com_dunimd_ri_RiLockError_free0(
994 _env: JNIEnv,
995 _class: JClass,
996 ptr: jlong,
997) {
998 if ptr != 0 {
999 unsafe {
1000 let _ = Box::from_raw(ptr as *mut RiLockError);
1001 }
1002 }
1003}
1004
1005#[no_mangle]
1010pub extern "system" fn Java_com_dunimd_ri_RiLifecycleObserver_new0(
1011 _env: JNIEnv,
1012 _class: JClass,
1013) -> jlong {
1014 let observer = Box::new(RiLifecycleObserver::new());
1015 Box::into_raw(observer) as jlong
1016}
1017
1018#[no_mangle]
1019pub extern "system" fn Java_com_dunimd_ri_RiLifecycleObserver_getName0(
1020 mut env: JNIEnv,
1021 _class: JClass,
1022 ptr: jlong,
1023) -> jstring {
1024 if !check_not_null(&mut env, ptr, "RiLifecycleObserver") {
1025 return std::ptr::null_mut();
1026 }
1027
1028 let observer = unsafe { &*(ptr as *const RiLifecycleObserver) };
1029 env.new_string(observer.name())
1030 .expect("Failed to create Java string")
1031 .into_raw()
1032}
1033
1034#[no_mangle]
1035pub extern "system" fn Java_com_dunimd_ri_RiLifecycleObserver_isCritical0(
1036 mut env: JNIEnv,
1037 _class: JClass,
1038 ptr: jlong,
1039) -> jboolean {
1040 if !check_not_null(&mut env, ptr, "RiLifecycleObserver") {
1041 return 0;
1042 }
1043
1044 let observer = unsafe { &*(ptr as *const RiLifecycleObserver) };
1045 if observer.is_critical() { 1 } else { 0 }
1046}
1047
1048#[no_mangle]
1049pub extern "system" fn Java_com_dunimd_ri_RiLifecycleObserver_free0(
1050 _env: JNIEnv,
1051 _class: JClass,
1052 ptr: jlong,
1053) {
1054 if ptr != 0 {
1055 unsafe {
1056 let _ = Box::from_raw(ptr as *mut RiLifecycleObserver);
1057 }
1058 }
1059}
1060
1061#[no_mangle]
1066pub extern "system" fn Java_com_dunimd_ri_RiLogAnalyticsModule_new0(
1067 _env: JNIEnv,
1068 _class: JClass,
1069) -> jlong {
1070 let module = Box::new(RiLogAnalyticsModule::new());
1071 Box::into_raw(module) as jlong
1072}
1073
1074#[no_mangle]
1075pub extern "system" fn Java_com_dunimd_ri_RiLogAnalyticsModule_getName0(
1076 mut env: JNIEnv,
1077 _class: JClass,
1078 ptr: jlong,
1079) -> jstring {
1080 if !check_not_null(&mut env, ptr, "RiLogAnalyticsModule") {
1081 return std::ptr::null_mut();
1082 }
1083
1084 let module = unsafe { &*(ptr as *const RiLogAnalyticsModule) };
1085 env.new_string(module.name())
1086 .expect("Failed to create Java string")
1087 .into_raw()
1088}
1089
1090#[no_mangle]
1091pub extern "system" fn Java_com_dunimd_ri_RiLogAnalyticsModule_isCritical0(
1092 mut env: JNIEnv,
1093 _class: JClass,
1094 ptr: jlong,
1095) -> jboolean {
1096 if !check_not_null(&mut env, ptr, "RiLogAnalyticsModule") {
1097 return 0;
1098 }
1099
1100 let module = unsafe { &*(ptr as *const RiLogAnalyticsModule) };
1101 if module.is_critical() { 1 } else { 0 }
1102}
1103
1104#[no_mangle]
1105pub extern "system" fn Java_com_dunimd_ri_RiLogAnalyticsModule_isEnabled0(
1106 mut env: JNIEnv,
1107 _class: JClass,
1108 ptr: jlong,
1109) -> jboolean {
1110 if !check_not_null(&mut env, ptr, "RiLogAnalyticsModule") {
1111 return 0;
1112 }
1113
1114 let module = unsafe { &*(ptr as *const RiLogAnalyticsModule) };
1115 if module.enabled { 1 } else { 0 }
1116}
1117
1118#[no_mangle]
1119pub extern "system" fn Java_com_dunimd_ri_RiLogAnalyticsModule_free0(
1120 _env: JNIEnv,
1121 _class: JClass,
1122 ptr: jlong,
1123) {
1124 if ptr != 0 {
1125 unsafe {
1126 let _ = Box::from_raw(ptr as *mut RiLogAnalyticsModule);
1127 }
1128 }
1129}