// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        v6.31.1
// source: github.com/buildbarn/bb-remote-execution/pkg/proto/configuration/scheduler/scheduler.proto

package scheduler

import (
	v2 "github.com/bazelbuild/remote-apis/build/bazel/remote/execution/v2"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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)
)

type ActionRouterConfiguration struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*ActionRouterConfiguration_Simple
	//	*ActionRouterConfiguration_Demultiplexing
	Kind          isActionRouterConfiguration_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ActionRouterConfiguration) Reset() {
	*x = ActionRouterConfiguration{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ActionRouterConfiguration) ProtoMessage() {}

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

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

func (x *ActionRouterConfiguration) GetKind() isActionRouterConfiguration_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *ActionRouterConfiguration) GetSimple() *SimpleActionRouterConfiguration {
	if x != nil {
		if x, ok := x.Kind.(*ActionRouterConfiguration_Simple); ok {
			return x.Simple
		}
	}
	return nil
}

func (x *ActionRouterConfiguration) GetDemultiplexing() *DemultiplexingActionRouterConfiguration {
	if x != nil {
		if x, ok := x.Kind.(*ActionRouterConfiguration_Demultiplexing); ok {
			return x.Demultiplexing
		}
	}
	return nil
}

type isActionRouterConfiguration_Kind interface {
	isActionRouterConfiguration_Kind()
}

type ActionRouterConfiguration_Simple struct {
	Simple *SimpleActionRouterConfiguration `protobuf:"bytes,1,opt,name=simple,proto3,oneof"`
}

type ActionRouterConfiguration_Demultiplexing struct {
	Demultiplexing *DemultiplexingActionRouterConfiguration `protobuf:"bytes,2,opt,name=demultiplexing,proto3,oneof"`
}

func (*ActionRouterConfiguration_Simple) isActionRouterConfiguration_Kind() {}

func (*ActionRouterConfiguration_Demultiplexing) isActionRouterConfiguration_Kind() {}

