1#[macro_export]
16macro_rules! ok_or_throw {
17 ($env:expr, $result:expr) => {
18 match $result {
19 Ok(value) => value,
20 Err(err) => {
21 err.throw(&mut $env);
22 return JObject::null();
23 }
24 }
25 };
26}
27
28macro_rules! ok_or_throw_without_return {
29 ($env:expr, $result:expr) => {
30 match $result {
31 Ok(value) => value,
32 Err(err) => {
33 err.throw(&mut $env);
34 return;
35 }
36 }
37 };
38}
39
40#[macro_export]
41macro_rules! ok_or_throw_with_return {
42 ($env:expr, $result:expr, $ret:expr) => {
43 match $result {
44 Ok(value) => value,
45 Err(err) => {
46 err.throw(&mut $env);
47 return $ret;
48 }
49 }
50 };
51}
52
53mod blocking_dataset;
54mod blocking_scanner;
55pub mod error;
56pub mod ffi;
57mod file_reader;
58mod file_writer;
59mod fragment;
60pub mod traits;
61pub mod utils;
62
63pub use error::Error;
64pub use error::Result;
65pub use ffi::JNIEnvExt;
66
67use env_logger::{Builder, Env};
68use std::sync::Arc;
69
70use std::sync::LazyLock;
71
72pub static RT: LazyLock<tokio::runtime::Runtime> = LazyLock::new(|| {
73 tokio::runtime::Builder::new_multi_thread()
74 .enable_all()
75 .build()
76 .expect("Failed to create tokio runtime")
77});
78
79#[no_mangle]
80pub extern "system" fn Java_com_lancedb_lance_JniLoader_initLanceLogger() {
81 let env = Env::new()
82 .filter_or("LANCE_LOG", "warn")
83 .write_style("LANCE_LOG_STYLE");
84 let mut log_builder = Builder::from_env(env);
85 let logger = Arc::new(log_builder.build());
86 let max_level = logger.filter();
87 log::set_boxed_logger(Box::new(logger.clone())).unwrap();
88 log::set_max_level(max_level);
89 }