github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/imageserver/client/listUnreferencedObjects.go (about)

     1  package client
     2  
     3  import (
     4  	"github.com/Cloud-Foundations/Dominator/lib/hash"
     5  	"github.com/Cloud-Foundations/Dominator/lib/srpc"
     6  	"github.com/Cloud-Foundations/Dominator/proto/imageserver"
     7  )
     8  
     9  func listUnreferencedObjects(client *srpc.Client) (
    10  	map[hash.Hash]uint64, error) {
    11  	conn, err := client.Call("ImageServer.ListUnreferencedObjects")
    12  	if err != nil {
    13  		return nil, err
    14  	}
    15  	defer conn.Close()
    16  	objects := make(map[hash.Hash]uint64)
    17  	for {
    18  		var object imageserver.Object
    19  		if err := conn.Decode(&object); err != nil {
    20  			return nil, err
    21  		}
    22  		if object.Size < 1 {
    23  			break
    24  		}
    25  		objects[object.Hash] = object.Size
    26  	}
    27  	return objects, nil
    28  }