@@ -426,7 +426,7 @@ impl AsyncSliceReader for DataReader {
426
426
. await
427
427
}
428
428
429
- async fn len ( & mut self ) -> io:: Result < u64 > {
429
+ async fn size ( & mut self ) -> io:: Result < u64 > {
430
430
with_storage (
431
431
& mut self . 0 ,
432
432
BaoFileStorage :: is_mem,
@@ -458,7 +458,7 @@ impl AsyncSliceReader for OutboardReader {
458
458
. await
459
459
}
460
460
461
- async fn len ( & mut self ) -> io:: Result < u64 > {
461
+ async fn size ( & mut self ) -> io:: Result < u64 > {
462
462
with_storage (
463
463
& mut self . 0 ,
464
464
BaoFileStorage :: is_mem,
@@ -732,9 +732,9 @@ pub mod test_support {
732
732
BlockSize , ChunkRanges ,
733
733
} ;
734
734
use futures:: { Future , Stream , StreamExt } ;
735
+ use iroh_io:: AsyncStreamReader ;
735
736
use rand:: RngCore ;
736
737
use range_collections:: RangeSet2 ;
737
- use tokio:: io:: { AsyncRead , AsyncReadExt } ;
738
738
739
739
use crate :: util:: limited_range;
740
740
@@ -751,10 +751,11 @@ pub mod test_support {
751
751
mut target : W ,
752
752
) -> io:: Result < ( ) >
753
753
where
754
- R : AsyncRead + Unpin ,
754
+ R : AsyncStreamReader ,
755
755
W : BaoBatchWriter ,
756
756
{
757
- let size = encoded. read_u64_le ( ) . await ?;
757
+ let size = encoded. read :: < 8 > ( ) . await ?;
758
+ let size = u64:: from_le_bytes ( size) ;
758
759
let mut reading =
759
760
ResponseDecoder :: new ( root. into ( ) , ranges, BaoTree :: new ( size, block_size) , encoded) ;
760
761
let mut stack = Vec :: new ( ) ;
@@ -792,7 +793,8 @@ pub mod test_support {
792
793
/// Take some data and encode it
793
794
pub fn simulate_remote ( data : & [ u8 ] ) -> ( Hash , Cursor < Bytes > ) {
794
795
let outboard = bao_tree:: io:: outboard:: PostOrderMemOutboard :: create ( data, IROH_BLOCK_SIZE ) ;
795
- let mut encoded = Vec :: new ( ) ;
796
+ let size = data. len ( ) as u64 ;
797
+ let mut encoded = size. to_le_bytes ( ) . to_vec ( ) ;
796
798
bao_tree:: io:: sync:: encode_ranges_validated (
797
799
data,
798
800
& outboard,
@@ -823,7 +825,8 @@ pub mod test_support {
823
825
let chunk_ranges = round_up_to_chunks ( & range_set) ;
824
826
// compute the outboard
825
827
let outboard = PostOrderMemOutboard :: create ( data, IROH_BLOCK_SIZE ) . flip ( ) ;
826
- let mut encoded = Vec :: new ( ) ;
828
+ let size = data. len ( ) as u64 ;
829
+ let mut encoded = size. to_le_bytes ( ) . to_vec ( ) ;
827
830
encode_ranges_validated ( data, & outboard, & chunk_ranges, & mut encoded) . unwrap ( ) ;
828
831
( outboard. root . into ( ) , chunk_ranges, encoded)
829
832
}
@@ -866,8 +869,11 @@ pub mod test_support {
866
869
867
870
#[ cfg( test) ]
868
871
mod tests {
872
+ use std:: io:: Write ;
873
+
869
874
use bao_tree:: { blake3, ChunkNum , ChunkRanges } ;
870
875
use futures:: StreamExt ;
876
+ use iroh_io:: TokioStreamReader ;
871
877
use tests:: test_support:: {
872
878
decode_response_into_batch, local, make_wire_data, random_test_data, trickle, validate,
873
879
} ;
@@ -900,7 +906,7 @@ mod tests {
900
906
let trickle = trickle ( & wire_data, 1200 , std:: time:: Duration :: from_millis ( 10 ) )
901
907
. map ( io:: Result :: Ok )
902
908
. boxed ( ) ;
903
- let trickle = tokio_util:: io:: StreamReader :: new ( trickle) ;
909
+ let trickle = TokioStreamReader :: new ( tokio_util:: io:: StreamReader :: new ( trickle) ) ;
904
910
let _task = tasks. spawn_local ( async move {
905
911
decode_response_into_batch ( hash, IROH_BLOCK_SIZE , chunk_ranges, trickle, file)
906
912
. await
@@ -912,18 +918,22 @@ mod tests {
912
918
println ! (
913
919
"len {:?} {:?}" ,
914
920
handle,
915
- handle. data_reader( ) . len ( ) . await . unwrap( )
921
+ handle. data_reader( ) . size ( ) . await . unwrap( )
916
922
) ;
917
923
#[ allow( clippy:: single_range_in_vec_init) ]
918
924
let ranges = [ 1024 * 16 ..1024 * 48 ] ;
919
925
validate ( & handle, & test_data, & ranges) . await ;
920
926
921
927
// let ranges =
922
928
// let full_chunks = bao_tree::io::full_chunk_groups();
923
- let encoded = Vec :: new ( ) ;
929
+ let mut encoded = Vec :: new ( ) ;
930
+ let ob = handle. outboard ( ) . unwrap ( ) ;
931
+ encoded
932
+ . write_all ( ob. tree . size ( ) . to_le_bytes ( ) . as_slice ( ) )
933
+ . unwrap ( ) ;
924
934
bao_tree:: io:: fsm:: encode_ranges_validated (
925
935
handle. data_reader ( ) ,
926
- handle . outboard ( ) . unwrap ( ) ,
936
+ ob ,
927
937
& ChunkRanges :: from ( ChunkNum ( 16 ) ..ChunkNum ( 48 ) ) ,
928
938
encoded,
929
939
)
@@ -957,7 +967,7 @@ mod tests {
957
967
let trickle = trickle ( & wire_data, 1200 , std:: time:: Duration :: from_millis ( 10 ) )
958
968
. map ( io:: Result :: Ok )
959
969
. boxed ( ) ;
960
- let trickle = tokio_util:: io:: StreamReader :: new ( trickle) ;
970
+ let trickle = TokioStreamReader :: new ( tokio_util:: io:: StreamReader :: new ( trickle) ) ;
961
971
let task = local. spawn_pinned ( move || async move {
962
972
decode_response_into_batch ( hash, IROH_BLOCK_SIZE , chunk_ranges, trickle, file) . await
963
973
} ) ;
@@ -969,16 +979,20 @@ mod tests {
969
979
println ! (
970
980
"len {:?} {:?}" ,
971
981
handle,
972
- handle. data_reader( ) . len ( ) . await . unwrap( )
982
+ handle. data_reader( ) . size ( ) . await . unwrap( )
973
983
) ;
974
984
#[ allow( clippy:: single_range_in_vec_init) ]
975
985
let ranges = [ 0 ..n] ;
976
986
validate ( & handle, & test_data, & ranges) . await ;
977
987
978
- let encoded = Vec :: new ( ) ;
988
+ let mut encoded = Vec :: new ( ) ;
989
+ let ob = handle. outboard ( ) . unwrap ( ) ;
990
+ encoded
991
+ . write_all ( ob. tree . size ( ) . to_le_bytes ( ) . as_slice ( ) )
992
+ . unwrap ( ) ;
979
993
bao_tree:: io:: fsm:: encode_ranges_validated (
980
994
handle. data_reader ( ) ,
981
- handle . outboard ( ) . unwrap ( ) ,
995
+ ob ,
982
996
& ChunkRanges :: all ( ) ,
983
997
encoded,
984
998
)
@@ -1013,10 +1027,14 @@ mod tests {
1013
1027
. unwrap ( ) ;
1014
1028
validate ( & handle, & test_data, & ranges) . await ;
1015
1029
1016
- let encoded = Vec :: new ( ) ;
1030
+ let mut encoded = Vec :: new ( ) ;
1031
+ let ob = handle. outboard ( ) . unwrap ( ) ;
1032
+ encoded
1033
+ . write_all ( ob. tree . size ( ) . to_le_bytes ( ) . as_slice ( ) )
1034
+ . unwrap ( ) ;
1017
1035
bao_tree:: io:: fsm:: encode_ranges_validated (
1018
1036
handle. data_reader ( ) ,
1019
- handle . outboard ( ) . unwrap ( ) ,
1037
+ ob ,
1020
1038
& ChunkRanges :: all ( ) ,
1021
1039
encoded,
1022
1040
)
0 commit comments