First Commit
This commit is contained in:
commit
dbdc5bcc4a
1791 files changed
+489451
No files matched your search
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c)2021 ZeroTier, Inc.
|
||||
*
|
||||
* Use of this software is governed by the Business Source License included
|
||||
* in the LICENSE.TXT file in the project's root directory.
|
||||
*
|
||||
* Change Date: 2026-01-01
|
||||
*
|
||||
* On the date above, in accordance with the Business Source License, use
|
||||
* of this software will be governed by version 2.0 of the Apache License.
|
||||
*/
|
||||
|
||||
use std::ffi::CStr;
|
||||
use std::os::raw::c_char;
|
||||
|
||||
use crate::NetworkJoinedParams;
|
||||
use crate::SmeeClient;
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn smee_client_new(
|
||||
temporal_url: *const c_char,
|
||||
namespace: *const c_char,
|
||||
task_queue: *const c_char,
|
||||
) -> *mut SmeeClient {
|
||||
let url = unsafe {
|
||||
assert!(!temporal_url.is_null());
|
||||
CStr::from_ptr(temporal_url).to_str().unwrap()
|
||||
};
|
||||
|
||||
let ns = unsafe {
|
||||
assert!(!namespace.is_null());
|
||||
CStr::from_ptr(namespace).to_str().unwrap()
|
||||
};
|
||||
|
||||
let tq = unsafe {
|
||||
assert!(!task_queue.is_null());
|
||||
CStr::from_ptr(task_queue).to_str().unwrap()
|
||||
};
|
||||
|
||||
match SmeeClient::new(url, ns, tq) {
|
||||
Ok(c) => Box::into_raw(Box::new(c)),
|
||||
Err(e) => {
|
||||
println!("error creating smee client instance: {}", e);
|
||||
std::ptr::null_mut()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn smee_client_delete(ptr: *mut SmeeClient) {
|
||||
if ptr.is_null() {
|
||||
return;
|
||||
}
|
||||
let smee = unsafe {
|
||||
assert!(!ptr.is_null());
|
||||
Box::from_raw(&mut *ptr)
|
||||
};
|
||||
|
||||
smee.shutdown();
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn smee_client_notify_network_joined(
|
||||
smee_instance: *mut SmeeClient,
|
||||
network_id: *const c_char,
|
||||
member_id: *const c_char,
|
||||
) -> bool {
|
||||
let nwid = unsafe {
|
||||
assert!(!network_id.is_null());
|
||||
CStr::from_ptr(network_id).to_str().unwrap()
|
||||
};
|
||||
|
||||
let mem_id = unsafe {
|
||||
assert!(!member_id.is_null());
|
||||
CStr::from_ptr(member_id).to_str().unwrap()
|
||||
};
|
||||
|
||||
let smee = unsafe {
|
||||
assert!(!smee_instance.is_null());
|
||||
&mut *smee_instance
|
||||
};
|
||||
|
||||
let params = NetworkJoinedParams::new(nwid, mem_id);
|
||||
|
||||
match smee.notify_network_joined(params) {
|
||||
Ok(()) => true,
|
||||
Err(e) => {
|
||||
println!("error notifying network joined: {0}", e.to_string());
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user