change C API to match the new Rust API

main
Ziyang Hu 2 years ago
parent e374f5afe1
commit ec65c8e6c8

@ -12,7 +12,7 @@ use std::collections::BTreeMap;
use std::ffi::{c_char, CStr, CString}; use std::ffi::{c_char, CStr, CString};
use std::ptr::null_mut; use std::ptr::null_mut;
use std::sync::atomic::{AtomicI32, Ordering}; use std::sync::atomic::{AtomicI32, Ordering};
use std::sync::Mutex; use std::sync::{Arc, Mutex};
use lazy_static::lazy_static; use lazy_static::lazy_static;
@ -20,7 +20,7 @@ use cozo::*;
struct Handles { struct Handles {
current: AtomicI32, current: AtomicI32,
dbs: Mutex<BTreeMap<i32, DbInstance>>, dbs: Mutex<BTreeMap<i32, Arc<DbInstance>>>,
} }
lazy_static! { lazy_static! {
@ -69,7 +69,7 @@ pub unsafe extern "C" fn cozo_open_db(
let id = HANDLES.current.fetch_add(1, Ordering::AcqRel); let id = HANDLES.current.fetch_add(1, Ordering::AcqRel);
let mut dbs = HANDLES.dbs.lock().unwrap(); let mut dbs = HANDLES.dbs.lock().unwrap();
dbs.insert(id, db); dbs.insert(id, Arc::new(db));
*db_id = id; *db_id = id;
null_mut() null_mut()
} }

Loading…
Cancel
Save