Adam Snaider | 4351678 | 2023-06-26 15:14:18 -0700 | [diff] [blame] | 1 | use aos_configuration as config; |
| 2 | use aos_events_event_loop_runtime::{EventLoopRuntime, Sender, Watcher}; |
| 3 | use aos_events_shm_event_loop::ShmEventLoop; |
Adam Snaider | 4351678 | 2023-06-26 15:14:18 -0700 | [diff] [blame] | 4 | use futures::never::Never; |
| 5 | use std::path::Path; |
| 6 | |
| 7 | use ping_rust_fbs::aos::examples as ping; |
| 8 | use pong_rust_fbs::aos::examples as pong; |
| 9 | |
| 10 | fn main() { |
| 11 | aos_init::init(); |
| 12 | let config = config::read_config_from(Path::new("pingpong_config.json")).unwrap(); |
| 13 | ShmEventLoop::new(&config).run_with(|runtime| { |
| 14 | let task = pong(runtime); |
| 15 | runtime.spawn(task); |
| 16 | }); |
| 17 | } |
| 18 | |
| 19 | /// Responds to ping messages with an equivalent pong. |
Adam Snaider | de51c67 | 2023-09-28 21:55:43 -0700 | [diff] [blame] | 20 | async fn pong(event_loop: &EventLoopRuntime<'_>) -> Never { |
Adam Snaider | 4351678 | 2023-06-26 15:14:18 -0700 | [diff] [blame] | 21 | // The watcher gives us incoming ping messages. |
| 22 | let mut ping_watcher: Watcher<ping::Ping> = event_loop.make_watcher("/test").unwrap(); |
| 23 | |
| 24 | // The sender is used to send messages back to the pong channel. |
| 25 | let mut pong_sender: Sender<pong::Pong> = event_loop.make_sender("/test").unwrap(); |
Adam Snaider | 4351678 | 2023-06-26 15:14:18 -0700 | [diff] [blame] | 26 | |
Adam Snaider | de51c67 | 2023-09-28 21:55:43 -0700 | [diff] [blame] | 27 | event_loop.on_run().await; |
| 28 | loop { |
| 29 | let ping = dbg!(ping_watcher.next().await); |
Adam Snaider | 4351678 | 2023-06-26 15:14:18 -0700 | [diff] [blame] | 30 | |
Adam Snaider | de51c67 | 2023-09-28 21:55:43 -0700 | [diff] [blame] | 31 | let mut builder = pong_sender.make_builder(); |
| 32 | let mut pong = pong::PongBuilder::new(builder.fbb()); |
| 33 | pong.add_value(ping.message().unwrap().value()); |
| 34 | pong.add_initial_send_time(event_loop.monotonic_now().into()); |
| 35 | let pong = pong.finish(); |
| 36 | builder.send(pong).expect("Can't send pong reponse"); |
Adam Snaider | 4351678 | 2023-06-26 15:14:18 -0700 | [diff] [blame] | 37 | } |
| 38 | } |