@@ -4,15 +4,13 @@ use std::io::{BufRead, BufReader, Seek, SeekFrom};
44
55pub struct AuthFileReader {
66 reader : BufReader < File > ,
7- file_content_buffer : String ,
87}
98
109impl AuthFileReader {
11- pub fn new ( filepath : & str , buffer_size : usize ) -> Result < AuthFileReader , Box < dyn Error > > {
10+ pub fn new ( filepath : & str ) -> Result < AuthFileReader , Box < dyn Error > > {
1211 let file = File :: open ( filepath) ?;
1312 return Ok ( AuthFileReader {
1413 reader : BufReader :: new ( file) ,
15- file_content_buffer : String :: with_capacity ( buffer_size) ,
1614 } ) ;
1715 }
1816
@@ -21,31 +19,24 @@ impl AuthFileReader {
2119 return Ok ( ( ) ) ;
2220 }
2321
24- pub fn read_new_lines ( & mut self , mut parse_line : impl FnMut ( & String ) ) {
25- loop {
26- self . file_content_buffer . clear ( ) ;
27- let bytes_read = self
28- . reader
29- . read_line ( & mut self . file_content_buffer )
30- . unwrap_or_else ( |error| {
31- eprintln ! ( "Error reading file: {}" , error) ;
32- return 0 ;
33- } ) ;
34- if bytes_read > 0 {
35- parse_line ( & self . file_content_buffer ) ;
36- continue ;
37- }
38- if !self . is_file_has_been_truncated ( ) {
39- break ;
40- }
22+ pub fn next_line ( & mut self ) -> Option < String > {
23+ let mut line = String :: new ( ) ;
24+ let _ = self . reader . read_line ( & mut line) . unwrap_or_else ( |error| {
25+ eprintln ! ( "Error reading file: {}" , error) ;
26+ return 0 ;
27+ } ) ;
28+ if !line. is_empty ( ) {
29+ return Some ( line) ;
30+ }
31+ if self . is_file_has_been_truncated ( ) {
4132 match self . reader . seek ( SeekFrom :: Start ( 0 ) ) {
4233 Ok ( position) => println ! ( "Resetting position in file to {}" , position) ,
4334 Err ( error) => {
4435 eprintln ! ( "Error resetting position in file: {}" , error) ;
45- break ;
4636 }
4737 }
4838 }
39+ return None ;
4940 }
5041
5142 fn is_file_has_been_truncated ( & self ) -> bool {
0 commit comments