1
- use super :: LogRuntime ;
2
1
use crate :: {
3
2
export:: logs:: { ExportResult , LogData , LogExporter } ,
4
- logs :: TrySend ,
3
+ runtime :: { RuntimeChannel , TrySend } ,
5
4
} ;
6
5
use futures_channel:: oneshot;
7
6
use futures_util:: {
@@ -101,31 +100,32 @@ impl LogProcessor for SimpleLogProcessor {
101
100
102
101
/// A [`LogProcessor`] that asynchronously buffers log records and reports
103
102
/// them at a preconfigured interval.
104
- pub struct BatchLogProcessor < R : LogRuntime > {
103
+ pub struct BatchLogProcessor < R : RuntimeChannel < BatchMessage > > {
105
104
message_sender : R :: Sender ,
106
105
}
107
106
108
- impl < R : LogRuntime > Debug for BatchLogProcessor < R > {
107
+ impl < R : RuntimeChannel < BatchMessage > > Debug for BatchLogProcessor < R > {
109
108
fn fmt ( & self , f : & mut Formatter < ' _ > ) -> fmt:: Result {
110
109
f. debug_struct ( "BatchLogProcessor" )
111
110
. field ( "message_sender" , & self . message_sender )
112
111
. finish ( )
113
112
}
114
113
}
115
114
116
- impl < R : LogRuntime > LogProcessor for BatchLogProcessor < R > {
115
+ impl < R : RuntimeChannel < BatchMessage > > LogProcessor for BatchLogProcessor < R > {
117
116
fn emit ( & self , data : LogData ) {
118
117
let result = self . message_sender . try_send ( BatchMessage :: ExportLog ( data) ) ;
119
118
120
119
if let Err ( err) = result {
121
- global:: handle_error ( err) ;
120
+ global:: handle_error ( LogError :: Other ( err. into ( ) ) ) ;
122
121
}
123
122
}
124
123
125
124
fn force_flush ( & self ) -> LogResult < ( ) > {
126
125
let ( res_sender, res_receiver) = oneshot:: channel ( ) ;
127
126
self . message_sender
128
- . try_send ( BatchMessage :: Flush ( Some ( res_sender) ) ) ?;
127
+ . try_send ( BatchMessage :: Flush ( Some ( res_sender) ) )
128
+ . map_err ( |err| LogError :: Other ( err. into ( ) ) ) ?;
129
129
130
130
futures_executor:: block_on ( res_receiver)
131
131
. map_err ( |err| LogError :: Other ( err. into ( ) ) )
@@ -135,15 +135,16 @@ impl<R: LogRuntime> LogProcessor for BatchLogProcessor<R> {
135
135
fn shutdown ( & mut self ) -> LogResult < ( ) > {
136
136
let ( res_sender, res_receiver) = oneshot:: channel ( ) ;
137
137
self . message_sender
138
- . try_send ( BatchMessage :: Shutdown ( res_sender) ) ?;
138
+ . try_send ( BatchMessage :: Shutdown ( res_sender) )
139
+ . map_err ( |err| LogError :: Other ( err. into ( ) ) ) ?;
139
140
140
141
futures_executor:: block_on ( res_receiver)
141
142
. map_err ( |err| LogError :: Other ( err. into ( ) ) )
142
143
. and_then ( std:: convert:: identity)
143
144
}
144
145
}
145
146
146
- impl < R : LogRuntime > BatchLogProcessor < R > {
147
+ impl < R : RuntimeChannel < BatchMessage > > BatchLogProcessor < R > {
147
148
pub ( crate ) fn new ( mut exporter : Box < dyn LogExporter > , config : BatchConfig , runtime : R ) -> Self {
148
149
let ( message_sender, message_receiver) =
149
150
runtime. batch_message_channel ( config. max_queue_size ) ;
@@ -247,7 +248,7 @@ async fn export_with_timeout<R, E>(
247
248
batch : Vec < LogData > ,
248
249
) -> ExportResult
249
250
where
250
- R : LogRuntime ,
251
+ R : RuntimeChannel < BatchMessage > ,
251
252
E : LogExporter + ?Sized ,
252
253
{
253
254
if batch. is_empty ( ) {
@@ -308,7 +309,7 @@ pub struct BatchLogProcessorBuilder<E, R> {
308
309
impl < E , R > BatchLogProcessorBuilder < E , R >
309
310
where
310
311
E : LogExporter + ' static ,
311
- R : LogRuntime ,
312
+ R : RuntimeChannel < BatchMessage > ,
312
313
{
313
314
/// Set max queue size for batches
314
315
pub fn with_max_queue_size ( self , size : usize ) -> Self {
0 commit comments