func ColoredSet(ctx context.Context, pn pin.Pinner, ds dag.DAGService, bestEffortRoots []key.Key) (key.KeySet, error) { // KeySet currently implemented in memory, in the future, may be bloom filter or // disk backed to conserve memory. gcs := key.NewKeySet() err := Descendants(ctx, ds, gcs, pn.RecursiveKeys(), false) if err != nil { return nil, err } err = Descendants(ctx, ds, gcs, bestEffortRoots, true) if err != nil { return nil, err } for _, k := range pn.DirectKeys() { gcs.Add(k) } err = Descendants(ctx, ds, gcs, pn.InternalPins(), false) if err != nil { return nil, err } return gcs, nil }