| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- * 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
- }
- }
- }
|