in nimo-shake/common/shard.go [69:94]
func TraverseShard(node *ShardNode, callback func(node *ShardNode) error) error {
if node == nil {
return nil
}
if node.Shard != nil {
// skip root node
if err := callback(node); err != nil {
if err != StopTraverseSonErr {
return err
} else {
// return if error == StopTraverseSonErr
return nil
}
}
// fmt.Printf("%s->%s\n", *node.Shard.ParentShardId, *node.Shard.ShardId)
}
for _, son := range node.Sons {
if err := TraverseShard(son, callback); err != nil {
return err
}
}
return nil
}