@@ -183,24 +183,26 @@ func (h *host) getFragmentsResult(resources []resourceInfo, fragments ...int64)
183
183
184
184
func (h * host ) getFullResult (full int , resources []resourceInfo ) []types.ResourceMap {
185
185
result := []types.ResourceMap {}
186
- count := len (resources ) / full
187
- newResources := []resourceInfo {}
188
- for i := 0 ; i < count ; i ++ {
189
- plan := types.ResourceMap {}
190
- for j := i * full ; j < i * full + full ; j ++ {
191
- // 洗掉没配额的
192
- last := resources [j ].pieces - int64 (h .share )
193
- if last > 0 {
194
- newResources = append (newResources , resourceInfo {resources [j ].id , last })
186
+
187
+ for len (resources )/ full > 0 {
188
+ count , rem := len (resources )/ full , len (resources )% full
189
+ newResources := []resourceInfo {}
190
+ for i := 0 ; i < count ; i ++ {
191
+ plan := types.ResourceMap {}
192
+ for j := i * full ; j < i * full + full ; j ++ {
193
+ // 洗掉没配额的
194
+ last := resources [j ].pieces - int64 (h .share )
195
+ if last > 0 {
196
+ newResources = append (newResources , resourceInfo {resources [j ].id , last })
197
+ }
198
+ plan [resources [j ].id ] = int64 (h .share )
195
199
}
196
- plan [ resources [ j ]. id ] = int64 ( h . share )
200
+ result = append ( result , plan )
197
201
}
198
- result = append (result , plan )
199
- }
200
202
201
- if len (newResources )/ full > 0 {
202
- return append (result , h .getFullResult (full , newResources )... )
203
+ resources = append (newResources , resources [len (resources )- rem :]... )
203
204
}
205
+
204
206
return result
205
207
}
206
208
0 commit comments