File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -84,7 +84,9 @@ impl Client {
8484 break ;
8585 }
8686 Ok ( n) => {
87- if let Some ( data) = transfer. reader . try_read_string ( & buf[ 0 ..n] ) {
87+ transfer. reader . add_buf ( & buf[ 0 ..n] ) ;
88+
89+ while let Some ( data) = transfer. reader . try_read_string ( ) {
8890 // Deserialize json
8991 if let Ok ( data) = process_message ( & data, None ) {
9092 transfer. server_tx . send ( data) . ok ( ) ;
Original file line number Diff line number Diff line change @@ -239,9 +239,10 @@ impl Server {
239239 to_drop. push ( index) ;
240240 }
241241 Ok ( n) => {
242- // Append bytes to reader
243- if let Some ( data_string) = client. reader . try_read_string ( & buf[ 0 ..n] ) {
244- // Parse payload
242+ client. reader . add_buf ( & buf[ 0 ..n] ) ;
243+
244+ while let Some ( data_string) = client. reader . try_read_string ( ) {
245+ // Deserialize json
245246 if let Ok ( data) = process_message ( & data_string, Some ( client. name . clone ( ) ) ) {
246247 to_write. push ( ( index, data, data_string) ) ;
247248 }
@@ -331,7 +332,7 @@ impl Server {
331332 }
332333
333334 if should_stop { break }
334- sleep ( Duration :: from_millis ( 10 ) ) ;
335+ sleep ( Duration :: from_millis ( 5 ) ) ;
335336 }
336337 } ) ;
337338 }
Original file line number Diff line number Diff line change @@ -68,9 +68,11 @@ impl PartialReader {
6868 }
6969 }
7070
71- pub fn try_read_string ( & mut self , buf : & [ u8 ] ) -> Option < String > {
71+ pub fn add_buf ( & mut self , buf : & [ u8 ] ) {
7272 self . buffer . extend_from_slice ( buf) ;
73-
73+ }
74+
75+ pub fn try_read_string ( & mut self ) -> Option < String > {
7476 if let Some ( index) = self . buffer . iter ( ) . position ( |& x| x == 0x0a ) {
7577 let result_string = String :: from_utf8 ( self . buffer [ 0 ..index + 1 ] . to_vec ( ) ) . unwrap ( ) ;
7678 self . buffer . drain ( 0 ..index + 1 ) ;
You can’t perform that action at this time.
0 commit comments