func TraverseShard()

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
}