1
1
use crate :: { duration_report, Instant } ;
2
2
use futures:: { pin_mut, stream:: StreamExt } ;
3
3
use parsers:: {
4
- dlt:: DltParser ,
5
- nested_parser:: { resolve_log_msg, ParseRestResolver } ,
6
- MessageStreamItem , ParseYield ,
4
+ dlt:: DltParser , nested_parser:: ParseRestResolver , LogMessage , MessageStreamItem ,
5
+ ParseLogMsgError , ParseYield ,
7
6
} ;
8
7
use processor:: grabber:: LineRange ;
9
8
use rustyline:: { error:: ReadlineError , DefaultEditor } ;
@@ -50,6 +49,7 @@ pub(crate) async fn handle_interactive_session(input: Option<PathBuf>) {
50
49
let udp_source = UdpSource :: new( RECEIVER , vec![ ] ) . await . unwrap( ) ;
51
50
let dlt_parser = DltParser :: new( None , None , None , false ) ;
52
51
let mut dlt_msg_producer = MessageProducer :: new( dlt_parser, udp_source, None ) ;
52
+ //TODO AAZ: Make sure we need to provide the resolver in indexer CLI.
53
53
let mut parse_reslover = ParseRestResolver :: new( ) ;
54
54
let msg_stream = dlt_msg_producer. as_stream( ) ;
55
55
pin_mut!( msg_stream) ;
@@ -62,11 +62,11 @@ pub(crate) async fn handle_interactive_session(input: Option<PathBuf>) {
62
62
item = msg_stream. next( ) => {
63
63
match item {
64
64
Some ( ( _, MessageStreamItem :: Item ( ParseYield :: Message ( item) ) ) ) => {
65
- let msg = resolve_log_msg ( item, & mut parse_reslover) ;
65
+ let msg = parse_log_msg_lossy ( item, & mut parse_reslover) ;
66
66
println!( "msg: {msg}" ) ;
67
67
}
68
68
Some ( ( _, MessageStreamItem :: Item ( ParseYield :: MessageAndAttachment ( ( item, attachment) ) ) ) ) => {
69
- let msg = resolve_log_msg ( item, & mut parse_reslover) ;
69
+ let msg = parse_log_msg_lossy ( item, & mut parse_reslover) ;
70
70
println!( "msg: {msg}, attachment: {attachment:?}" ) ;
71
71
}
72
72
Some ( ( _, MessageStreamItem :: Item ( ParseYield :: Attachment ( attachment) ) ) ) => {
@@ -201,3 +201,11 @@ async fn collect_user_input(tx: mpsc::UnboundedSender<Command>) -> JoinHandle<()
201
201
println ! ( "done with readline loop" ) ;
202
202
} )
203
203
}
204
+
205
+ /// Parse log messages without registering errors and calling [`ParseLogMsgError::parse_lossy()`] on errors
206
+ pub fn parse_log_msg_lossy < T : LogMessage > ( item : T , err_resolver : & mut ParseRestResolver ) -> String {
207
+ match item. try_resolve ( Some ( err_resolver) ) {
208
+ Ok ( item) => item. to_string ( ) ,
209
+ Err ( err) => err. parse_lossy ( ) ,
210
+ }
211
+ }
0 commit comments