1
1
use compact_encoding:: {
2
- map_encode, sum_encoded_size, take_array, take_array_mut, write_array, write_slice,
2
+ map_decode , map_encode, sum_encoded_size, take_array, take_array_mut, write_array, write_slice,
3
3
CompactEncoding , EncodingError ,
4
4
} ;
5
5
use hypercore:: {
6
- decode, DataBlock , DataHash , DataSeek , DataUpgrade , Proof , RequestBlock , RequestSeek ,
7
- RequestUpgrade ,
6
+ DataBlock , DataHash , DataSeek , DataUpgrade , Proof , RequestBlock , RequestSeek , RequestUpgrade ,
8
7
} ;
9
8
use tracing:: instrument;
10
9
@@ -50,9 +49,8 @@ impl CompactEncoding for Open {
50
49
where
51
50
Self : Sized ,
52
51
{
53
- let ( channel, rest) = u64:: decode ( buffer) ?;
54
- let ( protocol, rest) = String :: decode ( rest) ?;
55
- let ( discovery_key, rest) = <Vec < u8 > >:: decode ( rest) ?;
52
+ let ( ( channel, protocol, discovery_key) , rest) =
53
+ map_decode ! ( buffer, [ u64 , String , Vec <u8 >] ) ;
56
54
// TODO this is a CLEAR bug it assumes nothing is encoded after this message
57
55
let ( capability, rest) = if !rest. is_empty ( ) {
58
56
let ( _, rest) = take_array :: < 1 > ( rest) ?;
@@ -62,7 +60,7 @@ impl CompactEncoding for Open {
62
60
( None , rest)
63
61
} ;
64
62
Ok ( (
65
- Open {
63
+ Self {
66
64
channel,
67
65
protocol,
68
66
discovery_key,
@@ -93,7 +91,8 @@ impl CompactEncoding for Close {
93
91
where
94
92
Self : Sized ,
95
93
{
96
- decode ! ( Close , buffer, { channel: u64 } )
94
+ let ( channel, rest) = u64:: decode ( buffer) ?;
95
+ Ok ( ( Self { channel } , rest) )
97
96
}
98
97
}
99
98
@@ -138,10 +137,7 @@ impl CompactEncoding for Synchronize {
138
137
Self : Sized ,
139
138
{
140
139
let ( [ flags] , rest) = take_array :: < 1 > ( buffer) ?;
141
- dbg ! ( flags) ;
142
- let ( fork, rest) = u64:: decode ( rest) ?;
143
- let ( length, rest) = u64:: decode ( rest) ?;
144
- let ( remote_length, rest) = u64:: decode ( rest) ?;
140
+ let ( ( fork, length, remote_length) , rest) = map_decode ! ( rest, [ u64 , u64 , u64 ] ) ;
145
141
let can_upgrade = flags & 1 != 0 ;
146
142
let uploading = flags & 2 != 0 ;
147
143
let downloading = flags & 4 != 0 ;
@@ -234,8 +230,7 @@ impl CompactEncoding for Request {
234
230
Self : Sized ,
235
231
{
236
232
let ( [ flags] , rest) = take_array :: < 1 > ( buffer) ?;
237
- let ( id, rest) = u64:: decode ( rest) ?;
238
- let ( fork, rest) = u64:: decode ( rest) ?;
233
+ let ( ( id, fork) , rest) = map_decode ! ( rest, [ u64 , u64 ] ) ;
239
234
240
235
let ( block, rest) = maybe_decode ! ( flags & 1 != 0 , RequestBlock , rest) ;
241
236
let ( hash, rest) = maybe_decode ! ( flags & 2 != 0 , RequestBlock , rest) ;
@@ -345,8 +340,7 @@ impl CompactEncoding for Data {
345
340
Self : Sized ,
346
341
{
347
342
let ( [ flags] , rest) = take_array :: < 1 > ( buffer) ?;
348
- let ( request, rest) = u64:: decode ( rest) ?;
349
- let ( fork, rest) = u64:: decode ( rest) ?;
343
+ let ( ( request, fork) , rest) = map_decode ! ( rest, [ u64 , u64 ] ) ;
350
344
let ( block, rest) = maybe_decode ! ( flags & 1 != 0 , DataBlock , rest) ;
351
345
let ( hash, rest) = maybe_decode ! ( flags & 2 != 0 , DataHash , rest) ;
352
346
let ( seek, rest) = maybe_decode ! ( flags & 4 != 0 , DataSeek , rest) ;
@@ -398,7 +392,8 @@ impl CompactEncoding for NoData {
398
392
where
399
393
Self : Sized ,
400
394
{
401
- decode ! ( NoData , buffer, { request: u64 } )
395
+ let ( request, rest) = u64:: decode ( buffer) ?;
396
+ Ok ( ( Self { request } , rest) )
402
397
}
403
398
}
404
399
@@ -424,7 +419,8 @@ impl CompactEncoding for Want {
424
419
where
425
420
Self : Sized ,
426
421
{
427
- decode ! ( Self , buffer, { start: u64 , length: u64 } )
422
+ let ( ( start, length) , rest) = map_decode ! ( buffer, [ u64 , u64 ] ) ;
423
+ Ok ( ( Self { start, length } , rest) )
428
424
}
429
425
}
430
426
@@ -450,7 +446,8 @@ impl CompactEncoding for Unwant {
450
446
where
451
447
Self : Sized ,
452
448
{
453
- decode ! ( Self , buffer, { start: u64 , length: u64 } )
449
+ let ( ( start, length) , rest) = map_decode ! ( buffer, [ u64 , u64 ] ) ;
450
+ Ok ( ( Self { start, length } , rest) )
454
451
}
455
452
}
456
453
@@ -475,7 +472,8 @@ impl CompactEncoding for Bitfield {
475
472
where
476
473
Self : Sized ,
477
474
{
478
- decode ! ( Self , buffer, { start: u64 , bitfield: Vec <u32 > } )
475
+ let ( ( start, bitfield) , rest) = map_decode ! ( buffer, [ u64 , Vec <u32 >] ) ;
476
+ Ok ( ( Self { start, bitfield } , rest) )
479
477
}
480
478
}
481
479
@@ -556,6 +554,7 @@ impl CompactEncoding for Extension {
556
554
where
557
555
Self : Sized ,
558
556
{
559
- decode ! ( Self , buffer, { name: String , message: Vec <u8 > } )
557
+ let ( ( name, message) , rest) = map_decode ! ( buffer, [ String , Vec <u8 >] ) ;
558
+ Ok ( ( Self { name, message } , rest) )
560
559
}
561
560
}
0 commit comments