11use crate :: horust:: Event ;
22use crate :: horust:: bus:: BusConnector ;
3- use crate :: horust:: formats:: { Service , ServiceName , ServiceStatus , User } ;
3+ use crate :: horust:: formats:: { ServiceName , ServiceStatus , User } ;
44use anyhow:: { Result , anyhow, bail} ;
55use horust_commands_lib:: { CommandsHandlerTrait , HorustMsgServiceStatus , UdsConnectionHandler } ;
66use std:: collections:: HashMap ;
@@ -14,10 +14,9 @@ pub fn spawn(
1414 bus : BusConnector < Event > ,
1515 uds_path : PathBuf ,
1616 services : Vec < ( ServiceName , User ) > ,
17- services_paths : Vec < PathBuf > ,
1817) -> JoinHandle < ( ) > {
1918 thread:: spawn ( move || {
20- let mut commands_handler = CommandsHandler :: new ( bus, uds_path, services, services_paths ) ;
19+ let mut commands_handler = CommandsHandler :: new ( bus, uds_path, services) ;
2120 commands_handler. run ( ) ;
2221 } )
2322}
@@ -28,7 +27,6 @@ struct CommandsHandler {
2827 service_users : HashMap < ServiceName , User > ,
2928 uds_listener : UnixListener ,
3029 uds_path : PathBuf ,
31- services_paths : Vec < PathBuf > ,
3230 /// Peer UID of the current connection being handled (set during accept).
3331 current_peer_uid : Option < u32 > ,
3432}
@@ -38,7 +36,6 @@ impl CommandsHandler {
3836 bus : BusConnector < Event > ,
3937 uds_path : PathBuf ,
4038 services : Vec < ( ServiceName , User ) > ,
41- services_paths : Vec < PathBuf > ,
4239 ) -> Self {
4340 let uds_listener = UnixListener :: bind ( & uds_path) . unwrap ( ) ;
4441 uds_listener. set_nonblocking ( true ) . unwrap ( ) ;
@@ -50,7 +47,6 @@ impl CommandsHandler {
5047 bus,
5148 uds_path,
5249 uds_listener,
53- services_paths,
5450 service_users,
5551 current_peer_uid : None ,
5652 services : services
@@ -69,12 +65,6 @@ impl CommandsHandler {
6965 * k = status;
7066 }
7167 }
72- Event :: ServiceAdded ( ref service) => {
73- self . services
74- . insert ( service. name . clone ( ) , ServiceStatus :: Initial ) ;
75- self . service_users
76- . insert ( service. name . clone ( ) , service. user . clone ( ) ) ;
77- }
7868 Event :: ShuttingDownInitiated ( _) => {
7969 fs:: remove_file ( & self . uds_path ) . unwrap ( ) ;
8070 return ;
@@ -87,51 +77,6 @@ impl CommandsHandler {
8777 }
8878 }
8979
90- fn load_services_from_paths ( paths : & [ PathBuf ] ) -> Result < Vec < Service > > {
91- let mut services = Vec :: new ( ) ;
92- for path in paths {
93- if !path. exists ( ) {
94- continue ;
95- }
96- let entries = if path. is_file ( ) {
97- vec ! [ path. to_path_buf( ) ]
98- } else {
99- fs:: read_dir ( path) ?
100- . filter_map ( Result :: ok)
101- . map ( |e| e. path ( ) )
102- . filter ( |p| {
103- p. is_file ( )
104- && p. extension ( )
105- . and_then ( |ext| ext. to_str ( ) )
106- . is_some_and ( |ext| ext == "toml" )
107- } )
108- . collect ( )
109- } ;
110- for entry in entries {
111- match Service :: from_file ( & entry) {
112- Ok ( mut svc) => {
113- if svc. name . is_empty ( ) {
114- svc. name = entry
115- . file_name ( )
116- . unwrap_or_default ( )
117- . to_string_lossy ( )
118- . into_owned ( ) ;
119- }
120- if svc. name . is_empty ( ) {
121- error ! ( "Skipping service with empty name from {:?}" , entry) ;
122- continue ;
123- }
124- services. push ( svc) ;
125- }
126- Err ( err) => {
127- error ! ( "Failed to load service from {:?}: {}" , entry, err) ;
128- }
129- }
130- }
131- }
132- Ok ( services)
133- }
134-
13580 /// Validate that a service exists and the peer has permission to manage it.
13681 fn validate_and_authorize ( & self , service_name : & str ) -> Result < ( ) > {
13782 if !self . services . contains_key ( service_name) {
@@ -262,18 +207,6 @@ impl CommandsHandlerTrait for CommandsHandler {
262207 . send_event ( Event :: Restart ( service_name. to_string ( ) ) ) ;
263208 Ok ( ( ) )
264209 }
265- fn reload_services ( & self ) -> Result < Vec < String > > {
266- let all_on_disk = Self :: load_services_from_paths ( & self . services_paths ) ?;
267- let new_services: Vec < Service > = all_on_disk
268- . into_iter ( )
269- . filter ( |s| !self . services . contains_key ( & s. name ) )
270- . collect ( ) ;
271- let new_names: Vec < String > = new_services. iter ( ) . map ( |s| s. name . clone ( ) ) . collect ( ) ;
272- for service in new_services {
273- self . bus . send_event ( Event :: ServiceAdded ( service) ) ;
274- }
275- Ok ( new_names)
276- }
277210 fn get_all_service_statuses ( & self ) -> Vec < ( String , HorustMsgServiceStatus ) > {
278211 let mut statuses: Vec < ( String , HorustMsgServiceStatus ) > = self
279212 . services
@@ -334,7 +267,6 @@ mod tests {
334267 service_users,
335268 uds_listener,
336269 uds_path : socket_path,
337- services_paths : vec ! [ ] ,
338270 current_peer_uid : peer_uid,
339271 } ;
340272 handler
0 commit comments