Codebase list golang-pault-go-blobstore / 6d892a2b-f4ab-4b99-aef6-7d087d8961ff/main gc.go
6d892a2b-f4ab-4b99-aef6-7d087d8961ff/main

Tree @6d892a2b-f4ab-4b99-aef6-7d087d8961ff/main (Download .tar.gz)

gc.go @6d892a2b-f4ab-4b99-aef6-7d087d8961ff/mainraw · history · blame

package blobstore

type GarbageCollector interface {
	Find(s Store) ([]Object, error)
}

type DumbGarbageCollector struct{}

// Find {{{

func (d DumbGarbageCollector) Find(s Store) ([]Object, error) {
	linked, err := s.Linked()
	if err != nil {
		return nil, err
	}
	list, err := s.List()
	if err != nil {
		return nil, err
	}

	ret := []Object{}
	for _, node := range list {
		if _, ok := linked[node]; !ok {
			ret = append(ret, node)
		}
	}
	return ret, nil
}

// }}}

// vim: foldmethod=marker