diff --git a/examples/basic/src/main.rs b/examples/basic/src/main.rs index d0da1c3..e81f2f0 100644 --- a/examples/basic/src/main.rs +++ b/examples/basic/src/main.rs @@ -46,6 +46,9 @@ async fn main() -> Result<(), Error> { WakuEvent::ConnectionChange(_evt) => { // dbg!("Conn change evt", evt); } + WakuEvent::NodeHealthChange(_evt) => { + // dbg!("Node health change evt", evt); + } WakuEvent::Unrecognized(err) => panic!("Unrecognized waku event: {:?}", err), _ => panic!("event case not expected"), }; @@ -75,6 +78,9 @@ async fn main() -> Result<(), Error> { WakuEvent::ConnectionChange(_evt) => { // dbg!("Conn change evt", evt); } + WakuEvent::NodeHealthChange(_evt) => { + // dbg!("Node health change evt", evt); + } WakuEvent::Unrecognized(err) => panic!("Unrecognized waku event: {:?}", err), _ => panic!("event case not expected"), }; diff --git a/waku-bindings/src/node/config.rs b/waku-bindings/src/node/config.rs index 6bf5fb0..5cc8523 100644 --- a/waku-bindings/src/node/config.rs +++ b/waku-bindings/src/node/config.rs @@ -28,7 +28,7 @@ pub struct WakuNodeConfig { #[default(Some(true))] pub relay: Option, pub relay_topics: Vec, - #[default(vec![1])] + #[default(vec![0])] pub shards: Vec, #[serde(skip_serializing_if = "Option::is_none")] pub max_message_size: Option, diff --git a/waku-bindings/src/node/events.rs b/waku-bindings/src/node/events.rs index afd9a13..e231712 100644 --- a/waku-bindings/src/node/events.rs +++ b/waku-bindings/src/node/events.rs @@ -27,6 +27,9 @@ pub enum WakuEvent { #[serde(rename = "connection_change")] ConnectionChange(ConnectionChangeEvent), + #[serde(rename = "node_health_change")] + NodeHealthChange(NodeHealthChangeEvent), + Unrecognized(serde_json::Value), } @@ -62,6 +65,14 @@ pub struct ConnectionChangeEvent { pub peer_event: String, } +/// Type of `event` field for a `node health change` event +#[derive(Serialize, Deserialize, Debug)] +#[serde(rename_all = "camelCase")] +pub struct NodeHealthChangeEvent { + /// The node connection status: Disconnected, PartiallyConnected, or Connected + pub status: String, +} + #[cfg(test)] mod tests { use crate::WakuEvent; diff --git a/waku-sys/build.rs b/waku-sys/build.rs index 6758a67..2f094f2 100644 --- a/waku-sys/build.rs +++ b/waku-sys/build.rs @@ -100,6 +100,13 @@ fn generate_bindgen_code(project_dir: &Path) { println!("cargo:rustc-link-lib=dl"); println!("cargo:rustc-link-lib=m"); + // libwaku.a bundles C++ objects (nim-lsquic / BoringSSL); link the C++ runtime. + if cfg!(target_os = "macos") { + println!("cargo:rustc-link-lib=c++"); + } else { + println!("cargo:rustc-link-lib=stdc++"); + } + println!( "cargo:rustc-link-search=native={}", nwaku_path