(participants [][]byte, groupID string)
| 269 | } |
| 270 | |
| 271 | func (d *DosNode) handleGrouping(participants [][]byte, groupID string) { |
| 272 | isMember := false |
| 273 | for _, id := range participants { |
| 274 | if r := bytes.Compare(d.id, id); r == 0 { |
| 275 | isMember = true |
| 276 | break |
| 277 | } |
| 278 | } |
| 279 | if !isMember { |
| 280 | return |
| 281 | } |
| 282 | d.logger.Info("[DOS] Grouping start") |
| 283 | d.logger.Event("GroupingStart", map[string]interface{}{"GroupID": groupID, "Topic": "Grouping"}) |
| 284 | defer d.logger.TimeTrack(time.Now(), "GroupingDone", map[string]interface{}{"GroupID": groupID, "Topic": "Grouping"}) |
| 285 | defer d.logger.Info(fmt.Sprintf("Grouping Done %x", groupID)) |
| 286 | |
| 287 | ctx, cancel := context.WithTimeout(context.Background(), time.Duration(20*15*time.Second)) |
| 288 | defer cancel() |
| 289 | |
| 290 | var errcList []chan error |
| 291 | outFromDkg, errc, err := d.dkg.Grouping(ctx, groupID, participants) |
| 292 | if err != nil { |
| 293 | d.logger.Error(err) |
| 294 | return |
| 295 | } |
| 296 | errcList = append(errcList, errc) |
| 297 | errcList = append(errcList, registerGroup(ctx, d.chain, outFromDkg)) |
| 298 | allErrc := mergeErrors(ctx, errcList...) |
| 299 | var ok bool |
| 300 | for { |
| 301 | select { |
| 302 | case err, ok = <-allErrc: |
| 303 | if !ok { |
| 304 | return |
| 305 | } |
| 306 | d.logger.Error(err) |
| 307 | case <-ctx.Done(): |
| 308 | return |
| 309 | } |
| 310 | } |
| 311 | if err == nil { |
| 312 | d.logger.Event("GroupingSucc", map[string]interface{}{"GroupID": groupID, "Topic": "Grouping"}) |
| 313 | } |
| 314 | } |
| 315 | |
| 316 | func (d *DosNode) groupInfo(groupID string) (ids [][]byte, pubPoly *share.PubPoly, sec *share.PriShare, err error) { |
| 317 | //Get group members id |
no test coverage detected