11use crate :: {
22 os:: {
33 error:: { Error , Result } ,
4- mpsc , TcpStream , UefiOS ,
4+ TcpStream , UefiOS ,
55 } ,
66 parse_disk, MIN_MEMORY ,
77} ;
@@ -92,13 +92,12 @@ pub async fn store(os: UefiOS, server_address: SocketAddrV4) -> Result<()> {
9292 BytesFmt ( total_mem)
9393 ) ;
9494
95- let ( tx1, mut rx1) = mpsc:: channel ( channel_size) ;
96- let ( tx2, mut rx2) = mpsc:: channel ( channel_size) ;
97- let ( tx3, mut rx3) = mpsc:: channel ( channel_size) ;
98- let ( tx4, mut rx4) = mpsc:: channel ( channel_size) ;
95+ let ( tx1, rx1) = thingbuf :: mpsc:: channel ( channel_size) ;
96+ let ( tx2, rx2) = thingbuf :: mpsc:: channel ( channel_size) ;
97+ let ( tx3, rx3) = thingbuf :: mpsc:: channel ( channel_size) ;
98+ let ( tx4, rx4) = thingbuf :: mpsc:: channel ( channel_size) ;
9999
100100 let task1 = async {
101- let mut tx1 = tx1;
102101 for chunk_info in chunks {
103102 let mut data = vec ! [ 0 ; chunk_info. size] ;
104103 disk. read ( chunk_info. start as u64 , & mut data) . await ?;
@@ -110,45 +109,44 @@ pub async fn store(os: UefiOS, server_address: SocketAddrV4) -> Result<()> {
110109 size : chunk_info. size ,
111110 csize : cdata. len ( ) ,
112111 } ;
113- tx1. send ( ( chunk, cdata) ) . await ;
112+ tx1. send ( ( chunk, cdata) ) . await . expect ( "sender dropped" ) ;
114113 }
115114 Ok :: < _ , Error > ( ( ) )
116115 } ;
117116
118117 let task2 = async {
119- let mut tx2 = tx2;
120118 while let Some ( ( chunk, cdata) ) = rx1. recv ( ) . await {
121119 let req = TcpRequest :: HasChunk ( chunk. hash ) ;
122120 let buf = postcard:: to_allocvec ( & req) ?;
123121 stream_get_csize. send_u64_le ( buf. len ( ) as u64 ) . await ?;
124122 stream_get_csize. send ( & buf) . await ?;
125- tx2. send ( ( chunk, cdata) ) . await ;
123+ tx2. send ( ( chunk, cdata) ) . await . expect ( "sender dropped" ) ;
126124 }
127125 Ok ( ( ) )
128126 } ;
129127
130128 let task3 = async {
131- let mut tx3 = tx3;
132129 while let Some ( ( chunk, cdata) ) = rx2. recv ( ) . await {
133130 let len = stream_get_csize. recv_u64_le ( ) . await ?;
134131 let mut buf = vec ! [ 0 ; len as usize ] ;
135132 stream_get_csize. recv ( & mut buf) . await ?;
136133 let has_chunk: bool = postcard:: from_bytes ( & buf) ?;
137- tx3. send ( ( chunk, cdata, has_chunk) ) . await ;
134+ tx3. send ( ( chunk, cdata, has_chunk) )
135+ . await
136+ . expect ( "sender dropped" ) ;
138137 }
139138 Ok ( ( ) )
140139 } ;
141140
142141 let task4 = async {
143- let mut tx4 = tx4;
144142 while let Some ( ( chunk, cdata, has_chunk) ) = rx3. recv ( ) . await {
145143 if !has_chunk {
146144 let req = TcpRequest :: UploadChunk ( cdata) ;
147145 let buf = postcard:: to_allocvec ( & req) ?;
148146 stream_upload_chunk. send_u64_le ( buf. len ( ) as u64 ) . await ?;
149147 stream_upload_chunk. send ( & buf) . await ?;
150148 }
151- tx4. send ( ( chunk, has_chunk) ) . await ;
149+ tx4. send ( ( chunk, has_chunk) ) . await . expect ( "sender dropped" ) ;
152150 }
153151 Ok ( ( ) )
154152 } ;
0 commit comments