type SimpleActionRouterConfiguration struct {
	state                    protoimpl.MessageState                 `protogen:"open.v1"`
	PlatformKeyExtractor     *PlatformKeyExtractorConfiguration     `protobuf:"bytes,1,opt,name=platform_key_extractor,json=platformKeyExtractor,proto3" json:"platform_key_extractor,omitempty"`
	InvocationKeyExtractors  []*InvocationKeyExtractorConfiguration `protobuf:"bytes,2,rep,name=invocation_key_extractors,json=invocationKeyExtractors,proto3" json:"invocation_key_extractors,omitempty"`
	InitialSizeClassAnalyzer *InitialSizeClassAnalyzerConfiguration `protobuf:"bytes,3,opt,name=initial_size_class_analyzer,json=initialSizeClassAnalyzer,proto3" json:"initial_size_class_analyzer,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

func (x *SimpleActionRouterConfiguration) Reset() {
	*x = SimpleActionRouterConfiguration{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SimpleActionRouterConfiguration) ProtoMessage() {}

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

// Deprecated: Use SimpleActionRouterConfiguration.ProtoReflect.Descriptor instead.
func (*SimpleActionRouterConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescGZIP(), []int{1}
}

func (x *SimpleActionRouterConfiguration) GetPlatformKeyExtractor() *PlatformKeyExtractorConfiguration {
	if x != nil {
		return x.PlatformKeyExtractor
	}
	return nil
}

func (x *SimpleActionRouterConfiguration) GetInvocationKeyExtractors() []*InvocationKeyExtractorConfiguration {
	if x != nil {
		return x.InvocationKeyExtractors
	}
	return nil
}

func (x *SimpleActionRouterConfiguration) GetInitialSizeClassAnalyzer() *InitialSizeClassAnalyzerConfiguration {
	if x != nil {
		return x.InitialSizeClassAnalyzer
	}
	return nil
}

type DemultiplexingActionRouterConfiguration struct {
	state                protoimpl.MessageState                             `protogen:"open.v1"`
	PlatformKeyExtractor *PlatformKeyExtractorConfiguration                 `protobuf:"bytes,1,opt,name=platform_key_extractor,json=platformKeyExtractor,proto3" json:"platform_key_extractor,omitempty"`
	Backends             []*DemultiplexingActionRouterConfiguration_Backend `protobuf:"bytes,2,rep,name=backends,proto3" json:"backends,omitempty"`
	DefaultActionRouter  *ActionRouterConfiguration                         `protobuf:"bytes,3,opt,name=default_action_router,json=defaultActionRouter,proto3" json:"default_action_router,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *DemultiplexingActionRouterConfiguration) Reset() {
	*x = DemultiplexingActionRouterConfiguration{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DemultiplexingActionRouterConfiguration) ProtoMessage() {}

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

// Deprecated: Use DemultiplexingActionRouterConfiguration.ProtoReflect.Descriptor instead.
func (*DemultiplexingActionRouterConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescGZIP(), []int{2}
}

func (x *DemultiplexingActionRouterConfiguration) GetPlatformKeyExtractor() *PlatformKeyExtractorConfiguration {
	if x != nil {
		return x.PlatformKeyExtractor
	}
	return nil
}

func (x *DemultiplexingActionRouterConfiguration) GetBackends() []*DemultiplexingActionRouterConfiguration_Backend {
	if x != nil {
		return x.Backends
	}
	return nil
}

func (x *DemultiplexingActionRouterConfiguration) GetDefaultActionRouter() *ActionRouterConfiguration {
	if x != nil {
		return x.DefaultActionRouter
	}
	return nil
}

type PlatformKeyExtractorConfiguration struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*PlatformKeyExtractorConfiguration_Action
	//	*PlatformKeyExtractorConfiguration_ActionAndCommand
	//	*PlatformKeyExtractorConfiguration_Static
	Kind          isPlatformKeyExtractorConfiguration_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlatformKeyExtractorConfiguration) Reset() {
	*x = PlatformKeyExtractorConfiguration{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PlatformKeyExtractorConfiguration) ProtoMessage() {}

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

// Deprecated: Use PlatformKeyExtractorConfiguration.ProtoReflect.Descriptor instead.
func (*PlatformKeyExtractorConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescGZIP(), []int{3}
}

func (x *PlatformKeyExtractorConfiguration) GetKind() isPlatformKeyExtractorConfiguration_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *PlatformKeyExtractorConfiguration) GetAction() *emptypb.Empty {
	if x != nil {
		if x, ok := x.Kind.(*PlatformKeyExtractorConfiguration_Action); ok {
			return x.Action
		}
	}
	return nil
}

func (x *PlatformKeyExtractorConfiguration) GetActionAndCommand() *emptypb.Empty {
	if x != nil {
		if x, ok := x.Kind.(*PlatformKeyExtractorConfiguration_ActionAndCommand); ok {
			return x.ActionAndCommand
		}
	}
	return nil
}

func (x *PlatformKeyExtractorConfiguration) GetStatic() *v2.Platform {
	if x != nil {
		if x, ok := x.Kind.(*PlatformKeyExtractorConfiguration_Static); ok {
			return x.Static
		}
	}
	return nil
}

type isPlatformKeyExtractorConfiguration_Kind interface {
	isPlatformKeyExtractorConfiguration_Kind()
}

type PlatformKeyExtractorConfiguration_Action struct {
	Action *emptypb.Empty `protobuf:"bytes,1,opt,name=action,proto3,oneof"`
}

type PlatformKeyExtractorConfiguration_ActionAndCommand struct {
	ActionAndCommand *emptypb.Empty `protobuf:"bytes,2,opt,name=action_and_command,json=actionAndCommand,proto3,oneof"`
}

type PlatformKeyExtractorConfiguration_Static struct {
	Static *v2.Platform `protobuf:"bytes,3,opt,name=static,proto3,oneof"`
}

func (*PlatformKeyExtractorConfiguration_Action) isPlatformKeyExtractorConfiguration_Kind() {}

func (*PlatformKeyExtractorConfiguration_ActionAndCommand) isPlatformKeyExtractorConfiguration_Kind() {
}

