diff options
author | Romeo Disca <romeo.disca@gmail.com> | 2020-08-17 20:11:14 +0200 |
---|---|---|
committer | Romeo Disca <romeo.disca@gmail.com> | 2020-08-17 20:11:14 +0200 |
commit | d50a95ba36c86d49545c9fe7c3bcb85530c48093 (patch) | |
tree | f70556ec3fa98073134e9e2e9ff13fd45ec1ac8b /src/main.rs | |
parent | f2630bbb255dab230348dff8cedfcef40787e57e (diff) |
chore: create event loop
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs index 581547b..28eb8dc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,13 +19,29 @@ async fn main() -> Result<(), Box<dyn Error>> { let event = event_handler(|event| { println!("ping response: {:?}", event); }); let event2 = event_handler(|event| { println!("ping response: {:?}", event); }); - let mut client = FlicClient::new("127.0.0.1:5551").await? - .register_event_handler(event) - .register_event_handler(event2) + let client = FlicClient::new("127.0.0.1:5551").await? + .register_event_handler(event).await + .register_event_handler(event2).await ; - - client.submit(Command::GetInfo).await; - client.listen().await; + let client1 = Arc::new(client); + let client2 = client1.clone(); + + let cmd = tokio::spawn(async move { + client1.submit(Command::GetInfo).await; + tokio::time::delay_for(Duration::from_secs(3)).await; + client1.submit(Command::GetInfo).await; + tokio::time::delay_for(Duration::from_secs(3)).await; + client1.stop().await; + }); + let lst = tokio::spawn(async move { + while client2.is_running().await { + client2.listen().await; + } + println!("stop"); + }); + + lst.await; + cmd.await; Ok(()) } |