MCPcopy Create free account
hub / github.com/DOSNetwork/core / handleGrouping

Method handleGrouping

dosnode/dos_chain_handler.go:271–314  ·  view source on GitHub ↗
(participants [][]byte, groupID string)

Source from the content-addressed store, hash-verified

269}
270
271func (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
316func (d *DosNode) groupInfo(groupID string) (ids [][]byte, pubPoly *share.PubPoly, sec *share.PriShare, err error) {
317 //Get group members id

Callers 1

onchainLoopMethod · 0.95

Calls 7

registerGroupFunction · 0.85
mergeErrorsFunction · 0.70
InfoMethod · 0.65
EventMethod · 0.65
TimeTrackMethod · 0.65
GroupingMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected