author | Sunil Nimmagadda <sunil@nimmagadda.net> |
Mon, 28 Nov 2022 19:29:30 +0530 | |
changeset 5 | b5394b113889 |
parent 4 | 3438e31465db |
child 6 | 847fed6198dc |
permissions | -rw-r--r-- |
3
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
1 |
use tokio::signal::unix::{signal, SignalKind}; |
4 | 2 |
use tokio::{time::interval, time::Duration}; |
3
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
3 |
|
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
4 |
const ADV_INTERVAL: u64 = 3; |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
5 |
const SKEW_INTERVAL: u64 = 1; |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
6 |
|
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
7 |
async fn advert_handler() { |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
8 |
println!("3 second timer fired"); |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
9 |
} |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
10 |
|
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
11 |
async fn skew_handler() { |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
12 |
println!("1 second timer fired"); |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
13 |
} |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
14 |
|
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
15 |
async fn sighup_handler() { |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
16 |
println!("got SIGHUP"); |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
17 |
} |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
18 |
|
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
19 |
#[tokio::main(flavor = "current_thread")] |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
20 |
async fn main() { |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
21 |
let advert_handle = tokio::spawn(async move { |
4 | 22 |
let mut advert_interval = interval(Duration::from_secs(ADV_INTERVAL)); |
3
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
23 |
loop { |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
24 |
advert_interval.tick().await; |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
25 |
advert_handler().await; |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
26 |
} |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
27 |
}); |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
28 |
let skew_handle = tokio::spawn(async move { |
4 | 29 |
let mut skew_interval = interval(Duration::from_secs(SKEW_INTERVAL)); |
3
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
30 |
loop { |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
31 |
skew_interval.tick().await; |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
32 |
skew_handler().await; |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
33 |
} |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
34 |
}); |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
35 |
let sighup_handle = tokio::spawn(async move { |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
36 |
let mut stream = signal(SignalKind::hangup()).expect("Should be a signal stream"); |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
37 |
loop { |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
38 |
stream.recv().await; |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
39 |
sighup_handler().await; |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
40 |
} |
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
41 |
}); |
5 | 42 |
tokio::try_join!(advert_handle, skew_handle, sighup_handle).expect("task(s) erred"); |
3
dfb0782a497f
Backed out changeset 50156c8f38b0
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
43 |
} |