File tree Expand file tree Collapse file tree 4 files changed +22
-30
lines changed Expand file tree Collapse file tree 4 files changed +22
-30
lines changed Original file line number Diff line number Diff line change @@ -8,22 +8,17 @@ mod server;
88
99use std:: { thread, time:: Duration } ;
1010
11- use messages:: UpdaterOutMessage ;
1211use server:: { UpdateServerState , UpdaterServer } ;
1312use spawned_concurrency:: tasks:: GenServer as _;
1413use spawned_rt:: tasks as rt;
1514
1615fn main ( ) {
1716 rt:: run ( async {
18- let mut update_server = UpdaterServer :: start ( UpdateServerState {
17+ UpdaterServer :: start ( UpdateServerState {
1918 url : "https://httpbin.org/ip" . to_string ( ) ,
2019 periodicity : Duration :: from_millis ( 1000 ) ,
2120 } ) ;
2221
23- let result = UpdaterServer :: check ( & mut update_server) . await ;
24- tracing:: info!( "Update check done: {result:?}" ) ;
25- assert_eq ! ( result, UpdaterOutMessage :: Ok ) ;
26-
2722 // giving it some time before ending
2823 thread:: sleep ( Duration :: from_secs ( 10 ) ) ;
2924 } )
Original file line number Diff line number Diff line change @@ -15,15 +15,6 @@ pub struct UpdateServerState {
1515}
1616pub struct UpdaterServer { }
1717
18- impl UpdaterServer {
19- pub async fn check ( server : & mut UpdateServerHandle ) -> OutMessage {
20- match server. cast ( InMessage :: Check ) . await {
21- Ok ( _) => OutMessage :: Ok ,
22- Err ( _) => OutMessage :: Error ,
23- }
24- }
25- }
26-
2718impl GenServer for UpdaterServer {
2819 type CallMsg = ( ) ;
2920 type CastMsg = InMessage ;
@@ -35,6 +26,16 @@ impl GenServer for UpdaterServer {
3526 Self { }
3627 }
3728
29+ // Initializing GenServer to start periodic checks
30+ async fn init (
31+ & mut self ,
32+ handle : & GenServerHandle < Self > ,
33+ state : Self :: State ,
34+ ) -> Result < Self :: State , Self :: Error > {
35+ send_after ( state. periodicity , handle. clone ( ) , InMessage :: Check ) ;
36+ Ok ( state)
37+ }
38+
3839 async fn handle_call (
3940 & mut self ,
4041 _message : Self :: CallMsg ,
Original file line number Diff line number Diff line change @@ -8,22 +8,17 @@ mod server;
88
99use std:: { thread, time:: Duration } ;
1010
11- use messages:: UpdaterOutMessage ;
1211use server:: { UpdateServerState , UpdaterServer } ;
1312use spawned_concurrency:: threads:: GenServer as _;
1413use spawned_rt:: threads as rt;
1514
1615fn main ( ) {
1716 rt:: run ( || {
18- let mut update_server = UpdaterServer :: start ( UpdateServerState {
17+ UpdaterServer :: start ( UpdateServerState {
1918 url : "https://httpbin.org/ip" . to_string ( ) ,
2019 periodicity : Duration :: from_millis ( 1000 ) ,
2120 } ) ;
2221
23- let result = UpdaterServer :: check ( & mut update_server) ;
24- tracing:: info!( "Update check done: {result:?}" ) ;
25- assert_eq ! ( result, UpdaterOutMessage :: Ok ) ;
26-
2722 // giving it some time before ending
2823 thread:: sleep ( Duration :: from_secs ( 10 ) ) ;
2924 } )
Original file line number Diff line number Diff line change @@ -16,15 +16,6 @@ pub struct UpdateServerState {
1616}
1717pub struct UpdaterServer { }
1818
19- impl UpdaterServer {
20- pub fn check ( server : & mut UpdateServerHandle ) -> OutMessage {
21- match server. cast ( InMessage :: Check ) {
22- Ok ( _) => OutMessage :: Ok ,
23- Err ( _) => OutMessage :: Error ,
24- }
25- }
26- }
27-
2819impl GenServer for UpdaterServer {
2920 type CallMsg = ( ) ;
3021 type CastMsg = InMessage ;
@@ -36,6 +27,16 @@ impl GenServer for UpdaterServer {
3627 Self { }
3728 }
3829
30+ // Initializing GenServer to start periodic checks.
31+ fn init (
32+ & mut self ,
33+ handle : & GenServerHandle < Self > ,
34+ state : Self :: State ,
35+ ) -> Result < Self :: State , Self :: Error > {
36+ send_after ( state. periodicity , handle. clone ( ) , InMessage :: Check ) ;
37+ Ok ( state)
38+ }
39+
3940 fn handle_call (
4041 & mut self ,
4142 _message : Self :: CallMsg ,
You can’t perform that action at this time.
0 commit comments