55#[ cfg( not( target_os = "macos" ) ) ]
66use std:: fs:: read_dir;
77use std:: {
8- fs:: File ,
9- io:: { BufRead , BufReader } ,
108 path:: PathBuf ,
119 str:: FromStr ,
1210 time:: Duration ,
@@ -26,7 +24,9 @@ use crate::log_watcher::get_vpn_extension_log_dir_path;
2624use crate :: {
2725 appstate:: AppState ,
2826 error:: Error ,
29- log_watcher:: { LogLine , LogLineFields , LogSource , LogWatcherError } ,
27+ log_watcher:: {
28+ log_file_reader:: LogFileReader , LogLine , LogLineFields , LogSource , LogWatcherError ,
29+ } ,
3030 LOG_FILENAME ,
3131} ;
3232#[ cfg( not( target_os = "macos" ) ) ]
@@ -125,11 +125,11 @@ impl LogDirs {
125125 }
126126
127127 #[ cfg( not( target_os = "macos" ) ) ]
128- fn get_current_service_file ( & self ) -> Result < File , LogWatcherError > {
128+ fn get_current_service_file ( & self ) -> Result < LogFileReader , LogWatcherError > {
129129 match & self . current_service_log_file {
130130 Some ( path) => {
131131 trace ! ( "Opening service log file: {}" , path. display( ) ) ;
132- let file = File :: open ( path) ?;
132+ let file = LogFileReader :: open ( path) ?;
133133 trace ! ( "Successfully opened service log file at {}" , path. display( ) ) ;
134134 Ok ( file)
135135 }
@@ -139,21 +139,21 @@ impl LogDirs {
139139 }
140140 }
141141
142- fn get_client_file ( & self ) -> Result < File , LogWatcherError > {
142+ fn get_client_file ( & self ) -> Result < LogFileReader , LogWatcherError > {
143143 let path = self . client_log_dir . join ( format ! ( "{LOG_FILENAME}.log" ) ) ;
144144 trace ! ( "Constructed client log file path: {}" , path. display( ) ) ;
145- let file = File :: open ( & path) ?;
145+ let file = LogFileReader :: open ( & path) ?;
146146 trace ! ( "Client log file at {} opened successfully" , path. display( ) ) ;
147147 Ok ( file)
148148 }
149149
150150 /// Get the VPN extension log file (macOS only)
151151 /// The VPN extension writes logs to the App Group shared container
152152 #[ cfg( target_os = "macos" ) ]
153- fn get_vpn_extension_file ( & self ) -> Result < File , LogWatcherError > {
153+ fn get_vpn_extension_file ( & self ) -> Result < LogFileReader , LogWatcherError > {
154154 let path = self . vpn_extension_log_dir . join ( VPN_EXTENSION_LOG_FILENAME ) ;
155155 trace ! ( "Opening VPN extension log file: {}" , path. display( ) ) ;
156- let file = File :: open ( & path) ?;
156+ let file = LogFileReader :: open ( & path) ?;
157157 trace ! ( "VPN extension log file opened successfully" ) ;
158158 Ok ( file)
159159 }
@@ -207,16 +207,8 @@ impl GlobalLogWatcher {
207207 self . log_dirs. current_service_log_file
208208 ) ;
209209
210- let mut service_reader = if let Ok ( file) = self . log_dirs . get_current_service_file ( ) {
211- Some ( BufReader :: new ( file) )
212- } else {
213- None
214- } ;
215- let mut client_reader = if let Ok ( file) = self . log_dirs . get_client_file ( ) {
216- Some ( BufReader :: new ( file) )
217- } else {
218- None
219- } ;
210+ let mut service_reader = self . log_dirs . get_current_service_file ( ) . ok ( ) ;
211+ let mut client_reader = self . log_dirs . get_client_file ( ) . ok ( ) ;
220212
221213 debug ! ( "Checking if log files are available" ) ;
222214 if service_reader. is_none ( ) && client_reader. is_none ( ) {
@@ -263,6 +255,7 @@ impl GlobalLogWatcher {
263255 "Found a new service log file: {latest_log_file:?}, switching to it."
264256 ) ;
265257 self . log_dirs . current_service_log_file = latest_log_file;
258+ * reader = self . log_dirs . get_current_service_file ( ) ?;
266259 break ;
267260 }
268261 } else {
@@ -327,10 +320,7 @@ impl GlobalLogWatcher {
327320 #[ cfg( target_os = "macos" ) ]
328321 async fn parse_log_dirs ( & self ) -> Result < ( ) , LogWatcherError > {
329322 debug ! ( "Processing log directories for client and VPN extension." ) ;
330- let mut client_reader = self
331- . log_dirs
332- . get_client_file ( )
333- . map_or_else ( |_| None , |file| Some ( BufReader :: new ( file) ) ) ;
323+ let mut client_reader = self . log_dirs . get_client_file ( ) . ok ( ) ;
334324
335325 let mut vpn_extension_reader = self . log_dirs . get_vpn_extension_file ( ) . map_or_else (
336326 |_| {
@@ -339,7 +329,7 @@ impl GlobalLogWatcher {
339329 } ,
340330 |file| {
341331 debug ! ( "VPN extension log file opened successfully" ) ;
342- Some ( BufReader :: new ( file) )
332+ Some ( file)
343333 } ,
344334 ) ;
345335
@@ -394,7 +384,7 @@ impl GlobalLogWatcher {
394384 // Try to open the client log file if it wasn't available before
395385 if let Ok ( file) = self . log_dirs . get_client_file ( ) {
396386 debug ! ( "Client log file is now available, opening reader" ) ;
397- client_reader = Some ( BufReader :: new ( file) ) ;
387+ client_reader = Some ( file) ;
398388 }
399389 }
400390
@@ -420,7 +410,7 @@ impl GlobalLogWatcher {
420410 // Try to open the VPN extension log file if it wasn't available before
421411 if let Ok ( file) = self . log_dirs . get_vpn_extension_file ( ) {
422412 debug ! ( "VPN extension log file is now available, opening reader" ) ;
423- vpn_extension_reader = Some ( BufReader :: new ( file) ) ;
413+ vpn_extension_reader = Some ( file) ;
424414 }
425415 }
426416
0 commit comments