File tree Expand file tree Collapse file tree 1 file changed +10
-5
lines changed Expand file tree Collapse file tree 1 file changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -21,16 +21,20 @@ type (
21
21
dataShards int
22
22
parityShards int
23
23
shardSize int
24
- next uint32 // next seqid
25
- paws uint32 // Protect Against Wrapped Sequence numbers
26
- enc reedsolomon. Encoder
24
+ next uint32 // next seqid
25
+ paws uint32 // Protect Against Wrapped Sequence numbers
26
+ rx [] fecPacket // ordered receive queue
27
27
28
- rx [] fecPacket // ordered receive queue
28
+ // caches
29
29
decodeCache [][]byte
30
30
encodeCache [][]byte
31
31
shardsflag []bool
32
+
33
+ // RS encoder
34
+ enc reedsolomon.Encoder
32
35
}
33
36
37
+ // fecPacket is a decoded FEC packet
34
38
fecPacket struct {
35
39
seqid uint32
36
40
flag uint16
@@ -99,7 +103,7 @@ func (fec *FEC) Decode(pkt fecPacket) (recovered [][]byte) {
99
103
if pkt .seqid == fec .rx [i ].seqid { // de-duplicate
100
104
xmitBuf .Put (pkt .data )
101
105
return nil
102
- } else if pkt .seqid > fec .rx [i ].seqid { // insertion
106
+ } else if _itimediff ( pkt .seqid , fec .rx [i ].seqid ) > 0 { // insertion
103
107
insertIdx = i + 1
104
108
break
105
109
}
@@ -128,6 +132,7 @@ func (fec *FEC) Decode(pkt fecPacket) (recovered [][]byte) {
128
132
searchEnd = len (fec .rx ) - 1
129
133
}
130
134
135
+ // re-construct datashards
131
136
if searchEnd > searchBegin && searchEnd - searchBegin + 1 >= fec .dataShards {
132
137
numshard := 0
133
138
numDataShard := 0
You can’t perform that action at this time.
0 commit comments