func (*PlatformKeyExtractorConfiguration_Static) isPlatformKeyExtractorConfiguration_Kind() {}

type InvocationKeyExtractorConfiguration struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Kind:
	//
	//	*InvocationKeyExtractorConfiguration_ToolInvocationId
	//	*InvocationKeyExtractorConfiguration_CorrelatedInvocationsId
	//	*InvocationKeyExtractorConfiguration_AuthenticationMetadata
	Kind          isInvocationKeyExtractorConfiguration_Kind `protobuf_oneof:"kind"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *InvocationKeyExtractorConfiguration) Reset() {
	*x = InvocationKeyExtractorConfiguration{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*InvocationKeyExtractorConfiguration) ProtoMessage() {}

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

// Deprecated: Use InvocationKeyExtractorConfiguration.ProtoReflect.Descriptor instead.
func (*InvocationKeyExtractorConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescGZIP(), []int{4}
}

func (x *InvocationKeyExtractorConfiguration) GetKind() isInvocationKeyExtractorConfiguration_Kind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *InvocationKeyExtractorConfiguration) GetToolInvocationId() *emptypb.Empty {
	if x != nil {
		if x, ok := x.Kind.(*InvocationKeyExtractorConfiguration_ToolInvocationId); ok {
			return x.ToolInvocationId
		}
	}
	return nil
}

func (x *InvocationKeyExtractorConfiguration) GetCorrelatedInvocationsId() *emptypb.Empty {
	if x != nil {
		if x, ok := x.Kind.(*InvocationKeyExtractorConfiguration_CorrelatedInvocationsId); ok {
			return x.CorrelatedInvocationsId
		}
	}
	return nil
}

func (x *InvocationKeyExtractorConfiguration) GetAuthenticationMetadata() *emptypb.Empty {
	if x != nil {
		if x, ok := x.Kind.(*InvocationKeyExtractorConfiguration_AuthenticationMetadata); ok {
			return x.AuthenticationMetadata
		}
	}
	return nil
}

type isInvocationKeyExtractorConfiguration_Kind interface {
	isInvocationKeyExtractorConfiguration_Kind()
}

type InvocationKeyExtractorConfiguration_ToolInvocationId struct {
	ToolInvocationId *emptypb.Empty `protobuf:"bytes,2,opt,name=tool_invocation_id,json=toolInvocationId,proto3,oneof"`
}

type InvocationKeyExtractorConfiguration_CorrelatedInvocationsId struct {
	CorrelatedInvocationsId *emptypb.Empty `protobuf:"bytes,3,opt,name=correlated_invocations_id,json=correlatedInvocationsId,proto3,oneof"`
}

type InvocationKeyExtractorConfiguration_AuthenticationMetadata struct {
	AuthenticationMetadata *emptypb.Empty `protobuf:"bytes,4,opt,name=authentication_metadata,json=authenticationMetadata,proto3,oneof"`
}

func (*InvocationKeyExtractorConfiguration_ToolInvocationId) isInvocationKeyExtractorConfiguration_Kind() {
}

func (*InvocationKeyExtractorConfiguration_CorrelatedInvocationsId) isInvocationKeyExtractorConfiguration_Kind() {
}

func (*InvocationKeyExtractorConfiguration_AuthenticationMetadata) isInvocationKeyExtractorConfiguration_Kind() {
}

type InitialSizeClassAnalyzerConfiguration struct {
	state                   protoimpl.MessageState                               `protogen:"open.v1"`
	DefaultExecutionTimeout *durationpb.Duration                                 `protobuf:"bytes,1,opt,name=default_execution_timeout,json=defaultExecutionTimeout,proto3" json:"default_execution_timeout,omitempty"`
	MaximumExecutionTimeout *durationpb.Duration                                 `protobuf:"bytes,2,opt,name=maximum_execution_timeout,json=maximumExecutionTimeout,proto3" json:"maximum_execution_timeout,omitempty"`
	FeedbackDriven          *InitialSizeClassFeedbackDrivenAnalyzerConfiguration `protobuf:"bytes,3,opt,name=feedback_driven,json=feedbackDriven,proto3" json:"feedback_driven,omitempty"`
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

func (x *InitialSizeClassAnalyzerConfiguration) Reset() {
	*x = InitialSizeClassAnalyzerConfiguration{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*InitialSizeClassAnalyzerConfiguration) ProtoMessage() {}

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

// Deprecated: Use InitialSizeClassAnalyzerConfiguration.ProtoReflect.Descriptor instead.
func (*InitialSizeClassAnalyzerConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescGZIP(), []int{5}
}

func (x *InitialSizeClassAnalyzerConfiguration) GetDefaultExecutionTimeout() *durationpb.Duration {
	if x != nil {
		return x.DefaultExecutionTimeout
	}
	return nil
}

func (x *InitialSizeClassAnalyzerConfiguration) GetMaximumExecutionTimeout() *durationpb.Duration {
	if x != nil {
		return x.MaximumExecutionTimeout
	}
	return nil
}

func (x *InitialSizeClassAnalyzerConfiguration) GetFeedbackDriven() *InitialSizeClassFeedbackDrivenAnalyzerConfiguration {
	if x != nil {
		return x.FeedbackDriven
	}
	return nil
}

type InitialSizeClassFeedbackDrivenAnalyzerConfiguration struct {
	state                protoimpl.MessageState                                   `protogen:"open.v1"`
	FailureCacheDuration *durationpb.Duration                                     `protobuf:"bytes,1,opt,name=failure_cache_duration,json=failureCacheDuration,proto3" json:"failure_cache_duration,omitempty"`
	HistorySize          int32                                                    `protobuf:"varint,6,opt,name=history_size,json=historySize,proto3" json:"history_size,omitempty"`
	PageRank             *InitialSizeClassPageRankStrategyCalculatorConfiguration `protobuf:"bytes,7,opt,name=page_rank,json=pageRank,proto3" json:"page_rank,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *InitialSizeClassFeedbackDrivenAnalyzerConfiguration) Reset() {
	*x = InitialSizeClassFeedbackDrivenAnalyzerConfiguration{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*InitialSizeClassFeedbackDrivenAnalyzerConfiguration) ProtoMessage() {}

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

