File tree 1 file changed +11
-5
lines changed
1 file changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -45,7 +45,8 @@ type fecDecoder struct {
45
45
codec reedsolomon.Encoder
46
46
47
47
// auto tune fec parameter
48
- autoTune autoTune
48
+ autoTune autoTune
49
+ shouldTune bool
49
50
}
50
51
51
52
func newFECDecoder (dataShards , parityShards int ) * fecDecoder {
@@ -78,18 +79,17 @@ func (dec *fecDecoder) decode(in fecPacket) (recovered [][]byte) {
78
79
}
79
80
80
81
// check if FEC parameters is out of sync
81
- var shouldTune bool
82
82
if int (in .seqid ())% dec .shardSize < dec .dataShards {
83
83
if in .flag () != typeData { // expect typeData
84
- shouldTune = true
84
+ dec . shouldTune = true
85
85
}
86
86
} else {
87
87
if in .flag () != typeParity {
88
- shouldTune = true
88
+ dec . shouldTune = true
89
89
}
90
90
}
91
91
92
- if shouldTune {
92
+ if dec . shouldTune {
93
93
autoDS := dec .autoTune .FindPeriod (true )
94
94
autoPS := dec .autoTune .FindPeriod (false )
95
95
@@ -108,11 +108,17 @@ func (dec *fecDecoder) decode(in fecPacket) (recovered [][]byte) {
108
108
dec .codec = codec
109
109
dec .decodeCache = make ([][]byte , dec .shardSize )
110
110
dec .flagCache = make ([]bool , dec .shardSize )
111
+ dec .shouldTune = false
111
112
//log.Println("autotune to :", dec.dataShards, dec.parityShards)
112
113
}
113
114
}
114
115
}
115
116
117
+ // parameters in tuning
118
+ if dec .shouldTune {
119
+ return nil
120
+ }
121
+
116
122
// insertion
117
123
n := len (dec .rx ) - 1
118
124
insertIdx := 0
You can’t perform that action at this time.
0 commit comments