Browse Source

Start creating a staticlib with a node API for C

tags/v0.0.0-test.4
Philipp Oppermann 3 years ago
parent
commit
370cadee6b
Failed to extract signature
4 changed files with 50 additions and 9 deletions
  1. +8
    -0
      Cargo.lock
  2. +8
    -9
      Cargo.toml
  3. +13
    -0
      apis/c/node/Cargo.toml
  4. +21
    -0
      apis/c/node/src/lib.rs

+ 8
- 0
Cargo.lock View File

@@ -696,6 +696,14 @@ dependencies = [
"zenoh-config",
]

[[package]]
name = "dora-node-api-c"
version = "0.1.0"
dependencies = [
"dora-node-api",
"futures",
]

[[package]]
name = "dora-node-api-python"
version = "0.1.0"


+ 8
- 9
Cargo.toml View File

@@ -1,15 +1,14 @@
[workspace]
members = [
"apis/rust/node",
"apis/rust/operator",
"apis/rust/operator/macros",
"apis/c/node",
"apis/python/node",
"binaries/coordinator",
"binaries/runtime",
"libraries/extensions/message",
"libraries/extensions/telemetry/metrics",
"libraries/extensions/telemetry/tracing",
"libraries/core",
"apis/rust/*",
"apis/rust/operator/macros",
"binaries/*",
"examples/example-operator",
"libraries/core",
"libraries/extensions/message",
"libraries/extensions/telemetry/*",
"libraries/extensions/telemetry/*",
"libraries/extensions/zenoh-logger",
]

+ 13
- 0
apis/c/node/Cargo.toml View File

@@ -0,0 +1,13 @@
[package]
name = "dora-node-api-c"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[lib]
crate-type = ["staticlib"]

[dependencies]
dora-node-api = { path = "../../rust/node" }
futures = "0.3.21"

+ 21
- 0
apis/c/node/src/lib.rs View File

@@ -0,0 +1,21 @@
use std::ptr;

use dora_node_api::DoraNode;
use futures::executor::block_on;

pub extern "C" fn init_dora_node_from_env() -> *mut () {
let node = match block_on(DoraNode::init_from_env()) {
Ok(n) => n,
Err(err) => {
eprintln!("{err:?}");
return ptr::null_mut();
}
};

Box::into_raw(Box::new(node)).cast()
}

pub extern "C" fn free_dora_node(node: *mut ()) {
let node: Box<DoraNode> = unsafe { Box::from_raw(node.cast()) };
let _ = node;
}

Loading…
Cancel
Save