11use crate :: either:: Either :: { Left , Right } ;
2+ use crate :: error;
23use crate :: {
34 config:: Config ,
45 error:: { ErrorKind , Result } ,
56 net:: { connection:: ActiveConnections , events:: SocketEvent , link_conditioner:: LinkConditioner } ,
67 packet:: { DeliveryGuarantee , Outgoing , Packet } ,
78} ;
89use crossbeam_channel:: { self , unbounded, Receiver , SendError , Sender , TryRecvError } ;
9- use log:: error;
1010use std:: {
1111 self , io,
1212 net:: { Ipv4Addr , SocketAddr , SocketAddrV4 , ToSocketAddrs , UdpSocket } ,
@@ -142,7 +142,10 @@ impl Socket {
142142 match self . recv_from ( time) {
143143 Ok ( UdpSocketState :: MaybeMore ) => continue ,
144144 Ok ( UdpSocketState :: MaybeEmpty ) => break ,
145- Err ( e) => error ! ( "Encountered an error receiving data: {:?}" , e) ,
145+ Err ( e) => error ! (
146+ self . config. logger,
147+ "Encountered an error receiving data: {:?}" , e
148+ ) ,
146149 }
147150 }
148151
@@ -151,14 +154,20 @@ impl Socket {
151154 if let Err ( e) = self . send_to ( p, time) {
152155 match e {
153156 ErrorKind :: IOError ( ref e) if e. kind ( ) == io:: ErrorKind :: WouldBlock => { }
154- _ => error ! ( "There was an error sending packet: {:?}" , e) ,
157+ _ => error ! (
158+ self . config. logger,
159+ "There was an error sending packet: {:?}" , e
160+ ) ,
155161 }
156162 }
157163 }
158164
159165 // Check for idle clients
160166 if let Err ( e) = self . handle_idle_clients ( time) {
161- error ! ( "Encountered an error when sending TimeoutEvent: {:?}" , e) ;
167+ error ! (
168+ self . config. logger,
169+ "Encountered an error when sending TimeoutEvent: {:?}" , e
170+ ) ;
162171 }
163172
164173 // Handle any dead clients
@@ -169,7 +178,10 @@ impl Socket {
169178 if let Err ( e) = self . send_heartbeat_packets ( heartbeat_interval, time) {
170179 match e {
171180 ErrorKind :: IOError ( ref e) if e. kind ( ) == io:: ErrorKind :: WouldBlock => { }
172- _ => error ! ( "There was an error sending a heartbeat packet: {:?}" , e) ,
181+ _ => error ! (
182+ self . config. logger,
183+ "There was an error sending a heartbeat packet: {:?}" , e
184+ ) ,
173185 }
174186 }
175187 }
@@ -320,7 +332,11 @@ impl Socket {
320332 }
321333 Err ( e) => {
322334 if e. kind ( ) != io:: ErrorKind :: WouldBlock {
323- error ! ( "Encountered an error receiving data: {:?}" , e) ;
335+ let err = format ! [ "{:?}" , e] ;
336+ error ! (
337+ self . config. logger,
338+ "Encountered an error receiving data: {}" , err
339+ ) ;
324340 return Err ( e. into ( ) ) ;
325341 } else {
326342 return Ok ( UdpSocketState :: MaybeEmpty ) ;
@@ -1204,4 +1220,36 @@ mod tests {
12041220
12051221 assert_eq ! [ "99999" , last_payload] ;
12061222 }
1223+
1224+ #[ test]
1225+ fn log_adapter ( ) {
1226+ use crate :: log:: { Displayer , LaminarLogger } ;
1227+ use std:: { rc:: Rc , sync:: Arc } ;
1228+
1229+ let mut cfg = Config :: default ( ) ;
1230+
1231+ struct MyAdapter { }
1232+
1233+ impl LaminarLogger for MyAdapter {
1234+ fn trace ( & self , disp : Displayer ) {
1235+ println ! [ "trace: {}" , disp] ;
1236+ }
1237+ fn debug ( & self , disp : Displayer ) {
1238+ println ! [ "debug: {}" , disp] ;
1239+ }
1240+ fn info ( & self , disp : Displayer ) {
1241+ println ! [ "info: {}" , disp] ;
1242+ }
1243+ fn warn ( & self , disp : Displayer ) {
1244+ println ! [ "warn: {}" , disp] ;
1245+ }
1246+ fn error ( & self , disp : Displayer ) {
1247+ println ! [ "An error! {}" , disp] ;
1248+ }
1249+ }
1250+
1251+ cfg. logger = Rc :: new ( MyAdapter { } ) ;
1252+
1253+ Socket :: bind_any_with_config ( cfg) . unwrap ( ) ;
1254+ }
12071255}
0 commit comments