operations/info-refs.go (32 lines of code) (raw):
package operations
import (
"context"
"io"
"google.golang.org/grpc"
pb "gitlab.com/gitlab-org/gitaly-proto/go/gitalypb"
)
type infoRefs struct {
repository *pb.Repository
conn *grpc.ClientConn
client pb.SmartHTTPServiceClient
}
func (b *infoRefs) Run() error {
request := &pb.InfoRefsRequest{
Repository: b.repository,
}
resp, err := b.client.InfoRefsUploadPack(context.Background(), request)
if err != nil {
return err
}
for err == nil {
_, err = resp.Recv()
}
if err == io.EOF {
err = nil
}
return err
}
// NewInfoRefs creates a new benchmark operation
func NewInfoRefs(repository *pb.Repository, conn *grpc.ClientConn) BenchmarkOperation {
client := pb.NewSmartHTTPServiceClient(conn)
return &infoRefs{repository: repository, conn: conn, client: client}
}