// Deprecated: Use InitialSizeClassFeedbackDrivenAnalyzerConfiguration.ProtoReflect.Descriptor instead.
func (*InitialSizeClassFeedbackDrivenAnalyzerConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescGZIP(), []int{6}
}

func (x *InitialSizeClassFeedbackDrivenAnalyzerConfiguration) GetFailureCacheDuration() *durationpb.Duration {
	if x != nil {
		return x.FailureCacheDuration
	}
	return nil
}

func (x *InitialSizeClassFeedbackDrivenAnalyzerConfiguration) GetHistorySize() int32 {
	if x != nil {
		return x.HistorySize
	}
	return 0
}

func (x *InitialSizeClassFeedbackDrivenAnalyzerConfiguration) GetPageRank() *InitialSizeClassPageRankStrategyCalculatorConfiguration {
	if x != nil {
		return x.PageRank
	}
	return nil
}

type InitialSizeClassPageRankStrategyCalculatorConfiguration struct {
	state                                      protoimpl.MessageState `protogen:"open.v1"`
	AcceptableExecutionTimeIncreaseExponent    float64                `protobuf:"fixed64,1,opt,name=acceptable_execution_time_increase_exponent,json=acceptableExecutionTimeIncreaseExponent,proto3" json:"acceptable_execution_time_increase_exponent,omitempty"`
	SmallerSizeClassExecutionTimeoutMultiplier float64                `protobuf:"fixed64,2,opt,name=smaller_size_class_execution_timeout_multiplier,json=smallerSizeClassExecutionTimeoutMultiplier,proto3" json:"smaller_size_class_execution_timeout_multiplier,omitempty"`
	MinimumExecutionTimeout                    *durationpb.Duration   `protobuf:"bytes,3,opt,name=minimum_execution_timeout,json=minimumExecutionTimeout,proto3" json:"minimum_execution_timeout,omitempty"`
	MaximumConvergenceError                    float64                `protobuf:"fixed64,4,opt,name=maximum_convergence_error,json=maximumConvergenceError,proto3" json:"maximum_convergence_error,omitempty"`
	unknownFields                              protoimpl.UnknownFields
	sizeCache                                  protoimpl.SizeCache
}

