1+ use std:: {
2+ sync:: { Arc , Mutex } ,
3+ thread,
4+ } ;
5+
16use anyhow:: Result ;
27use crossbeam_channel:: { unbounded, Receiver , Sender } ;
8+ use daemon:: Daemon ;
39use env_logger:: Env ;
4- use trsync_core:: { activity:: WrappedActivity , config:: ManagerConfig } ;
10+ use message:: DaemonMessage ;
11+ use trsync_core:: {
12+ activity:: WrappedActivity , config:: ManagerConfig , error:: ErrorExchanger , sync:: SyncExchanger ,
13+ user:: UserRequest ,
14+ } ;
515
616pub mod client;
717pub mod daemon;
818pub mod error;
919pub mod message;
1020pub mod types;
1121
22+ type DaemonMessageChannels = ( Sender < DaemonMessage > , Receiver < DaemonMessage > ) ;
23+ type ActivityChannels = ( Sender < WrappedActivity > , Receiver < WrappedActivity > ) ;
24+
1225fn main_ ( ) -> Result < ( ) > {
1326 env_logger:: Builder :: from_env ( Env :: default ( ) . default_filter_or ( "info" ) ) . init ( ) ;
1427
@@ -20,15 +33,34 @@ fn main_() -> Result<()> {
2033 ) = unbounded ( ) ;
2134
2235 log:: info!( "Read config" ) ;
23- let config = ManagerConfig :: from_env ( true ) ?;
36+ let mut config = ManagerConfig :: from_env ( true ) ?;
37+ config. confirm_startup_sync = false ;
38+ config. popup_confirm_startup_sync = false ;
39+
40+ let sync_exchanger = Arc :: new ( Mutex :: new ( SyncExchanger :: new ( ) ) ) ;
41+ let error_exchanger = Arc :: new ( Mutex :: new ( ErrorExchanger :: new ( ) ) ) ;
42+ let ( _main_sender, main_receiver) : DaemonMessageChannels = unbounded ( ) ;
43+ let ( activity_sender, activity_receiver) : ActivityChannels = unbounded ( ) ;
44+ let sync_exchanger = sync_exchanger. clone ( ) ;
45+ let error_exchanger = error_exchanger. clone ( ) ;
46+ let ( user_request_sender, _) : ( Sender < UserRequest > , Receiver < UserRequest > ) = unbounded ( ) ;
47+
48+ thread:: spawn ( move || {
49+ while let Ok ( activity) = activity_receiver. recv ( ) {
50+ log:: debug!( "Activity: {:?}" , activity)
51+ }
52+ } ) ;
2453
2554 log:: info!( "Start daemon" ) ;
26- let _config_ = config. clone ( ) ;
27- let ( _activity_sender, activity_receiver) : (
28- Sender < WrappedActivity > ,
29- Receiver < WrappedActivity > ,
30- ) = unbounded ( ) ;
31- std:: thread:: spawn ( move || while activity_receiver. recv ( ) . is_ok ( ) { } ) ;
55+ Daemon :: new (
56+ config,
57+ main_receiver,
58+ activity_sender,
59+ user_request_sender,
60+ sync_exchanger,
61+ error_exchanger,
62+ )
63+ . run ( ) ?;
3264 log:: info!( "Daemon finished, exit" ) ;
3365
3466 Ok ( ( ) )
0 commit comments