Compare commits

..

1 commit

Author SHA1 Message Date
d1d9042807
WIP 2023-05-26 22:03:12 +02:00
137 changed files with 114 additions and 107 deletions

4
Cargo.lock generated
View file

@ -126,6 +126,10 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "nat_traversal"
version = "0.1.0"
[[package]]
name = "nom"
version = "7.1.3"

View file

@ -1,18 +1,12 @@
[package]
name = "dt_p2p"
version = "0.1.0"
edition = "2021"
[workspace]
resolver = "2"
members = [
"lib/dt_p2p",
"lib/nat_traversal"
]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
libc = "0.2.144"
[build-dependencies]
bindgen = "0.65.1"
[lib]
crate-type = ["cdylib", "lib"]
[unstable]
build-std = true
# [profile.dev.package.backtrace]
# opt-level = 3

15
lib/dt_p2p/Cargo.toml Normal file
View file

@ -0,0 +1,15 @@
[package]
name = "dt_p2p"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
libc = "0.2.144"
[lib]
crate-type = ["cdylib", "lib"]
[build-dependencies]
bindgen = "0.65.1"

64
lib/dt_p2p/src/lib.rs Normal file
View file

@ -0,0 +1,64 @@
use std::{
ffi::{c_char, CString},
sync::RwLock,
};
mod stingray_sdk;
use crate::stingray_sdk::{GetApiFunction, LoggingApi, PluginApi, PluginApiID};
const PLUGIN_NAME: &str = "dt_p2p";
struct Plugin {
log: Option<LoggingApi>,
}
impl Plugin {
pub const fn new() -> Self {
Self { log: None }
}
}
static PLUGIN: RwLock<Plugin> = RwLock::new(Plugin::new());
#[no_mangle]
pub extern "C" fn get_name() -> *const c_char {
let s = CString::new(PLUGIN_NAME).expect("Failed to create CString from plugin name");
s.as_ptr()
}
#[no_mangle]
pub extern "C" fn setup_game(get_engine_api: GetApiFunction) {
println!("setup_game");
PLUGIN.log = Some(LoggingApi::get(get_engine_api));
let log = PLUGIN.log.as_ref().unwrap();
log.info(
PLUGIN_NAME,
format!("Hello, world! This is {}!", PLUGIN_NAME),
);
}
#[no_mangle]
pub extern "C" fn shutdown_game() {
println!("shutdown_game");
// log.info(PLUGIN_NAME, format!("Goodbye, world!", PLUGIN_NAME));
}
#[no_mangle]
pub extern "C" fn get_plugin_api(id: PluginApiID) -> *mut PluginApi {
if id == PluginApiID::PLUGIN_API_ID {
let api = PluginApi {
get_name: Some(get_name),
setup_game: Some(setup_game),
shutdown_game: Some(shutdown_game),
..Default::default()
};
Box::into_raw(Box::new(api))
} else {
std::ptr::null_mut()
}
}

Some files were not shown because too many files have changed in this diff Show more