Esempio n. 1
0
func readEdges(ctx context.Context, es xrefs.NodesEdgesService, files []string, edges chan<- *xpb.EdgesReply, filters []string, kinds []string) error {
	var eErr error
	for _, file := range files {
		if eErr == nil {
			reply, err := es.Edges(ctx, &xpb.EdgesRequest{
				Ticket: []string{file},
				Filter: filters,
				Kind:   kinds,
			})
			if err != nil {
				eErr = err
				continue
			}
			if len(reply.EdgeSet) == 0 {
				// File does not have any decorations, but we still want the source text/encoding.
				nodeReply, err := es.Nodes(ctx, &xpb.NodesRequest{
					Ticket: []string{file},
					Filter: filters,
				})
				if err != nil {
					return fmt.Errorf("error getting file node: %v", err)
				}
				reply.Node = nodeReply.Node
			}
			edges <- reply
		}
	}
	return eErr
}