func (x *InitialSizeClassPageRankStrategyCalculatorConfiguration) Reset() {
	*x = InitialSizeClassPageRankStrategyCalculatorConfiguration{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*InitialSizeClassPageRankStrategyCalculatorConfiguration) ProtoMessage() {}

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

// Deprecated: Use InitialSizeClassPageRankStrategyCalculatorConfiguration.ProtoReflect.Descriptor instead.
func (*InitialSizeClassPageRankStrategyCalculatorConfiguration) Descriptor() ([]byte, []int) {
	return file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescGZIP(), []int{7}
}

func (x *InitialSizeClassPageRankStrategyCalculatorConfiguration) GetAcceptableExecutionTimeIncreaseExponent() float64 {
	if x != nil {
		return x.AcceptableExecutionTimeIncreaseExponent
	}
	return 0
}

func (x *InitialSizeClassPageRankStrategyCalculatorConfiguration) GetSmallerSizeClassExecutionTimeoutMultiplier() float64 {
	if x != nil {
		return x.SmallerSizeClassExecutionTimeoutMultiplier
	}
	return 0
}

func (x *InitialSizeClassPageRankStrategyCalculatorConfiguration) GetMinimumExecutionTimeout() *durationpb.Duration {
	if x != nil {
		return x.MinimumExecutionTimeout
	}
	return nil
}

func (x *InitialSizeClassPageRankStrategyCalculatorConfiguration) GetMaximumConvergenceError() float64 {
	if x != nil {
		return x.MaximumConvergenceError
	}
	return 0
}

type DemultiplexingActionRouterConfiguration_Backend struct {
	state              protoimpl.MessageState     `protogen:"open.v1"`
	InstanceNamePrefix string                     `protobuf:"bytes,1,opt,name=instance_name_prefix,json=instanceNamePrefix,proto3" json:"instance_name_prefix,omitempty"`
	Platform           *v2.Platform               `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform,omitempty"`
	ActionRouter       *ActionRouterConfiguration `protobuf:"bytes,3,opt,name=action_router,json=actionRouter,proto3" json:"action_router,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *DemultiplexingActionRouterConfiguration_Backend) Reset() {
	*x = DemultiplexingActionRouterConfiguration_Backend{}
	mi := &file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DemultiplexingActionRouterConfiguration_Backend) ProtoMessage() {}

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

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

func (x *DemultiplexingActionRouterConfiguration_Backend) GetInstanceNamePrefix() string {
	if x != nil {
		return x.InstanceNamePrefix
	}
	return ""
}

func (x *DemultiplexingActionRouterConfiguration_Backend) GetPlatform() *v2.Platform {
	if x != nil {
		return x.Platform
	}
	return nil
}

func (x *DemultiplexingActionRouterConfiguration_Backend) GetActionRouter() *ActionRouterConfiguration {
	if x != nil {
		return x.ActionRouter
	}
	return nil
}

var File_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto protoreflect.FileDescriptor

const file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDesc = "" +
	"\n" +
	"Zgithub.com/buildbarn/bb-remote-execution/pkg/proto/configuration/scheduler/scheduler.proto\x12!buildbarn.configuration.scheduler\x1a6build/bazel/remote/execution/v2/remote_execution.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\"\xf7\x01\n" +
	"\x19ActionRouterConfiguration\x12\\\n" +
	"\x06simple\x18\x01 \x01(\v2B.buildbarn.configuration.scheduler.SimpleActionRouterConfigurationH\x00R\x06simple\x12t\n" +
	"\x0edemultiplexing\x18\x02 \x01(\v2J.buildbarn.configuration.scheduler.DemultiplexingActionRouterConfigurationH\x00R\x0edemultiplexingB\x06\n" +
	"\x04kind\"\xac\x03\n" +
	"\x1fSimpleActionRouterConfiguration\x12z\n" +
	"\x16platform_key_extractor\x18\x01 \x01(\v2D.buildbarn.configuration.scheduler.PlatformKeyExtractorConfigurationR\x14platformKeyExtractor\x12\x82\x01\n" +
	"\x19invocation_key_extractors\x18\x02 \x03(\v2F.buildbarn.configuration.scheduler.InvocationKeyExtractorConfigurationR\x17invocationKeyExtractors\x12\x87\x01\n" +
	"\x1binitial_size_class_analyzer\x18\x03 \x01(\v2H.buildbarn.configuration.scheduler.InitialSizeClassAnalyzerConfigurationR\x18initialSizeClassAnalyzer\"\xef\x04\n" +
	"'DemultiplexingActionRouterConfiguration\x12z\n" +
	"\x16platform_key_extractor\x18\x01 \x01(\v2D.buildbarn.configuration.scheduler.PlatformKeyExtractorConfigurationR\x14platformKeyExtractor\x12n\n" +
	"\bbackends\x18\x02 \x03(\v2R.buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration.BackendR\bbackends\x12p\n" +
	"\x15default_action_router\x18\x03 \x01(\v2<.buildbarn.configuration.scheduler.ActionRouterConfigurationR\x13defaultActionRouter\x1a\xe5\x01\n" +
	"\aBackend\x120\n" +
	"\x14instance_name_prefix\x18\x01 \x01(\tR\x12instanceNamePrefix\x12E\n" +
	"\bplatform\x18\x02 \x01(\v2).build.bazel.remote.execution.v2.PlatformR\bplatform\x12a\n" +
	"\raction_router\x18\x03 \x01(\v2<.buildbarn.configuration.scheduler.ActionRouterConfigurationR\factionRouter\"\xea\x01\n" +
	"!PlatformKeyExtractorConfiguration\x120\n" +
	"\x06action\x18\x01 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x06action\x12F\n" +
	"\x12action_and_command\x18\x02 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x10actionAndCommand\x12C\n" +
	"\x06static\x18\x03 \x01(\v2).build.bazel.remote.execution.v2.PlatformH\x00R\x06staticB\x06\n" +
	"\x04kind\"\xa4\x02\n" +
	"#InvocationKeyExtractorConfiguration\x12F\n" +
	"\x12tool_invocation_id\x18\x02 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x10toolInvocationId\x12T\n" +
	"\x19correlated_invocations_id\x18\x03 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x17correlatedInvocationsId\x12Q\n" +
	"\x17authentication_metadata\x18\x04 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x16authenticationMetadataB\x06\n" +
	"\x04kindJ\x04\b\x01\x10\x02\"\xd6\x02\n" +
	"%InitialSizeClassAnalyzerConfiguration\x12U\n" +
	"\x19default_execution_timeout\x18\x01 \x01(\v2\x19.google.protobuf.DurationR\x17defaultExecutionTimeout\x12U\n" +
	"\x19maximum_execution_timeout\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\x17maximumExecutionTimeout\x12\x7f\n" +
	"\x0ffeedback_driven\x18\x03 \x01(\v2V.buildbarn.configuration.scheduler.InitialSizeClassFeedbackDrivenAnalyzerConfigurationR\x0efeedbackDriven\"\xba\x02\n" +
	"3InitialSizeClassFeedbackDrivenAnalyzerConfiguration\x12O\n" +
	"\x16failure_cache_duration\x18\x01 \x01(\v2\x19.google.protobuf.DurationR\x14failureCacheDuration\x12!\n" +
	"\fhistory_size\x18\x06 \x01(\x05R\vhistorySize\x12w\n" +
	"\tpage_rank\x18\a \x01(\v2Z.buildbarn.configuration.scheduler.InitialSizeClassPageRankStrategyCalculatorConfigurationR\bpageRankJ\x04\b\x02\x10\x03J\x04\b\x03\x10\x04J\x04\b\x04\x10\x05J\x04\b\x05\x10\x06\"\x8f\x03\n" +
	"7InitialSizeClassPageRankStrategyCalculatorConfiguration\x12\\\n" +
	"+acceptable_execution_time_increase_exponent\x18\x01 \x01(\x01R'acceptableExecutionTimeIncreaseExponent\x12c\n" +
	"/smaller_size_class_execution_timeout_multiplier\x18\x02 \x01(\x01R*smallerSizeClassExecutionTimeoutMultiplier\x12U\n" +
	"\x19minimum_execution_timeout\x18\x03 \x01(\v2\x19.google.protobuf.DurationR\x17minimumExecutionTimeout\x12:\n" +
	"\x19maximum_convergence_error\x18\x04 \x01(\x01R\x17maximumConvergenceErrorBLZJgithub.com/buildbarn/bb-remote-execution/pkg/proto/configuration/schedulerb\x06proto3"

var (
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescOnce sync.Once
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescData []byte
)

func file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescGZIP() []byte {
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescOnce.Do(func() {
		file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDesc), len(file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDesc)))
	})
	return file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDescData
}

var file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_goTypes = []any{
	(*ActionRouterConfiguration)(nil),                               // 0: buildbarn.configuration.scheduler.ActionRouterConfiguration
	(*SimpleActionRouterConfiguration)(nil),                         // 1: buildbarn.configuration.scheduler.SimpleActionRouterConfiguration
	(*DemultiplexingActionRouterConfiguration)(nil),                 // 2: buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration
	(*PlatformKeyExtractorConfiguration)(nil),                       // 3: buildbarn.configuration.scheduler.PlatformKeyExtractorConfiguration
	(*InvocationKeyExtractorConfiguration)(nil),                     // 4: buildbarn.configuration.scheduler.InvocationKeyExtractorConfiguration
	(*InitialSizeClassAnalyzerConfiguration)(nil),                   // 5: buildbarn.configuration.scheduler.InitialSizeClassAnalyzerConfiguration
	(*InitialSizeClassFeedbackDrivenAnalyzerConfiguration)(nil),     // 6: buildbarn.configuration.scheduler.InitialSizeClassFeedbackDrivenAnalyzerConfiguration
	(*InitialSizeClassPageRankStrategyCalculatorConfiguration)(nil), // 7: buildbarn.configuration.scheduler.InitialSizeClassPageRankStrategyCalculatorConfiguration
	(*DemultiplexingActionRouterConfiguration_Backend)(nil),         // 8: buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration.Backend
	(*emptypb.Empty)(nil),                                           // 9: google.protobuf.Empty
	(*v2.Platform)(nil),                                             // 10: build.bazel.remote.execution.v2.Platform
	(*durationpb.Duration)(nil),                                     // 11: google.protobuf.Duration
}
var file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_depIdxs = []int32{
	1,  // 0: buildbarn.configuration.scheduler.ActionRouterConfiguration.simple:type_name -> buildbarn.configuration.scheduler.SimpleActionRouterConfiguration
	2,  // 1: buildbarn.configuration.scheduler.ActionRouterConfiguration.demultiplexing:type_name -> buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration
	3,  // 2: buildbarn.configuration.scheduler.SimpleActionRouterConfiguration.platform_key_extractor:type_name -> buildbarn.configuration.scheduler.PlatformKeyExtractorConfiguration
	4,  // 3: buildbarn.configuration.scheduler.SimpleActionRouterConfiguration.invocation_key_extractors:type_name -> buildbarn.configuration.scheduler.InvocationKeyExtractorConfiguration
	5,  // 4: buildbarn.configuration.scheduler.SimpleActionRouterConfiguration.initial_size_class_analyzer:type_name -> buildbarn.configuration.scheduler.InitialSizeClassAnalyzerConfiguration
	3,  // 5: buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration.platform_key_extractor:type_name -> buildbarn.configuration.scheduler.PlatformKeyExtractorConfiguration
	8,  // 6: buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration.backends:type_name -> buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration.Backend
	0,  // 7: buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration.default_action_router:type_name -> buildbarn.configuration.scheduler.ActionRouterConfiguration
	9,  // 8: buildbarn.configuration.scheduler.PlatformKeyExtractorConfiguration.action:type_name -> google.protobuf.Empty
	9,  // 9: buildbarn.configuration.scheduler.PlatformKeyExtractorConfiguration.action_and_command:type_name -> google.protobuf.Empty
	10, // 10: buildbarn.configuration.scheduler.PlatformKeyExtractorConfiguration.static:type_name -> build.bazel.remote.execution.v2.Platform
	9,  // 11: buildbarn.configuration.scheduler.InvocationKeyExtractorConfiguration.tool_invocation_id:type_name -> google.protobuf.Empty
	9,  // 12: buildbarn.configuration.scheduler.InvocationKeyExtractorConfiguration.correlated_invocations_id:type_name -> google.protobuf.Empty
	9,  // 13: buildbarn.configuration.scheduler.InvocationKeyExtractorConfiguration.authentication_metadata:type_name -> google.protobuf.Empty
	11, // 14: buildbarn.configuration.scheduler.InitialSizeClassAnalyzerConfiguration.default_execution_timeout:type_name -> google.protobuf.Duration
	11, // 15: buildbarn.configuration.scheduler.InitialSizeClassAnalyzerConfiguration.maximum_execution_timeout:type_name -> google.protobuf.Duration
	6,  // 16: buildbarn.configuration.scheduler.InitialSizeClassAnalyzerConfiguration.feedback_driven:type_name -> buildbarn.configuration.scheduler.InitialSizeClassFeedbackDrivenAnalyzerConfiguration
	11, // 17: buildbarn.configuration.scheduler.InitialSizeClassFeedbackDrivenAnalyzerConfiguration.failure_cache_duration:type_name -> google.protobuf.Duration
	7,  // 18: buildbarn.configuration.scheduler.InitialSizeClassFeedbackDrivenAnalyzerConfiguration.page_rank:type_name -> buildbarn.configuration.scheduler.InitialSizeClassPageRankStrategyCalculatorConfiguration
	11, // 19: buildbarn.configuration.scheduler.InitialSizeClassPageRankStrategyCalculatorConfiguration.minimum_execution_timeout:type_name -> google.protobuf.Duration
	10, // 20: buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration.Backend.platform:type_name -> build.bazel.remote.execution.v2.Platform
	0,  // 21: buildbarn.configuration.scheduler.DemultiplexingActionRouterConfiguration.Backend.action_router:type_name -> buildbarn.configuration.scheduler.ActionRouterConfiguration
	22, // [22:22] is the sub-list for method output_type
	22, // [22:22] is the sub-list for method input_type
	22, // [22:22] is the sub-list for extension type_name
	22, // [22:22] is the sub-list for extension extendee
	0,  // [0:22] is the sub-list for field type_name
}

func init() {
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_init()
}
func file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_init() {
	if File_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto != nil {
		return
	}
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[0].OneofWrappers = []any{
		(*ActionRouterConfiguration_Simple)(nil),
		(*ActionRouterConfiguration_Demultiplexing)(nil),
	}
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[3].OneofWrappers = []any{
		(*PlatformKeyExtractorConfiguration_Action)(nil),
		(*PlatformKeyExtractorConfiguration_ActionAndCommand)(nil),
		(*PlatformKeyExtractorConfiguration_Static)(nil),
	}
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes[4].OneofWrappers = []any{
		(*InvocationKeyExtractorConfiguration_ToolInvocationId)(nil),
		(*InvocationKeyExtractorConfiguration_CorrelatedInvocationsId)(nil),
		(*InvocationKeyExtractorConfiguration_AuthenticationMetadata)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDesc), len(file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   9,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_goTypes,
		DependencyIndexes: file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_depIdxs,
		MessageInfos:      file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_msgTypes,
	}.Build()
	File_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto = out.File
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_goTypes = nil
	file_github_com_buildbarn_bb_remote_execution_pkg_proto_configuration_scheduler_scheduler_proto_depIdxs = nil
}
