few adaptations to use latest nwaku master

This commit is contained in:
Ivan Folgueira Bande 2025-01-08 23:33:21 +01:00
parent 863d3aee9c
commit 4cdbacda19
No known key found for this signature in database
GPG Key ID: 3C117481F89E24A7
5 changed files with 68 additions and 21 deletions

View File

@ -40,7 +40,12 @@ async fn main() -> Result<(), Error> {
println!("Message Received in NODE 2: {}", msg); println!("Message Received in NODE 2: {}", msg);
println!("::::::::::::::::::::::::::::::::::::::::::::::::::::"); println!("::::::::::::::::::::::::::::::::::::::::::::::::::::");
} }
WakuEvent::RelayTopicHealthChange(_evt) => {} // do nothing WakuEvent::RelayTopicHealthChange(_evt) => {
// dbg!("Relay topic change evt", evt);
}
WakuEvent::ConnectionChange(_evt) => {
// dbg!("Conn change evt", evt);
}
WakuEvent::Unrecognized(err) => panic!("Unrecognized waku event: {:?}", err), WakuEvent::Unrecognized(err) => panic!("Unrecognized waku event: {:?}", err),
_ => panic!("event case not expected"), _ => panic!("event case not expected"),
}; };
@ -64,6 +69,12 @@ async fn main() -> Result<(), Error> {
println!("Message Received in NODE 1: {}", msg); println!("Message Received in NODE 1: {}", msg);
println!("::::::::::::::::::::::::::::::::::::::::::::::::::::"); println!("::::::::::::::::::::::::::::::::::::::::::::::::::::");
} }
WakuEvent::RelayTopicHealthChange(_evt) => {
// dbg!("Relay topic change evt", evt);
}
WakuEvent::ConnectionChange(_evt) => {
// dbg!("Conn change evt", evt);
}
WakuEvent::Unrecognized(err) => panic!("Unrecognized waku event: {:?}", err), WakuEvent::Unrecognized(err) => panic!("Unrecognized waku event: {:?}", err),
_ => panic!("event case not expected"), _ => panic!("event case not expected"),
}; };

View File

@ -75,7 +75,12 @@ impl TicTacToeApp<Initialized> {
} }
} }
}, },
WakuEvent::RelayTopicHealthChange(_evt) => {}, // do nothing WakuEvent::RelayTopicHealthChange(_evt) => {
// dbg!("Relay topic change evt", evt);
},
WakuEvent::ConnectionChange(_evt) => {
// dbg!("Conn change evt", evt);
},
WakuEvent::Unrecognized(err) => panic!("Unrecognized waku event: {:?}", err), WakuEvent::Unrecognized(err) => panic!("Unrecognized waku event: {:?}", err),
_ => panic!("event case not expected"), _ => panic!("event case not expected"),
}; };
@ -89,14 +94,14 @@ impl TicTacToeApp<Initialized> {
let waku = self.waku.start().await.expect("waku should start"); let waku = self.waku.start().await.expect("waku should start");
// Subscribe to desired topic using the relay protocol // Subscribe to desired topic using the relay protocol
// waku.relay_subscribe(&self.game_topic).await.expect("waku should subscribe"); waku.relay_subscribe(&self.game_topic).await.expect("waku should subscribe");
// Example filter subscription. This is needed in edge nodes (resource-restricted devices) // Example filter subscription. This is needed in edge nodes (resource-restricted devices)
// Nodes usually use either relay or lightpush/filter protocols // Nodes usually use either relay or lightpush/filter protocols
let ctopic = WakuContentTopic::new("waku", "2", "tictactoegame", Encoding::Proto); // let ctopic = WakuContentTopic::new("waku", "2", "tictactoegame", Encoding::Proto);
let content_topics = vec![ctopic]; // let content_topics = vec![ctopic];
waku.filter_subscribe(&self.game_topic, content_topics).await.expect("waku should subscribe"); // waku.filter_subscribe(&self.game_topic, content_topics).await.expect("waku should subscribe");
// End filter example ---------------------------------------- // End filter example ----------------------------------------
@ -137,18 +142,18 @@ impl TicTacToeApp<Running> {
false, false,
); );
// if let Ok(msg_hash) = self.waku.relay_publish_message(&message, &self.game_topic, None).await { if let Ok(msg_hash) = self.waku.relay_publish_message(&message, &self.game_topic, None).await {
// dbg!(format!("message hash published: {}", msg_hash)); dbg!(format!("message hash published: {}", msg_hash));
// } }
// Example lightpush publish message. This is needed in edge nodes (resource-restricted devices) // Example lightpush publish message. This is needed in edge nodes (resource-restricted devices)
// Nodes usually use either relay or lightpush/filter protocols // Nodes usually use either relay or lightpush/filter protocols
// //
let msg_hash_ret = self.waku.lightpush_publish_message(&message, &self.game_topic).await; // let msg_hash_ret = self.waku.lightpush_publish_message(&message, &self.game_topic).await;
match msg_hash_ret { // match msg_hash_ret {
Ok(msg_hash) => println!("Published message hash {:?}", msg_hash.to_string()), // Ok(msg_hash) => println!("Published message hash {:?}", msg_hash.to_string()),
Err(error) => println!("Failed to publish with lightpush: {}", error) // Err(error) => println!("Failed to publish with lightpush: {}", error)
} // }
// End example lightpush publish message // End example lightpush publish message
} }

