// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.22.0
// 	protoc        v3.12.2
// source: google/devtools/resultstore/v2/download_metadata.proto

package resultstore

import (
	reflect "reflect"
	sync "sync"

	proto "github.com/golang/protobuf/proto"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

// The download metadata for an invocation
type DownloadMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name of the download metadata.  Its format will be:
	// invocations/${INVOCATION_ID}/downloadMetadata
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Indicates the upload status of the invocation, whether it is
	// post-processing, or immutable, etc.
	UploadStatus UploadStatus `protobuf:"varint,2,opt,name=upload_status,json=uploadStatus,proto3,enum=google.devtools.resultstore.v2.UploadStatus" json:"upload_status,omitempty"`
}

func (x *DownloadMetadata) Reset() {
	*x = DownloadMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_devtools_resultstore_v2_download_metadata_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DownloadMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DownloadMetadata) ProtoMessage() {}

func (x *DownloadMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_devtools_resultstore_v2_download_metadata_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DownloadMetadata.ProtoReflect.Descriptor instead.
func (*DownloadMetadata) Descriptor() ([]byte, []int) {
	return file_google_devtools_resultstore_v2_download_metadata_proto_rawDescGZIP(), []int{0}
}

func (x *DownloadMetadata) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DownloadMetadata) GetUploadStatus() UploadStatus {
	if x != nil {
		return x.UploadStatus
	}
	return UploadStatus_UPLOAD_STATUS_UNSPECIFIED
}

var File_google_devtools_resultstore_v2_download_metadata_proto protoreflect.FileDescriptor

var file_google_devtools_resultstore_v2_download_metadata_proto_rawDesc = []byte{
	0x0a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c,
	0x73, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x32,
	0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x32, 0x1a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x79, 0x0a, 0x10, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
	0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a,
	0x0d, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65,
	0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x74, 0x6f,
	0x72, 0x65, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x42, 0x71, 0x0a, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64,
	0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x74,
	0x6f, 0x72, 0x65, 0x2e, 0x76, 0x32, 0x50, 0x01, 0x5a, 0x49, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f,
	0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
	0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x32, 0x3b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x74,
	0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_devtools_resultstore_v2_download_metadata_proto_rawDescOnce sync.Once
	file_google_devtools_resultstore_v2_download_metadata_proto_rawDescData = file_google_devtools_resultstore_v2_download_metadata_proto_rawDesc
)

func file_google_devtools_resultstore_v2_download_metadata_proto_rawDescGZIP() []byte {
	file_google_devtools_resultstore_v2_download_metadata_proto_rawDescOnce.Do(func() {
		file_google_devtools_resultstore_v2_download_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_devtools_resultstore_v2_download_metadata_proto_rawDescData)
	})
	return file_google_devtools_resultstore_v2_download_metadata_proto_rawDescData
}

var file_google_devtools_resultstore_v2_download_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_google_devtools_resultstore_v2_download_metadata_proto_goTypes = []interface{}{
	(*DownloadMetadata)(nil), // 0: google.devtools.resultstore.v2.DownloadMetadata
	(UploadStatus)(0),        // 1: google.devtools.resultstore.v2.UploadStatus
}
var file_google_devtools_resultstore_v2_download_metadata_proto_depIdxs = []int32{
	1, // 0: google.devtools.resultstore.v2.DownloadMetadata.upload_status:type_name -> google.devtools.resultstore.v2.UploadStatus
	1, // [1:1] is the sub-list for method output_type
	1, // [1:1] is the sub-list for method input_type
	1, // [1:1] is the sub-list for extension type_name
	1, // [1:1] is the sub-list for extension extendee
	0, // [0:1] is the sub-list for field type_name
}

func init() { file_google_devtools_resultstore_v2_download_metadata_proto_init() }
func file_google_devtools_resultstore_v2_download_metadata_proto_init() {
	if File_google_devtools_resultstore_v2_download_metadata_proto != nil {
		return
	}
	file_google_devtools_resultstore_v2_common_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_google_devtools_resultstore_v2_download_metadata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DownloadMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_devtools_resultstore_v2_download_metadata_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_devtools_resultstore_v2_download_metadata_proto_goTypes,
		DependencyIndexes: file_google_devtools_resultstore_v2_download_metadata_proto_depIdxs,
		MessageInfos:      file_google_devtools_resultstore_v2_download_metadata_proto_msgTypes,
	}.Build()
	File_google_devtools_resultstore_v2_download_metadata_proto = out.File
	file_google_devtools_resultstore_v2_download_metadata_proto_rawDesc = nil
	file_google_devtools_resultstore_v2_download_metadata_proto_goTypes = nil
	file_google_devtools_resultstore_v2_download_metadata_proto_depIdxs = nil
}