View File

@ -111,7 +111,12 @@ impl App<Initialized> {
} }
} }
}, },
WakuEvent::RelayTopicHealthChange(_evt) => {} // do nothing WakuEvent::RelayTopicHealthChange(_evt) => {
// dbg!("Relay topic change evt", evt);
},
WakuEvent::ConnectionChange(_evt) => {
// dbg!("Conn change evt", evt);
},
WakuEvent::Unrecognized(err) => eprintln!("Unrecognized waku event: {:?}", err), WakuEvent::Unrecognized(err) => eprintln!("Unrecognized waku event: {:?}", err),
_ => eprintln!("event case not expected"), _ => eprintln!("event case not expected"),
}; };
@ -120,9 +125,6 @@ impl App<Initialized> {
let waku = self.waku.start().await?; let waku = self.waku.start().await?;
let pubsub_topic = PubsubTopic::new(DEFAULT_PUBSUB_TOPIC);
waku.relay_subscribe(&pubsub_topic).await?;
Ok(App { Ok(App {
input: self.input, input: self.input,
nick: self.nick, nick: self.nick,

View File

@ -24,6 +24,9 @@ pub enum WakuEvent {
#[serde(rename = "relay_topic_health_change")] #[serde(rename = "relay_topic_health_change")]
RelayTopicHealthChange(TopicHealthEvent), RelayTopicHealthChange(TopicHealthEvent),
#[serde(rename = "connection_change")]
ConnectionChange(ConnectionChangeEvent),
Unrecognized(serde_json::Value), Unrecognized(serde_json::Value),
} }
@ -39,7 +42,7 @@ pub struct WakuMessageEvent {
pub waku_message: WakuMessage, pub waku_message: WakuMessage,
} }
/// Type of `event` field for a `message` event /// Type of `event` field for a `topic health` event
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct TopicHealthEvent { pub struct TopicHealthEvent {
@ -49,10 +52,20 @@ pub struct TopicHealthEvent {
pub topic_health: String, pub topic_health: String,
} }
/// Type of `event` field for a `connection change` event
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct ConnectionChangeEvent {
/// The pubsub topic on which the message was received
pub peer_id: String,
/// The message hash
pub peer_event: String,
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::WakuEvent; use crate::WakuEvent;
use crate::WakuEvent::RelayTopicHealthChange; use crate::WakuEvent::{ConnectionChange, RelayTopicHealthChange};
#[test] #[test]
fn deserialize_message_event() { fn deserialize_message_event() {
@ -73,4 +86,20 @@ mod tests {
_ => panic!("Expected RelayTopicHealthChange event, but got {:?}", evt), _ => panic!("Expected RelayTopicHealthChange event, but got {:?}", evt),
} }
} }
#[test]
fn deserialize_connection_change_event() {
let s = "{\"eventType\":\"connection_change\", \"peerId\":\"16Uiu2HAmAR24Mbb6VuzoyUiGx42UenDkshENVDj4qnmmbabLvo31\",\"peerEvent\":\"Joined\"}";
let evt: WakuEvent = serde_json::from_str(s).unwrap();
match evt {
ConnectionChange(conn_change_event) => {
assert_eq!(
conn_change_event.peer_id,
"16Uiu2HAmAR24Mbb6VuzoyUiGx42UenDkshENVDj4qnmmbabLvo31"
);
assert_eq!(conn_change_event.peer_event, "Joined");
}
_ => panic!("Expected RelayTopicHealthChange event, but got {:?}", evt),
}
}
} }

@ -1 +1 @@
Subproject commit 1d206a5f5e89f7bac855bfd2e25066bcf1187ade Subproject commit 625c8ee51bc3e065da0e2e8d3a53d3634589f548