diff --git a/api/Makefile b/api/Makefile index acc730ddd8..b25a9552a6 100644 --- a/api/Makefile +++ b/api/Makefile @@ -26,6 +26,11 @@ buf-generate: @#generate sdk flowcontrol stubs and copy them over + @#golang + @rm -rf ../sdks/aperture-go/gen/proto/flowcontrol/* + @cp -R gen/proto/go/aperture/flowcontrol/check ../sdks/aperture-go/gen/proto/flowcontrol/ + @cp -R gen/proto/go/aperture/flowcontrol/checkhttp ../sdks/aperture-go/gen/proto/flowcontrol/ + @#csharp @rm -rf ../sdks/aperture-csharp/Generated/Aperture/Flowcontrol/ @cp -R gen/proto/csharp/Aperture/Flowcontrol/Check ../sdks/aperture-csharp/Generated/Aperture/Flowcontrol/ diff --git a/api/aperture/flowcontrol/check/v1/check.proto b/api/aperture/flowcontrol/check/v1/check.proto index daf325d5b7..d2319485d6 100644 --- a/api/aperture/flowcontrol/check/v1/check.proto +++ b/api/aperture/flowcontrol/check/v1/check.proto @@ -9,6 +9,8 @@ import "google/protobuf/timestamp.proto"; service FlowControlService { // Check wraps the given arbitrary resource and matches the given labels against Flow Control Limiters to makes a decision whether to allow/deny. rpc Check(CheckRequest) returns (CheckResponse) {} + rpc CacheUpsert(CacheUpsertRequest) returns (CacheUpsertResponse) {} + rpc CacheDelete(CacheDeleteRequest) returns (CacheDeleteResponse) {} } // CheckRequest contains fields required to perform Check call. @@ -16,6 +18,8 @@ message CheckRequest { string control_point = 1; map labels = 2; bool ramp_mode = 3; + // Cache item to fetch. + string cache_key = 4; } // CheckResponse contains fields that represent decision made by Check call. @@ -63,6 +67,47 @@ message CheckResponse { // http_status contains the http status code to be returned to the client, if // decision_type is REJECTED. Optional. StatusCode denied_response_status_code = 14; + // Matching cached value. + CachedValue cached_value = 15; +} + +enum CacheLookupStatus { + HIT = 0; + MISS = 1; +} + +enum CacheOperationStatus { + SUCCESS = 0; + ERROR = 1; +} + +message CachedValue { + bytes value = 1; + CacheLookupStatus lookup_status = 2; + CacheOperationStatus operation_status = 3; + string error = 4; +} + +message CacheUpsertRequest { + string control_point = 1; + string key = 2; + bytes value = 3; + google.protobuf.Duration ttl = 4; +} + +message CacheUpsertResponse { + CacheOperationStatus operation_status = 1; + string error = 2; +} + +message CacheDeleteRequest { + string control_point = 1; + string key = 2; +} + +message CacheDeleteResponse { + CacheOperationStatus operation_status = 1; + string error = 2; } // ClassifierInfo describes details for each ClassifierInfo. diff --git a/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.go b/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.go index 89f1a610cb..d5332d6fb6 100644 --- a/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.go +++ b/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.go @@ -22,6 +22,98 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type CacheLookupStatus int32 + +const ( + CacheLookupStatus_HIT CacheLookupStatus = 0 + CacheLookupStatus_MISS CacheLookupStatus = 1 +) + +// Enum value maps for CacheLookupStatus. +var ( + CacheLookupStatus_name = map[int32]string{ + 0: "HIT", + 1: "MISS", + } + CacheLookupStatus_value = map[string]int32{ + "HIT": 0, + "MISS": 1, + } +) + +func (x CacheLookupStatus) Enum() *CacheLookupStatus { + p := new(CacheLookupStatus) + *p = x + return p +} + +func (x CacheLookupStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CacheLookupStatus) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[0].Descriptor() +} + +func (CacheLookupStatus) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[0] +} + +func (x CacheLookupStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CacheLookupStatus.Descriptor instead. +func (CacheLookupStatus) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{0} +} + +type CacheOperationStatus int32 + +const ( + CacheOperationStatus_SUCCESS CacheOperationStatus = 0 + CacheOperationStatus_ERROR CacheOperationStatus = 1 +) + +// Enum value maps for CacheOperationStatus. +var ( + CacheOperationStatus_name = map[int32]string{ + 0: "SUCCESS", + 1: "ERROR", + } + CacheOperationStatus_value = map[string]int32{ + "SUCCESS": 0, + "ERROR": 1, + } +) + +func (x CacheOperationStatus) Enum() *CacheOperationStatus { + p := new(CacheOperationStatus) + *p = x + return p +} + +func (x CacheOperationStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CacheOperationStatus) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[1].Descriptor() +} + +func (CacheOperationStatus) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[1] +} + +func (x CacheOperationStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CacheOperationStatus.Descriptor instead. +func (CacheOperationStatus) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{1} +} + // HTTP response codes. // For more details: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml type StatusCode int32 @@ -220,11 +312,11 @@ func (x StatusCode) String() string { } func (StatusCode) Descriptor() protoreflect.EnumDescriptor { - return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[0].Descriptor() + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[2].Descriptor() } func (StatusCode) Type() protoreflect.EnumType { - return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[0] + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[2] } func (x StatusCode) Number() protoreflect.EnumNumber { @@ -233,7 +325,7 @@ func (x StatusCode) Number() protoreflect.EnumNumber { // Deprecated: Use StatusCode.Descriptor instead. func (StatusCode) EnumDescriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{0} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{2} } // RejectReason contains fields that give further information about rejection. @@ -276,11 +368,11 @@ func (x CheckResponse_RejectReason) String() string { } func (CheckResponse_RejectReason) Descriptor() protoreflect.EnumDescriptor { - return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[1].Descriptor() + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[3].Descriptor() } func (CheckResponse_RejectReason) Type() protoreflect.EnumType { - return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[1] + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[3] } func (x CheckResponse_RejectReason) Number() protoreflect.EnumNumber { @@ -323,11 +415,11 @@ func (x CheckResponse_DecisionType) String() string { } func (CheckResponse_DecisionType) Descriptor() protoreflect.EnumDescriptor { - return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[2].Descriptor() + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[4].Descriptor() } func (CheckResponse_DecisionType) Type() protoreflect.EnumType { - return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[2] + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[4] } func (x CheckResponse_DecisionType) Number() protoreflect.EnumNumber { @@ -382,11 +474,11 @@ func (x ClassifierInfo_Error) String() string { } func (ClassifierInfo_Error) Descriptor() protoreflect.EnumDescriptor { - return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[3].Descriptor() + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[5].Descriptor() } func (ClassifierInfo_Error) Type() protoreflect.EnumType { - return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[3] + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[5] } func (x ClassifierInfo_Error) Number() protoreflect.EnumNumber { @@ -395,7 +487,7 @@ func (x ClassifierInfo_Error) Number() protoreflect.EnumNumber { // Deprecated: Use ClassifierInfo_Error.Descriptor instead. func (ClassifierInfo_Error) EnumDescriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{2, 0} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{7, 0} } type LimiterDecision_LimiterReason int32 @@ -428,11 +520,11 @@ func (x LimiterDecision_LimiterReason) String() string { } func (LimiterDecision_LimiterReason) Descriptor() protoreflect.EnumDescriptor { - return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[4].Descriptor() + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[6].Descriptor() } func (LimiterDecision_LimiterReason) Type() protoreflect.EnumType { - return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[4] + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[6] } func (x LimiterDecision_LimiterReason) Number() protoreflect.EnumNumber { @@ -441,7 +533,7 @@ func (x LimiterDecision_LimiterReason) Number() protoreflect.EnumNumber { // Deprecated: Use LimiterDecision_LimiterReason.Descriptor instead. func (LimiterDecision_LimiterReason) EnumDescriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3, 0} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 0} } // CheckRequest contains fields required to perform Check call. @@ -453,6 +545,8 @@ type CheckRequest struct { ControlPoint string `protobuf:"bytes,1,opt,name=control_point,json=controlPoint,proto3" json:"control_point,omitempty"` Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` RampMode bool `protobuf:"varint,3,opt,name=ramp_mode,json=rampMode,proto3" json:"ramp_mode,omitempty"` + // Cache item to fetch. + CacheKey string `protobuf:"bytes,4,opt,name=cache_key,json=cacheKey,proto3" json:"cache_key,omitempty"` } func (x *CheckRequest) Reset() { @@ -508,6 +602,13 @@ func (x *CheckRequest) GetRampMode() bool { return false } +func (x *CheckRequest) GetCacheKey() string { + if x != nil { + return x.CacheKey + } + return "" +} + // CheckResponse contains fields that represent decision made by Check call. type CheckResponse struct { state protoimpl.MessageState @@ -542,6 +643,8 @@ type CheckResponse struct { // http_status contains the http status code to be returned to the client, if // decision_type is REJECTED. Optional. DeniedResponseStatusCode StatusCode `protobuf:"varint,14,opt,name=denied_response_status_code,json=deniedResponseStatusCode,proto3,enum=aperture.flowcontrol.check.v1.StatusCode" json:"denied_response_status_code,omitempty"` + // Matching cached value. + CachedValue *CachedValue `protobuf:"bytes,15,opt,name=cached_value,json=cachedValue,proto3" json:"cached_value,omitempty"` } func (x *CheckResponse) Reset() { @@ -667,6 +770,320 @@ func (x *CheckResponse) GetDeniedResponseStatusCode() StatusCode { return StatusCode_Empty } +func (x *CheckResponse) GetCachedValue() *CachedValue { + if x != nil { + return x.CachedValue + } + return nil +} + +type CachedValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + LookupStatus CacheLookupStatus `protobuf:"varint,2,opt,name=lookup_status,json=lookupStatus,proto3,enum=aperture.flowcontrol.check.v1.CacheLookupStatus" json:"lookup_status,omitempty"` + OperationStatus CacheOperationStatus `protobuf:"varint,3,opt,name=operation_status,json=operationStatus,proto3,enum=aperture.flowcontrol.check.v1.CacheOperationStatus" json:"operation_status,omitempty"` + Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *CachedValue) Reset() { + *x = CachedValue{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CachedValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CachedValue) ProtoMessage() {} + +func (x *CachedValue) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[2] + 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 CachedValue.ProtoReflect.Descriptor instead. +func (*CachedValue) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{2} +} + +func (x *CachedValue) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *CachedValue) GetLookupStatus() CacheLookupStatus { + if x != nil { + return x.LookupStatus + } + return CacheLookupStatus_HIT +} + +func (x *CachedValue) GetOperationStatus() CacheOperationStatus { + if x != nil { + return x.OperationStatus + } + return CacheOperationStatus_SUCCESS +} + +func (x *CachedValue) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +type CacheUpsertRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ControlPoint string `protobuf:"bytes,1,opt,name=control_point,json=controlPoint,proto3" json:"control_point,omitempty"` + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + Ttl *durationpb.Duration `protobuf:"bytes,4,opt,name=ttl,proto3" json:"ttl,omitempty"` +} + +func (x *CacheUpsertRequest) Reset() { + *x = CacheUpsertRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CacheUpsertRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheUpsertRequest) ProtoMessage() {} + +func (x *CacheUpsertRequest) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3] + 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 CacheUpsertRequest.ProtoReflect.Descriptor instead. +func (*CacheUpsertRequest) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3} +} + +func (x *CacheUpsertRequest) GetControlPoint() string { + if x != nil { + return x.ControlPoint + } + return "" +} + +func (x *CacheUpsertRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *CacheUpsertRequest) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *CacheUpsertRequest) GetTtl() *durationpb.Duration { + if x != nil { + return x.Ttl + } + return nil +} + +type CacheUpsertResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperationStatus CacheOperationStatus `protobuf:"varint,1,opt,name=operation_status,json=operationStatus,proto3,enum=aperture.flowcontrol.check.v1.CacheOperationStatus" json:"operation_status,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *CacheUpsertResponse) Reset() { + *x = CacheUpsertResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CacheUpsertResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheUpsertResponse) ProtoMessage() {} + +func (x *CacheUpsertResponse) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[4] + 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 CacheUpsertResponse.ProtoReflect.Descriptor instead. +func (*CacheUpsertResponse) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{4} +} + +func (x *CacheUpsertResponse) GetOperationStatus() CacheOperationStatus { + if x != nil { + return x.OperationStatus + } + return CacheOperationStatus_SUCCESS +} + +func (x *CacheUpsertResponse) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +type CacheDeleteRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ControlPoint string `protobuf:"bytes,1,opt,name=control_point,json=controlPoint,proto3" json:"control_point,omitempty"` + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *CacheDeleteRequest) Reset() { + *x = CacheDeleteRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CacheDeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheDeleteRequest) ProtoMessage() {} + +func (x *CacheDeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[5] + 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 CacheDeleteRequest.ProtoReflect.Descriptor instead. +func (*CacheDeleteRequest) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{5} +} + +func (x *CacheDeleteRequest) GetControlPoint() string { + if x != nil { + return x.ControlPoint + } + return "" +} + +func (x *CacheDeleteRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +type CacheDeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperationStatus CacheOperationStatus `protobuf:"varint,1,opt,name=operation_status,json=operationStatus,proto3,enum=aperture.flowcontrol.check.v1.CacheOperationStatus" json:"operation_status,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *CacheDeleteResponse) Reset() { + *x = CacheDeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CacheDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheDeleteResponse) ProtoMessage() {} + +func (x *CacheDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[6] + 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 CacheDeleteResponse.ProtoReflect.Descriptor instead. +func (*CacheDeleteResponse) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{6} +} + +func (x *CacheDeleteResponse) GetOperationStatus() CacheOperationStatus { + if x != nil { + return x.OperationStatus + } + return CacheOperationStatus_SUCCESS +} + +func (x *CacheDeleteResponse) GetError() string { + if x != nil { + return x.Error + } + return "" +} + // ClassifierInfo describes details for each ClassifierInfo. type ClassifierInfo struct { state protoimpl.MessageState @@ -682,7 +1099,7 @@ type ClassifierInfo struct { func (x *ClassifierInfo) Reset() { *x = ClassifierInfo{} if protoimpl.UnsafeEnabled { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[2] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -695,7 +1112,7 @@ func (x *ClassifierInfo) String() string { func (*ClassifierInfo) ProtoMessage() {} func (x *ClassifierInfo) ProtoReflect() protoreflect.Message { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[2] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -708,7 +1125,7 @@ func (x *ClassifierInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassifierInfo.ProtoReflect.Descriptor instead. func (*ClassifierInfo) Descriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{2} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{7} } func (x *ClassifierInfo) GetPolicyName() string { @@ -764,7 +1181,7 @@ type LimiterDecision struct { func (x *LimiterDecision) Reset() { *x = LimiterDecision{} if protoimpl.UnsafeEnabled { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -777,7 +1194,7 @@ func (x *LimiterDecision) String() string { func (*LimiterDecision) ProtoMessage() {} func (x *LimiterDecision) ProtoReflect() protoreflect.Message { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -790,7 +1207,7 @@ func (x *LimiterDecision) ProtoReflect() protoreflect.Message { // Deprecated: Use LimiterDecision.ProtoReflect.Descriptor instead. func (*LimiterDecision) Descriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8} } func (x *LimiterDecision) GetPolicyName() string { @@ -917,7 +1334,7 @@ type FluxMeterInfo struct { func (x *FluxMeterInfo) Reset() { *x = FluxMeterInfo{} if protoimpl.UnsafeEnabled { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[4] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -930,7 +1347,7 @@ func (x *FluxMeterInfo) String() string { func (*FluxMeterInfo) ProtoMessage() {} func (x *FluxMeterInfo) ProtoReflect() protoreflect.Message { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[4] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -943,7 +1360,7 @@ func (x *FluxMeterInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use FluxMeterInfo.ProtoReflect.Descriptor instead. func (*FluxMeterInfo) Descriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{4} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{9} } func (x *FluxMeterInfo) GetFluxMeterName() string { @@ -970,7 +1387,7 @@ type LimiterDecision_TokensInfo struct { func (x *LimiterDecision_TokensInfo) Reset() { *x = LimiterDecision_TokensInfo{} if protoimpl.UnsafeEnabled { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[7] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -983,7 +1400,7 @@ func (x *LimiterDecision_TokensInfo) String() string { func (*LimiterDecision_TokensInfo) ProtoMessage() {} func (x *LimiterDecision_TokensInfo) ProtoReflect() protoreflect.Message { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[7] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -996,7 +1413,7 @@ func (x *LimiterDecision_TokensInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use LimiterDecision_TokensInfo.ProtoReflect.Descriptor instead. func (*LimiterDecision_TokensInfo) Descriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3, 0} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 0} } func (x *LimiterDecision_TokensInfo) GetRemaining() float64 { @@ -1032,7 +1449,7 @@ type LimiterDecision_RateLimiterInfo struct { func (x *LimiterDecision_RateLimiterInfo) Reset() { *x = LimiterDecision_RateLimiterInfo{} if protoimpl.UnsafeEnabled { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1045,7 +1462,7 @@ func (x *LimiterDecision_RateLimiterInfo) String() string { func (*LimiterDecision_RateLimiterInfo) ProtoMessage() {} func (x *LimiterDecision_RateLimiterInfo) ProtoReflect() protoreflect.Message { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1058,7 +1475,7 @@ func (x *LimiterDecision_RateLimiterInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use LimiterDecision_RateLimiterInfo.ProtoReflect.Descriptor instead. func (*LimiterDecision_RateLimiterInfo) Descriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3, 1} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 1} } func (x *LimiterDecision_RateLimiterInfo) GetLabel() string { @@ -1088,7 +1505,7 @@ type LimiterDecision_SchedulerInfo struct { func (x *LimiterDecision_SchedulerInfo) Reset() { *x = LimiterDecision_SchedulerInfo{} if protoimpl.UnsafeEnabled { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[9] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1101,7 +1518,7 @@ func (x *LimiterDecision_SchedulerInfo) String() string { func (*LimiterDecision_SchedulerInfo) ProtoMessage() {} func (x *LimiterDecision_SchedulerInfo) ProtoReflect() protoreflect.Message { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[9] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1114,7 +1531,7 @@ func (x *LimiterDecision_SchedulerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use LimiterDecision_SchedulerInfo.ProtoReflect.Descriptor instead. func (*LimiterDecision_SchedulerInfo) Descriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3, 2} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 2} } func (x *LimiterDecision_SchedulerInfo) GetWorkloadIndex() string { @@ -1149,7 +1566,7 @@ type LimiterDecision_SamplerInfo struct { func (x *LimiterDecision_SamplerInfo) Reset() { *x = LimiterDecision_SamplerInfo{} if protoimpl.UnsafeEnabled { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[10] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1162,7 +1579,7 @@ func (x *LimiterDecision_SamplerInfo) String() string { func (*LimiterDecision_SamplerInfo) ProtoMessage() {} func (x *LimiterDecision_SamplerInfo) ProtoReflect() protoreflect.Message { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[10] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1175,7 +1592,7 @@ func (x *LimiterDecision_SamplerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use LimiterDecision_SamplerInfo.ProtoReflect.Descriptor instead. func (*LimiterDecision_SamplerInfo) Descriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3, 3} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 3} } func (x *LimiterDecision_SamplerInfo) GetLabel() string { @@ -1199,7 +1616,7 @@ type LimiterDecision_QuotaSchedulerInfo struct { func (x *LimiterDecision_QuotaSchedulerInfo) Reset() { *x = LimiterDecision_QuotaSchedulerInfo{} if protoimpl.UnsafeEnabled { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[11] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1212,7 +1629,7 @@ func (x *LimiterDecision_QuotaSchedulerInfo) String() string { func (*LimiterDecision_QuotaSchedulerInfo) ProtoMessage() {} func (x *LimiterDecision_QuotaSchedulerInfo) ProtoReflect() protoreflect.Message { - mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[11] + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1225,7 +1642,7 @@ func (x *LimiterDecision_QuotaSchedulerInfo) ProtoReflect() protoreflect.Message // Deprecated: Use LimiterDecision_QuotaSchedulerInfo.ProtoReflect.Descriptor instead. func (*LimiterDecision_QuotaSchedulerInfo) Descriptor() ([]byte, []int) { - return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3, 4} + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 4} } func (x *LimiterDecision_QuotaSchedulerInfo) GetLabel() string { @@ -1267,7 +1684,7 @@ var file_aperture_flowcontrol_check_v1_check_proto_rawDesc = []byte{ 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdc, 0x01, 0x0a, 0x0c, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf9, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, @@ -1277,319 +1694,393 @@ var file_aperture_flowcontrol_check_v1_check_proto_rawDesc = []byte{ 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x61, 0x6d, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x61, 0x6d, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfd, 0x09, 0x0a, 0x0d, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, - 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26, 0x0a, - 0x0f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x79, 0x0a, 0x15, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x61, 0x6d, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x63, 0x68, 0x65, 0x4b, 0x65, 0x79, 0x1a, 0x39, 0x0a, 0x0b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc, 0x0a, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, + 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4b, 0x65, + 0x79, 0x73, 0x12, 0x79, 0x0a, 0x15, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, + 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5e, 0x0a, + 0x0d, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x74, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x12, 0x5e, 0x0a, 0x0d, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, - 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0c, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x5e, 0x0a, 0x0d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, + 0x73, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0c, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5e, 0x0a, + 0x0d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, + 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x58, 0x0a, + 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x58, 0x0a, 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x69, - 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x65, + 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x66, 0x6c, 0x75, 0x78, 0x5f, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0e, 0x66, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, + 0x5b, 0x0a, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x66, 0x6c, - 0x75, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x0b, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x09, + 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x77, 0x61, 0x69, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x68, 0x0a, 0x1b, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x18, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4d, + 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x0e, 0x66, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x73, 0x12, 0x5b, 0x0a, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65, - 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x46, 0x0a, + 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1e, + 0x0a, 0x1a, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1b, + 0x0a, 0x17, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x4e, 0x4f, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x52, + 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, + 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x4d, + 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x41, 0x4d, 0x50, 0x10, 0x04, 0x22, 0x46, + 0x0a, 0x0c, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x16, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, + 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x10, 0x01, 0x22, 0xf0, 0x01, 0x0a, 0x0b, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x55, 0x0a, 0x0d, + 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, + 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x5e, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x36, 0x0a, 0x09, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x77, - 0x61, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x68, 0x0a, 0x1b, 0x64, 0x65, 0x6e, 0x69, 0x65, - 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x0a, + 0x03, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0x8b, 0x01, 0x0a, 0x13, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x18, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, - 0x65, 0x1a, 0x46, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x46, 0x6c, - 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x52, 0x65, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, - 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x53, 0x10, 0x02, 0x12, - 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x22, - 0x0a, 0x1e, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, - 0x4e, 0x4f, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x41, 0x4d, 0x50, - 0x10, 0x04, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, - 0x0a, 0x16, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x01, 0x22, 0xed, 0x02, 0x0a, 0x0e, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, - 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x29, 0x0a, 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x49, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4b, 0x0a, 0x12, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x8b, 0x01, 0x0a, 0x13, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, + 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0xed, 0x02, 0x0a, 0x0e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x49, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, + 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa2, + 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, + 0x19, 0x0a, 0x15, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x52, + 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x45, 0x54, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x5f, 0x41, 0x4d, 0x42, 0x49, 0x47, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x52, 0x45, + 0x53, 0x55, 0x4c, 0x54, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x45, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, + 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4d, 0x41, + 0x50, 0x10, 0x05, 0x22, 0xa6, 0x0c, 0x0a, 0x0f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, + 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, + 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, + 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, + 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x1b, + 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x18, 0x64, 0x65, + 0x6e, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x77, 0x61, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, + 0x0a, 0x11, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, - 0x0e, 0x0a, 0x0a, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, - 0x15, 0x0a, 0x11, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, - 0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x45, 0x54, 0x10, - 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x41, 0x4d, 0x42, 0x49, 0x47, - 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x45, 0x54, 0x10, 0x03, - 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, - 0x45, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x05, 0x22, 0xa6, 0x0c, 0x0a, 0x0f, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x54, 0x0a, - 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, - 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x1b, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, - 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x18, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, - 0x09, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x77, 0x61, 0x69, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x11, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3e, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x48, 0x00, 0x52, 0x0f, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x6e, 0x0a, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, - 0x52, 0x11, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x5f, 0x69, - 0x6e, 0x66, 0x6f, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, + 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x6e, 0x0a, 0x13, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, - 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x75, 0x0a, 0x14, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, + 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, 0x0c, + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x12, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x60, 0x0a, 0x0a, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d, - 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x72, 0x65, - 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x1a, 0x83, 0x01, - 0x0a, 0x0f, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x5a, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, - 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, - 0x6e, 0x66, 0x6f, 0x1a, 0xae, 0x01, 0x0a, 0x0d, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x0b, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, - 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x1a, 0x23, 0x0a, 0x0b, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x1a, 0xc9, 0x01, 0x0a, 0x12, 0x51, 0x75, - 0x6f, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, - 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, - 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x51, 0x0a, 0x0d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, - 0x52, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, - 0x52, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4e, 0x4f, 0x54, - 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0x37, 0x0a, 0x0d, 0x46, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x6c, 0x75, 0x78, 0x5f, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, - 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x2a, 0xb5, 0x09, 0x0a, - 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, - 0x75, 0x65, 0x10, 0x64, 0x12, 0x07, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0xc8, 0x01, 0x12, 0x0c, 0x0a, - 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0xc9, 0x01, 0x12, 0x0d, 0x0a, 0x08, 0x41, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0xca, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x4e, 0x6f, - 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xcb, 0x01, 0x12, 0x0e, 0x0a, 0x09, - 0x4e, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xcc, 0x01, 0x12, 0x11, 0x0a, 0x0c, - 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xcd, 0x01, 0x12, - 0x13, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x10, 0xce, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x10, 0xcf, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, - 0x79, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x10, 0xd0, 0x01, 0x12, 0x0b, 0x0a, 0x06, - 0x49, 0x4d, 0x55, 0x73, 0x65, 0x64, 0x10, 0xe2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x10, 0xac, 0x02, 0x12, - 0x15, 0x0a, 0x10, 0x4d, 0x6f, 0x76, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, - 0x74, 0x6c, 0x79, 0x10, 0xad, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, - 0xae, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x65, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x10, 0xaf, - 0x02, 0x12, 0x10, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0xb0, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x10, - 0xb1, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x52, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x10, 0xb3, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x65, - 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x10, - 0xb4, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x10, 0x90, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x65, 0x64, 0x10, 0x91, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x92, 0x03, 0x12, 0x0e, 0x0a, 0x09, - 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x10, 0x93, 0x03, 0x12, 0x0d, 0x0a, 0x08, - 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x94, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x6f, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, - 0x95, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x10, 0x96, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x41, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x97, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0x98, 0x03, 0x12, 0x0d, 0x0a, - 0x08, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x10, 0x99, 0x03, 0x12, 0x09, 0x0a, 0x04, - 0x47, 0x6f, 0x6e, 0x65, 0x10, 0x9a, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x9b, 0x03, 0x12, 0x17, 0x0a, 0x12, - 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x10, 0x9c, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x54, 0x6f, 0x6f, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x10, 0x9d, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x55, - 0x52, 0x49, 0x54, 0x6f, 0x6f, 0x4c, 0x6f, 0x6e, 0x67, 0x10, 0x9e, 0x03, 0x12, 0x19, 0x0a, 0x14, - 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x10, 0x9f, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x4e, 0x6f, 0x74, 0x53, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x10, 0xa0, - 0x03, 0x12, 0x16, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xa1, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x4d, 0x69, 0x73, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, - 0xa5, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x55, 0x6e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x10, 0xa6, 0x03, 0x12, 0x0b, 0x0a, 0x06, - 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xa7, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x10, 0xa8, 0x03, - 0x12, 0x14, 0x0a, 0x0f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x64, 0x10, 0xaa, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0xac, - 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x10, 0xad, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x54, 0x6f, - 0x6f, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x10, 0xaf, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x10, 0xf4, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x65, 0x64, 0x10, 0xf5, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x47, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0xf6, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, - 0xf7, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x10, 0xf8, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x54, 0x54, 0x50, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x10, 0xf9, 0x03, 0x12, 0x1a, 0x0a, 0x15, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, - 0x41, 0x6c, 0x73, 0x6f, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x10, 0xfa, - 0x03, 0x12, 0x18, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x10, 0xfb, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x4c, - 0x6f, 0x6f, 0x70, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0xfc, 0x03, 0x12, 0x10, - 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x10, 0xfe, 0x03, - 0x12, 0x22, 0x0a, 0x1d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x10, 0xff, 0x03, 0x32, 0x7a, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x05, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, - 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x42, 0xb3, 0x02, 0x0a, 0x35, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x75, 0x78, 0x6e, 0x69, 0x6e, - 0x6a, 0x61, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x65, + 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, + 0x52, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x75, 0x0a, + 0x14, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x61, 0x70, + 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x51, 0x75, 0x6f, 0x74, + 0x61, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, + 0x52, 0x12, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x60, 0x0a, 0x0a, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x1a, 0x83, 0x01, 0x0a, 0x0f, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x5a, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0xae, 0x01, 0x0a, + 0x0d, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, + 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x75, 0x78, 0x6e, 0x69, 0x6e, 0x6a, 0x61, 0x2f, 0x61, - 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x65, 0x72, - 0x74, 0x75, 0x72, 0x65, 0x2f, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x76, - 0x31, 0xa2, 0x02, 0x03, 0x41, 0x46, 0x43, 0xaa, 0x02, 0x1d, 0x41, 0x70, 0x65, 0x72, 0x74, 0x75, - 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1d, 0x41, 0x70, 0x65, 0x72, 0x74, 0x75, - 0x72, 0x65, 0x5c, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5c, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x29, 0x41, 0x70, 0x65, 0x72, 0x74, 0x75, - 0x72, 0x65, 0x5c, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5c, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x20, 0x41, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x3a, 0x3a, - 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x1a, 0x23, 0x0a, + 0x0b, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x1a, 0xc9, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, + 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x51, + 0x0a, 0x0d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x1e, 0x0a, 0x1a, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x20, 0x0a, 0x1c, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x37, 0x0a, 0x0d, + 0x46, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, + 0x0f, 0x66, 0x6c, 0x75, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x2a, 0x26, 0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x49, + 0x54, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, + 0x14, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x2a, 0xb5, 0x09, + 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x65, 0x10, 0x64, 0x12, 0x07, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0xc8, 0x01, 0x12, 0x0c, + 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0xc9, 0x01, 0x12, 0x0d, 0x0a, 0x08, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0xca, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x4e, + 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xcb, 0x01, 0x12, 0x0e, 0x0a, + 0x09, 0x4e, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xcc, 0x01, 0x12, 0x11, 0x0a, + 0x0c, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xcd, 0x01, + 0x12, 0x13, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x10, 0xce, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x10, 0xcf, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x6c, 0x72, 0x65, 0x61, + 0x64, 0x79, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x10, 0xd0, 0x01, 0x12, 0x0b, 0x0a, + 0x06, 0x49, 0x4d, 0x55, 0x73, 0x65, 0x64, 0x10, 0xe2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x10, 0xac, 0x02, + 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x6f, 0x76, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, + 0x6e, 0x74, 0x6c, 0x79, 0x10, 0xad, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x46, 0x6f, 0x75, 0x6e, 0x64, + 0x10, 0xae, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x65, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x10, + 0xaf, 0x02, 0x12, 0x10, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0xb0, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x10, 0xb1, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x10, 0xb3, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x50, + 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x10, 0xb4, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x10, 0x90, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x10, 0x91, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x92, 0x03, 0x12, 0x0e, 0x0a, + 0x09, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x10, 0x93, 0x03, 0x12, 0x0d, 0x0a, + 0x08, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x94, 0x03, 0x12, 0x15, 0x0a, 0x10, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x6f, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x10, 0x95, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x10, 0x96, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x97, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0x98, 0x03, 0x12, 0x0d, + 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x10, 0x99, 0x03, 0x12, 0x09, 0x0a, + 0x04, 0x47, 0x6f, 0x6e, 0x65, 0x10, 0x9a, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x9b, 0x03, 0x12, 0x17, 0x0a, + 0x12, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x10, 0x9c, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x54, 0x6f, 0x6f, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x10, 0x9d, 0x03, 0x12, 0x0f, 0x0a, 0x0a, + 0x55, 0x52, 0x49, 0x54, 0x6f, 0x6f, 0x4c, 0x6f, 0x6e, 0x67, 0x10, 0x9e, 0x03, 0x12, 0x19, 0x0a, + 0x14, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x10, 0x9f, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x4e, 0x6f, 0x74, 0x53, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x10, + 0xa0, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xa1, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x4d, 0x69, + 0x73, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x10, 0xa5, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x55, 0x6e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x10, 0xa6, 0x03, 0x12, 0x0b, 0x0a, + 0x06, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xa7, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x10, 0xa8, + 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x10, 0xaa, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, + 0xac, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x10, 0xad, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x54, + 0x6f, 0x6f, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x10, 0xaf, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x10, 0xf4, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x49, 0x6d, 0x70, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x10, 0xf5, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x61, 0x64, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0xf6, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x10, 0xf7, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0xf8, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x54, 0x54, 0x50, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x10, 0xf9, 0x03, 0x12, 0x1a, 0x0a, 0x15, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, + 0x74, 0x41, 0x6c, 0x73, 0x6f, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x10, + 0xfa, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x10, 0xfb, 0x03, 0x12, 0x11, 0x0a, 0x0c, + 0x4c, 0x6f, 0x6f, 0x70, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0xfc, 0x03, 0x12, + 0x10, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x10, 0xfe, + 0x03, 0x12, 0x22, 0x0a, 0x1d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x10, 0xff, 0x03, 0x32, 0xea, 0x02, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x05, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, + 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x76, 0x0a, 0x0b, 0x43, 0x61, 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x0b, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, + 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x42, 0xb3, 0x02, 0x0a, 0x35, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x75, 0x78, 0x6e, + 0x69, 0x6e, 0x6a, 0x61, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x61, + 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x57, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x75, 0x78, 0x6e, 0x69, 0x6e, 0x6a, 0x61, + 0x2f, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x70, + 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x46, 0x43, 0xaa, 0x02, 0x1d, 0x41, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1d, 0x41, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x5c, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x29, 0x41, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x5c, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x20, 0x41, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x3a, 0x3a, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1604,59 +2095,76 @@ func file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP() []byte { return file_aperture_flowcontrol_check_v1_check_proto_rawDescData } -var file_aperture_flowcontrol_check_v1_check_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_aperture_flowcontrol_check_v1_check_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_aperture_flowcontrol_check_v1_check_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_aperture_flowcontrol_check_v1_check_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_aperture_flowcontrol_check_v1_check_proto_goTypes = []interface{}{ - (StatusCode)(0), // 0: aperture.flowcontrol.check.v1.StatusCode - (CheckResponse_RejectReason)(0), // 1: aperture.flowcontrol.check.v1.CheckResponse.RejectReason - (CheckResponse_DecisionType)(0), // 2: aperture.flowcontrol.check.v1.CheckResponse.DecisionType - (ClassifierInfo_Error)(0), // 3: aperture.flowcontrol.check.v1.ClassifierInfo.Error - (LimiterDecision_LimiterReason)(0), // 4: aperture.flowcontrol.check.v1.LimiterDecision.LimiterReason - (*CheckRequest)(nil), // 5: aperture.flowcontrol.check.v1.CheckRequest - (*CheckResponse)(nil), // 6: aperture.flowcontrol.check.v1.CheckResponse - (*ClassifierInfo)(nil), // 7: aperture.flowcontrol.check.v1.ClassifierInfo - (*LimiterDecision)(nil), // 8: aperture.flowcontrol.check.v1.LimiterDecision - (*FluxMeterInfo)(nil), // 9: aperture.flowcontrol.check.v1.FluxMeterInfo - nil, // 10: aperture.flowcontrol.check.v1.CheckRequest.LabelsEntry - nil, // 11: aperture.flowcontrol.check.v1.CheckResponse.TelemetryFlowLabelsEntry - (*LimiterDecision_TokensInfo)(nil), // 12: aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo - (*LimiterDecision_RateLimiterInfo)(nil), // 13: aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo - (*LimiterDecision_SchedulerInfo)(nil), // 14: aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo - (*LimiterDecision_SamplerInfo)(nil), // 15: aperture.flowcontrol.check.v1.LimiterDecision.SamplerInfo - (*LimiterDecision_QuotaSchedulerInfo)(nil), // 16: aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo - (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 18: google.protobuf.Duration + (CacheLookupStatus)(0), // 0: aperture.flowcontrol.check.v1.CacheLookupStatus + (CacheOperationStatus)(0), // 1: aperture.flowcontrol.check.v1.CacheOperationStatus + (StatusCode)(0), // 2: aperture.flowcontrol.check.v1.StatusCode + (CheckResponse_RejectReason)(0), // 3: aperture.flowcontrol.check.v1.CheckResponse.RejectReason + (CheckResponse_DecisionType)(0), // 4: aperture.flowcontrol.check.v1.CheckResponse.DecisionType + (ClassifierInfo_Error)(0), // 5: aperture.flowcontrol.check.v1.ClassifierInfo.Error + (LimiterDecision_LimiterReason)(0), // 6: aperture.flowcontrol.check.v1.LimiterDecision.LimiterReason + (*CheckRequest)(nil), // 7: aperture.flowcontrol.check.v1.CheckRequest + (*CheckResponse)(nil), // 8: aperture.flowcontrol.check.v1.CheckResponse + (*CachedValue)(nil), // 9: aperture.flowcontrol.check.v1.CachedValue + (*CacheUpsertRequest)(nil), // 10: aperture.flowcontrol.check.v1.CacheUpsertRequest + (*CacheUpsertResponse)(nil), // 11: aperture.flowcontrol.check.v1.CacheUpsertResponse + (*CacheDeleteRequest)(nil), // 12: aperture.flowcontrol.check.v1.CacheDeleteRequest + (*CacheDeleteResponse)(nil), // 13: aperture.flowcontrol.check.v1.CacheDeleteResponse + (*ClassifierInfo)(nil), // 14: aperture.flowcontrol.check.v1.ClassifierInfo + (*LimiterDecision)(nil), // 15: aperture.flowcontrol.check.v1.LimiterDecision + (*FluxMeterInfo)(nil), // 16: aperture.flowcontrol.check.v1.FluxMeterInfo + nil, // 17: aperture.flowcontrol.check.v1.CheckRequest.LabelsEntry + nil, // 18: aperture.flowcontrol.check.v1.CheckResponse.TelemetryFlowLabelsEntry + (*LimiterDecision_TokensInfo)(nil), // 19: aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo + (*LimiterDecision_RateLimiterInfo)(nil), // 20: aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo + (*LimiterDecision_SchedulerInfo)(nil), // 21: aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo + (*LimiterDecision_SamplerInfo)(nil), // 22: aperture.flowcontrol.check.v1.LimiterDecision.SamplerInfo + (*LimiterDecision_QuotaSchedulerInfo)(nil), // 23: aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo + (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 25: google.protobuf.Duration } var file_aperture_flowcontrol_check_v1_check_proto_depIdxs = []int32{ - 10, // 0: aperture.flowcontrol.check.v1.CheckRequest.labels:type_name -> aperture.flowcontrol.check.v1.CheckRequest.LabelsEntry - 17, // 1: aperture.flowcontrol.check.v1.CheckResponse.start:type_name -> google.protobuf.Timestamp - 17, // 2: aperture.flowcontrol.check.v1.CheckResponse.end:type_name -> google.protobuf.Timestamp - 11, // 3: aperture.flowcontrol.check.v1.CheckResponse.telemetry_flow_labels:type_name -> aperture.flowcontrol.check.v1.CheckResponse.TelemetryFlowLabelsEntry - 2, // 4: aperture.flowcontrol.check.v1.CheckResponse.decision_type:type_name -> aperture.flowcontrol.check.v1.CheckResponse.DecisionType - 1, // 5: aperture.flowcontrol.check.v1.CheckResponse.reject_reason:type_name -> aperture.flowcontrol.check.v1.CheckResponse.RejectReason - 7, // 6: aperture.flowcontrol.check.v1.CheckResponse.classifier_infos:type_name -> aperture.flowcontrol.check.v1.ClassifierInfo - 9, // 7: aperture.flowcontrol.check.v1.CheckResponse.flux_meter_infos:type_name -> aperture.flowcontrol.check.v1.FluxMeterInfo - 8, // 8: aperture.flowcontrol.check.v1.CheckResponse.limiter_decisions:type_name -> aperture.flowcontrol.check.v1.LimiterDecision - 18, // 9: aperture.flowcontrol.check.v1.CheckResponse.wait_time:type_name -> google.protobuf.Duration - 0, // 10: aperture.flowcontrol.check.v1.CheckResponse.denied_response_status_code:type_name -> aperture.flowcontrol.check.v1.StatusCode - 3, // 11: aperture.flowcontrol.check.v1.ClassifierInfo.error:type_name -> aperture.flowcontrol.check.v1.ClassifierInfo.Error - 4, // 12: aperture.flowcontrol.check.v1.LimiterDecision.reason:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.LimiterReason - 0, // 13: aperture.flowcontrol.check.v1.LimiterDecision.denied_response_status_code:type_name -> aperture.flowcontrol.check.v1.StatusCode - 18, // 14: aperture.flowcontrol.check.v1.LimiterDecision.wait_time:type_name -> google.protobuf.Duration - 13, // 15: aperture.flowcontrol.check.v1.LimiterDecision.rate_limiter_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo - 14, // 16: aperture.flowcontrol.check.v1.LimiterDecision.load_scheduler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo - 15, // 17: aperture.flowcontrol.check.v1.LimiterDecision.sampler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.SamplerInfo - 16, // 18: aperture.flowcontrol.check.v1.LimiterDecision.quota_scheduler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo - 12, // 19: aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo - 12, // 20: aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo - 12, // 21: aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo - 5, // 22: aperture.flowcontrol.check.v1.FlowControlService.Check:input_type -> aperture.flowcontrol.check.v1.CheckRequest - 6, // 23: aperture.flowcontrol.check.v1.FlowControlService.Check:output_type -> aperture.flowcontrol.check.v1.CheckResponse - 23, // [23:24] is the sub-list for method output_type - 22, // [22:23] 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 + 17, // 0: aperture.flowcontrol.check.v1.CheckRequest.labels:type_name -> aperture.flowcontrol.check.v1.CheckRequest.LabelsEntry + 24, // 1: aperture.flowcontrol.check.v1.CheckResponse.start:type_name -> google.protobuf.Timestamp + 24, // 2: aperture.flowcontrol.check.v1.CheckResponse.end:type_name -> google.protobuf.Timestamp + 18, // 3: aperture.flowcontrol.check.v1.CheckResponse.telemetry_flow_labels:type_name -> aperture.flowcontrol.check.v1.CheckResponse.TelemetryFlowLabelsEntry + 4, // 4: aperture.flowcontrol.check.v1.CheckResponse.decision_type:type_name -> aperture.flowcontrol.check.v1.CheckResponse.DecisionType + 3, // 5: aperture.flowcontrol.check.v1.CheckResponse.reject_reason:type_name -> aperture.flowcontrol.check.v1.CheckResponse.RejectReason + 14, // 6: aperture.flowcontrol.check.v1.CheckResponse.classifier_infos:type_name -> aperture.flowcontrol.check.v1.ClassifierInfo + 16, // 7: aperture.flowcontrol.check.v1.CheckResponse.flux_meter_infos:type_name -> aperture.flowcontrol.check.v1.FluxMeterInfo + 15, // 8: aperture.flowcontrol.check.v1.CheckResponse.limiter_decisions:type_name -> aperture.flowcontrol.check.v1.LimiterDecision + 25, // 9: aperture.flowcontrol.check.v1.CheckResponse.wait_time:type_name -> google.protobuf.Duration + 2, // 10: aperture.flowcontrol.check.v1.CheckResponse.denied_response_status_code:type_name -> aperture.flowcontrol.check.v1.StatusCode + 9, // 11: aperture.flowcontrol.check.v1.CheckResponse.cached_value:type_name -> aperture.flowcontrol.check.v1.CachedValue + 0, // 12: aperture.flowcontrol.check.v1.CachedValue.lookup_status:type_name -> aperture.flowcontrol.check.v1.CacheLookupStatus + 1, // 13: aperture.flowcontrol.check.v1.CachedValue.operation_status:type_name -> aperture.flowcontrol.check.v1.CacheOperationStatus + 25, // 14: aperture.flowcontrol.check.v1.CacheUpsertRequest.ttl:type_name -> google.protobuf.Duration + 1, // 15: aperture.flowcontrol.check.v1.CacheUpsertResponse.operation_status:type_name -> aperture.flowcontrol.check.v1.CacheOperationStatus + 1, // 16: aperture.flowcontrol.check.v1.CacheDeleteResponse.operation_status:type_name -> aperture.flowcontrol.check.v1.CacheOperationStatus + 5, // 17: aperture.flowcontrol.check.v1.ClassifierInfo.error:type_name -> aperture.flowcontrol.check.v1.ClassifierInfo.Error + 6, // 18: aperture.flowcontrol.check.v1.LimiterDecision.reason:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.LimiterReason + 2, // 19: aperture.flowcontrol.check.v1.LimiterDecision.denied_response_status_code:type_name -> aperture.flowcontrol.check.v1.StatusCode + 25, // 20: aperture.flowcontrol.check.v1.LimiterDecision.wait_time:type_name -> google.protobuf.Duration + 20, // 21: aperture.flowcontrol.check.v1.LimiterDecision.rate_limiter_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo + 21, // 22: aperture.flowcontrol.check.v1.LimiterDecision.load_scheduler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo + 22, // 23: aperture.flowcontrol.check.v1.LimiterDecision.sampler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.SamplerInfo + 23, // 24: aperture.flowcontrol.check.v1.LimiterDecision.quota_scheduler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo + 19, // 25: aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo + 19, // 26: aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo + 19, // 27: aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo + 7, // 28: aperture.flowcontrol.check.v1.FlowControlService.Check:input_type -> aperture.flowcontrol.check.v1.CheckRequest + 10, // 29: aperture.flowcontrol.check.v1.FlowControlService.CacheUpsert:input_type -> aperture.flowcontrol.check.v1.CacheUpsertRequest + 12, // 30: aperture.flowcontrol.check.v1.FlowControlService.CacheDelete:input_type -> aperture.flowcontrol.check.v1.CacheDeleteRequest + 8, // 31: aperture.flowcontrol.check.v1.FlowControlService.Check:output_type -> aperture.flowcontrol.check.v1.CheckResponse + 11, // 32: aperture.flowcontrol.check.v1.FlowControlService.CacheUpsert:output_type -> aperture.flowcontrol.check.v1.CacheUpsertResponse + 13, // 33: aperture.flowcontrol.check.v1.FlowControlService.CacheDelete:output_type -> aperture.flowcontrol.check.v1.CacheDeleteResponse + 31, // [31:34] is the sub-list for method output_type + 28, // [28:31] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_aperture_flowcontrol_check_v1_check_proto_init() } @@ -1690,7 +2198,7 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { } } file_aperture_flowcontrol_check_v1_check_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClassifierInfo); i { + switch v := v.(*CachedValue); i { case 0: return &v.state case 1: @@ -1702,7 +2210,7 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { } } file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LimiterDecision); i { + switch v := v.(*CacheUpsertRequest); i { case 0: return &v.state case 1: @@ -1714,7 +2222,31 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { } } file_aperture_flowcontrol_check_v1_check_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FluxMeterInfo); i { + switch v := v.(*CacheUpsertResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CacheDeleteRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CacheDeleteResponse); i { case 0: return &v.state case 1: @@ -1726,7 +2258,7 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { } } file_aperture_flowcontrol_check_v1_check_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LimiterDecision_TokensInfo); i { + switch v := v.(*ClassifierInfo); i { case 0: return &v.state case 1: @@ -1738,7 +2270,7 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { } } file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LimiterDecision_RateLimiterInfo); i { + switch v := v.(*LimiterDecision); i { case 0: return &v.state case 1: @@ -1750,6 +2282,42 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { } } file_aperture_flowcontrol_check_v1_check_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FluxMeterInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LimiterDecision_TokensInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LimiterDecision_RateLimiterInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LimiterDecision_SchedulerInfo); i { case 0: return &v.state @@ -1761,7 +2329,7 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { return nil } } - file_aperture_flowcontrol_check_v1_check_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LimiterDecision_SamplerInfo); i { case 0: return &v.state @@ -1773,7 +2341,7 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { return nil } } - file_aperture_flowcontrol_check_v1_check_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LimiterDecision_QuotaSchedulerInfo); i { case 0: return &v.state @@ -1786,7 +2354,7 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { } } } - file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8].OneofWrappers = []interface{}{ (*LimiterDecision_RateLimiterInfo_)(nil), (*LimiterDecision_LoadSchedulerInfo)(nil), (*LimiterDecision_SamplerInfo_)(nil), @@ -1797,8 +2365,8 @@ func file_aperture_flowcontrol_check_v1_check_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_aperture_flowcontrol_check_v1_check_proto_rawDesc, - NumEnums: 5, - NumMessages: 12, + NumEnums: 7, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.json.go b/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.json.go index d3ffe00537..1266e82972 100644 --- a/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.json.go +++ b/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.json.go @@ -39,6 +39,86 @@ func (msg *CheckResponse) UnmarshalJSON(b []byte) error { }.Unmarshal(b, msg) } +// MarshalJSON implements json.Marshaler +func (msg *CachedValue) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CachedValue) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CacheUpsertRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CacheUpsertRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CacheUpsertResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CacheUpsertResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CacheDeleteRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CacheDeleteRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CacheDeleteResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CacheDeleteResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + // MarshalJSON implements json.Marshaler func (msg *ClassifierInfo) MarshalJSON() ([]byte, error) { return protojson.MarshalOptions{ diff --git a/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.validate.go b/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.validate.go index 3ca0b07ca8..152f797a05 100644 --- a/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.validate.go +++ b/api/gen/proto/go/aperture/flowcontrol/check/v1/check.pb.validate.go @@ -63,6 +63,8 @@ func (m *CheckRequest) validate(all bool) error { // no validation rules for RampMode + // no validation rules for CacheKey + if len(errors) > 0 { return CheckRequestMultiError(errors) } @@ -361,6 +363,35 @@ func (m *CheckResponse) validate(all bool) error { // no validation rules for DeniedResponseStatusCode + if all { + switch v := interface{}(m.GetCachedValue()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "CachedValue", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "CachedValue", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCachedValue()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckResponseValidationError{ + field: "CachedValue", + reason: "embedded message failed validation", + cause: err, + } + } + } + if len(errors) > 0 { return CheckResponseMultiError(errors) } @@ -439,6 +470,568 @@ var _ interface { ErrorName() string } = CheckResponseValidationError{} +// Validate checks the field values on CachedValue with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *CachedValue) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CachedValue with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CachedValueMultiError, or +// nil if none found. +func (m *CachedValue) ValidateAll() error { + return m.validate(true) +} + +func (m *CachedValue) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Value + + // no validation rules for LookupStatus + + // no validation rules for OperationStatus + + // no validation rules for Error + + if len(errors) > 0 { + return CachedValueMultiError(errors) + } + + return nil +} + +// CachedValueMultiError is an error wrapping multiple validation errors +// returned by CachedValue.ValidateAll() if the designated constraints aren't met. +type CachedValueMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CachedValueMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CachedValueMultiError) AllErrors() []error { return m } + +// CachedValueValidationError is the validation error returned by +// CachedValue.Validate if the designated constraints aren't met. +type CachedValueValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CachedValueValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CachedValueValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CachedValueValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CachedValueValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CachedValueValidationError) ErrorName() string { return "CachedValueValidationError" } + +// Error satisfies the builtin error interface +func (e CachedValueValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCachedValue.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CachedValueValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CachedValueValidationError{} + +// Validate checks the field values on CacheUpsertRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CacheUpsertRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CacheUpsertRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CacheUpsertRequestMultiError, or nil if none found. +func (m *CacheUpsertRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CacheUpsertRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ControlPoint + + // no validation rules for Key + + // no validation rules for Value + + if all { + switch v := interface{}(m.GetTtl()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CacheUpsertRequestValidationError{ + field: "Ttl", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CacheUpsertRequestValidationError{ + field: "Ttl", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTtl()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CacheUpsertRequestValidationError{ + field: "Ttl", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return CacheUpsertRequestMultiError(errors) + } + + return nil +} + +// CacheUpsertRequestMultiError is an error wrapping multiple validation errors +// returned by CacheUpsertRequest.ValidateAll() if the designated constraints +// aren't met. +type CacheUpsertRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CacheUpsertRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CacheUpsertRequestMultiError) AllErrors() []error { return m } + +// CacheUpsertRequestValidationError is the validation error returned by +// CacheUpsertRequest.Validate if the designated constraints aren't met. +type CacheUpsertRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CacheUpsertRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CacheUpsertRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CacheUpsertRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CacheUpsertRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CacheUpsertRequestValidationError) ErrorName() string { + return "CacheUpsertRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e CacheUpsertRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCacheUpsertRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CacheUpsertRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CacheUpsertRequestValidationError{} + +// Validate checks the field values on CacheUpsertResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CacheUpsertResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CacheUpsertResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CacheUpsertResponseMultiError, or nil if none found. +func (m *CacheUpsertResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CacheUpsertResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for OperationStatus + + // no validation rules for Error + + if len(errors) > 0 { + return CacheUpsertResponseMultiError(errors) + } + + return nil +} + +// CacheUpsertResponseMultiError is an error wrapping multiple validation +// errors returned by CacheUpsertResponse.ValidateAll() if the designated +// constraints aren't met. +type CacheUpsertResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CacheUpsertResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CacheUpsertResponseMultiError) AllErrors() []error { return m } + +// CacheUpsertResponseValidationError is the validation error returned by +// CacheUpsertResponse.Validate if the designated constraints aren't met. +type CacheUpsertResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CacheUpsertResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CacheUpsertResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CacheUpsertResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CacheUpsertResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CacheUpsertResponseValidationError) ErrorName() string { + return "CacheUpsertResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e CacheUpsertResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCacheUpsertResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CacheUpsertResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CacheUpsertResponseValidationError{} + +// Validate checks the field values on CacheDeleteRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CacheDeleteRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CacheDeleteRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CacheDeleteRequestMultiError, or nil if none found. +func (m *CacheDeleteRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CacheDeleteRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ControlPoint + + // no validation rules for Key + + if len(errors) > 0 { + return CacheDeleteRequestMultiError(errors) + } + + return nil +} + +// CacheDeleteRequestMultiError is an error wrapping multiple validation errors +// returned by CacheDeleteRequest.ValidateAll() if the designated constraints +// aren't met. +type CacheDeleteRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CacheDeleteRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CacheDeleteRequestMultiError) AllErrors() []error { return m } + +// CacheDeleteRequestValidationError is the validation error returned by +// CacheDeleteRequest.Validate if the designated constraints aren't met. +type CacheDeleteRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CacheDeleteRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CacheDeleteRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CacheDeleteRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CacheDeleteRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CacheDeleteRequestValidationError) ErrorName() string { + return "CacheDeleteRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e CacheDeleteRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCacheDeleteRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CacheDeleteRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CacheDeleteRequestValidationError{} + +// Validate checks the field values on CacheDeleteResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CacheDeleteResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CacheDeleteResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CacheDeleteResponseMultiError, or nil if none found. +func (m *CacheDeleteResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CacheDeleteResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for OperationStatus + + // no validation rules for Error + + if len(errors) > 0 { + return CacheDeleteResponseMultiError(errors) + } + + return nil +} + +// CacheDeleteResponseMultiError is an error wrapping multiple validation +// errors returned by CacheDeleteResponse.ValidateAll() if the designated +// constraints aren't met. +type CacheDeleteResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CacheDeleteResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CacheDeleteResponseMultiError) AllErrors() []error { return m } + +// CacheDeleteResponseValidationError is the validation error returned by +// CacheDeleteResponse.Validate if the designated constraints aren't met. +type CacheDeleteResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CacheDeleteResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CacheDeleteResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CacheDeleteResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CacheDeleteResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CacheDeleteResponseValidationError) ErrorName() string { + return "CacheDeleteResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e CacheDeleteResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCacheDeleteResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CacheDeleteResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CacheDeleteResponseValidationError{} + // Validate checks the field values on ClassifierInfo with the rules defined in // the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. diff --git a/api/gen/proto/go/aperture/flowcontrol/check/v1/check_grpc.pb.go b/api/gen/proto/go/aperture/flowcontrol/check/v1/check_grpc.pb.go index 9a7ff21ed4..62e5cf85e4 100644 --- a/api/gen/proto/go/aperture/flowcontrol/check/v1/check_grpc.pb.go +++ b/api/gen/proto/go/aperture/flowcontrol/check/v1/check_grpc.pb.go @@ -19,7 +19,9 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - FlowControlService_Check_FullMethodName = "/aperture.flowcontrol.check.v1.FlowControlService/Check" + FlowControlService_Check_FullMethodName = "/aperture.flowcontrol.check.v1.FlowControlService/Check" + FlowControlService_CacheUpsert_FullMethodName = "/aperture.flowcontrol.check.v1.FlowControlService/CacheUpsert" + FlowControlService_CacheDelete_FullMethodName = "/aperture.flowcontrol.check.v1.FlowControlService/CacheDelete" ) // FlowControlServiceClient is the client API for FlowControlService service. @@ -28,6 +30,8 @@ const ( type FlowControlServiceClient interface { // Check wraps the given arbitrary resource and matches the given labels against Flow Control Limiters to makes a decision whether to allow/deny. Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error) + CacheUpsert(ctx context.Context, in *CacheUpsertRequest, opts ...grpc.CallOption) (*CacheUpsertResponse, error) + CacheDelete(ctx context.Context, in *CacheDeleteRequest, opts ...grpc.CallOption) (*CacheDeleteResponse, error) } type flowControlServiceClient struct { @@ -47,12 +51,32 @@ func (c *flowControlServiceClient) Check(ctx context.Context, in *CheckRequest, return out, nil } +func (c *flowControlServiceClient) CacheUpsert(ctx context.Context, in *CacheUpsertRequest, opts ...grpc.CallOption) (*CacheUpsertResponse, error) { + out := new(CacheUpsertResponse) + err := c.cc.Invoke(ctx, FlowControlService_CacheUpsert_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *flowControlServiceClient) CacheDelete(ctx context.Context, in *CacheDeleteRequest, opts ...grpc.CallOption) (*CacheDeleteResponse, error) { + out := new(CacheDeleteResponse) + err := c.cc.Invoke(ctx, FlowControlService_CacheDelete_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // FlowControlServiceServer is the server API for FlowControlService service. // All implementations should embed UnimplementedFlowControlServiceServer // for forward compatibility type FlowControlServiceServer interface { // Check wraps the given arbitrary resource and matches the given labels against Flow Control Limiters to makes a decision whether to allow/deny. Check(context.Context, *CheckRequest) (*CheckResponse, error) + CacheUpsert(context.Context, *CacheUpsertRequest) (*CacheUpsertResponse, error) + CacheDelete(context.Context, *CacheDeleteRequest) (*CacheDeleteResponse, error) } // UnimplementedFlowControlServiceServer should be embedded to have forward compatible implementations. @@ -62,6 +86,12 @@ type UnimplementedFlowControlServiceServer struct { func (UnimplementedFlowControlServiceServer) Check(context.Context, *CheckRequest) (*CheckResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Check not implemented") } +func (UnimplementedFlowControlServiceServer) CacheUpsert(context.Context, *CacheUpsertRequest) (*CacheUpsertResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CacheUpsert not implemented") +} +func (UnimplementedFlowControlServiceServer) CacheDelete(context.Context, *CacheDeleteRequest) (*CacheDeleteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CacheDelete not implemented") +} // UnsafeFlowControlServiceServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to FlowControlServiceServer will @@ -92,6 +122,42 @@ func _FlowControlService_Check_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _FlowControlService_CacheUpsert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CacheUpsertRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FlowControlServiceServer).CacheUpsert(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FlowControlService_CacheUpsert_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FlowControlServiceServer).CacheUpsert(ctx, req.(*CacheUpsertRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _FlowControlService_CacheDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CacheDeleteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FlowControlServiceServer).CacheDelete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FlowControlService_CacheDelete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FlowControlServiceServer).CacheDelete(ctx, req.(*CacheDeleteRequest)) + } + return interceptor(ctx, in, info, handler) +} + // FlowControlService_ServiceDesc is the grpc.ServiceDesc for FlowControlService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -103,6 +169,14 @@ var FlowControlService_ServiceDesc = grpc.ServiceDesc{ MethodName: "Check", Handler: _FlowControlService_Check_Handler, }, + { + MethodName: "CacheUpsert", + Handler: _FlowControlService_CacheUpsert_Handler, + }, + { + MethodName: "CacheDelete", + Handler: _FlowControlService_CacheDelete_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "aperture/flowcontrol/check/v1/check.proto", diff --git a/api/gen/proto/go/aperture/flowcontrol/check/v1/check_vtproto.pb.go b/api/gen/proto/go/aperture/flowcontrol/check/v1/check_vtproto.pb.go index a67ad415b2..791bbb3319 100644 --- a/api/gen/proto/go/aperture/flowcontrol/check/v1/check_vtproto.pb.go +++ b/api/gen/proto/go/aperture/flowcontrol/check/v1/check_vtproto.pb.go @@ -54,6 +54,13 @@ func (m *CheckRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if len(m.CacheKey) > 0 { + i -= len(m.CacheKey) + copy(dAtA[i:], m.CacheKey) + i = encodeVarint(dAtA, i, uint64(len(m.CacheKey))) + i-- + dAtA[i] = 0x22 + } if m.RampMode { i-- if m.RampMode { @@ -123,6 +130,16 @@ func (m *CheckResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.CachedValue != nil { + size, err := m.CachedValue.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x7a + } if m.DeniedResponseStatusCode != 0 { i = encodeVarint(dAtA, i, uint64(m.DeniedResponseStatusCode)) i-- @@ -287,6 +304,276 @@ func (m *CheckResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *CachedValue) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CachedValue) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CachedValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarint(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x22 + } + if m.OperationStatus != 0 { + i = encodeVarint(dAtA, i, uint64(m.OperationStatus)) + i-- + dAtA[i] = 0x18 + } + if m.LookupStatus != 0 { + i = encodeVarint(dAtA, i, uint64(m.LookupStatus)) + i-- + dAtA[i] = 0x10 + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarint(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CacheUpsertRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CacheUpsertRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CacheUpsertRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Ttl != nil { + if vtmsg, ok := interface{}(m.Ttl).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.Ttl) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x22 + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarint(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x1a + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarint(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0x12 + } + if len(m.ControlPoint) > 0 { + i -= len(m.ControlPoint) + copy(dAtA[i:], m.ControlPoint) + i = encodeVarint(dAtA, i, uint64(len(m.ControlPoint))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CacheUpsertResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CacheUpsertResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CacheUpsertResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarint(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x12 + } + if m.OperationStatus != 0 { + i = encodeVarint(dAtA, i, uint64(m.OperationStatus)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *CacheDeleteRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CacheDeleteRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CacheDeleteRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarint(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0x12 + } + if len(m.ControlPoint) > 0 { + i -= len(m.ControlPoint) + copy(dAtA[i:], m.ControlPoint) + i = encodeVarint(dAtA, i, uint64(len(m.ControlPoint))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CacheDeleteResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CacheDeleteResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CacheDeleteResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarint(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x12 + } + if m.OperationStatus != 0 { + i = encodeVarint(dAtA, i, uint64(m.OperationStatus)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *ClassifierInfo) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -922,6 +1209,10 @@ func (m *CheckRequest) SizeVT() (n int) { if m.RampMode { n += 2 } + l = len(m.CacheKey) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } n += len(m.unknownFields) return n } @@ -1013,55 +1304,167 @@ func (m *CheckResponse) SizeVT() (n int) { if m.DeniedResponseStatusCode != 0 { n += 1 + sov(uint64(m.DeniedResponseStatusCode)) } + if m.CachedValue != nil { + l = m.CachedValue.SizeVT() + n += 1 + l + sov(uint64(l)) + } n += len(m.unknownFields) return n } -func (m *ClassifierInfo) SizeVT() (n int) { +func (m *CachedValue) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.PolicyName) + l = len(m.Value) if l > 0 { n += 1 + l + sov(uint64(l)) } - l = len(m.PolicyHash) - if l > 0 { - n += 1 + l + sov(uint64(l)) + if m.LookupStatus != 0 { + n += 1 + sov(uint64(m.LookupStatus)) } - if m.ClassifierIndex != 0 { - n += 1 + sov(uint64(m.ClassifierIndex)) + if m.OperationStatus != 0 { + n += 1 + sov(uint64(m.OperationStatus)) } - if m.Error != 0 { - n += 1 + sov(uint64(m.Error)) + l = len(m.Error) + if l > 0 { + n += 1 + l + sov(uint64(l)) } n += len(m.unknownFields) return n } -func (m *LimiterDecision_TokensInfo) SizeVT() (n int) { +func (m *CacheUpsertRequest) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - if m.Remaining != 0 { - n += 9 + l = len(m.ControlPoint) + if l > 0 { + n += 1 + l + sov(uint64(l)) } - if m.Current != 0 { - n += 9 + l = len(m.Key) + if l > 0 { + n += 1 + l + sov(uint64(l)) } - if m.Consumed != 0 { - n += 9 + l = len(m.Value) + if l > 0 { + n += 1 + l + sov(uint64(l)) } - n += len(m.unknownFields) - return n -} - -func (m *LimiterDecision_RateLimiterInfo) SizeVT() (n int) { - if m == nil { + if m.Ttl != nil { + if size, ok := interface{}(m.Ttl).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.Ttl) + } + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CacheUpsertResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.OperationStatus != 0 { + n += 1 + sov(uint64(m.OperationStatus)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CacheDeleteRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ControlPoint) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.Key) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CacheDeleteResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.OperationStatus != 0 { + n += 1 + sov(uint64(m.OperationStatus)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *ClassifierInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.PolicyName) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.PolicyHash) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.ClassifierIndex != 0 { + n += 1 + sov(uint64(m.ClassifierIndex)) + } + if m.Error != 0 { + n += 1 + sov(uint64(m.Error)) + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision_TokensInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Remaining != 0 { + n += 9 + } + if m.Current != 0 { + n += 9 + } + if m.Consumed != 0 { + n += 9 + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision_RateLimiterInfo) SizeVT() (n int) { + if m == nil { return 0 } var l int @@ -1458,6 +1861,38 @@ func (m *CheckRequest) UnmarshalVT(dAtA []byte) error { } } m.RampMode = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CacheKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -2044,6 +2479,709 @@ func (m *CheckResponse) UnmarshalVT(dAtA []byte) error { break } } + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CachedValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CachedValue == nil { + m.CachedValue = &CachedValue{} + } + if err := m.CachedValue.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CachedValue) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CachedValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CachedValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) + if m.Value == nil { + m.Value = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LookupStatus", wireType) + } + m.LookupStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LookupStatus |= CacheLookupStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OperationStatus", wireType) + } + m.OperationStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OperationStatus |= CacheOperationStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CacheUpsertRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CacheUpsertRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CacheUpsertRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ControlPoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ControlPoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) + if m.Value == nil { + m.Value = []byte{} + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ttl", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Ttl == nil { + m.Ttl = &durationpb.Duration{} + } + if unmarshal, ok := interface{}(m.Ttl).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Ttl); err != nil { + return err + } + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CacheUpsertResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CacheUpsertResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CacheUpsertResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OperationStatus", wireType) + } + m.OperationStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OperationStatus |= CacheOperationStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CacheDeleteRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CacheDeleteRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CacheDeleteRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ControlPoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ControlPoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CacheDeleteResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CacheDeleteResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CacheDeleteResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OperationStatus", wireType) + } + m.OperationStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OperationStatus |= CacheOperationStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) diff --git a/docs/content/assets/openapiv2/aperture.swagger.yaml b/docs/content/assets/openapiv2/aperture.swagger.yaml index 5e74300240..212ba477a8 100644 --- a/docs/content/assets/openapiv2/aperture.swagger.yaml +++ b/docs/content/assets/openapiv2/aperture.swagger.yaml @@ -778,6 +778,44 @@ definitions: $ref: '#/definitions/OutPort' description: The value is emitted to the output port. type: object + CacheDeleteResponse: + properties: + error: + type: string + operation_status: + $ref: '#/definitions/CacheOperationStatus' + type: object + CacheLookupStatus: + default: HIT + enum: + - HIT + - MISS + type: string + CacheOperationStatus: + default: SUCCESS + enum: + - SUCCESS + - ERROR + type: string + CacheUpsertResponse: + properties: + error: + type: string + operation_status: + $ref: '#/definitions/CacheOperationStatus' + type: object + CachedValue: + properties: + error: + type: string + lookup_status: + $ref: '#/definitions/CacheLookupStatus' + operation_status: + $ref: '#/definitions/CacheOperationStatus' + value: + format: byte + type: string + type: object CheckHTTPRequest: properties: control_point: @@ -859,6 +897,9 @@ definitions: CheckResponse: description: CheckResponse contains fields that represent decision made by Check call. properties: + cached_value: + $ref: '#/definitions/CachedValue' + description: Matching cached value. classifier_infos: description: classifiers that were matched for this request. items: diff --git a/pkg/policies/flowcontrol/cache.go b/pkg/policies/flowcontrol/cache.go new file mode 100644 index 0000000000..d934127200 --- /dev/null +++ b/pkg/policies/flowcontrol/cache.go @@ -0,0 +1,120 @@ +package flowcontrol + +import ( + "context" + "errors" + "time" + + "github.com/buraksezer/olric" + olricconfig "github.com/buraksezer/olric/config" + distcache "github.com/fluxninja/aperture/v2/pkg/dist-cache" + "github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/iface" + "go.uber.org/fx" +) + +var ( + // ErrCacheKeyEmpty is the error returned when the cache key is empty. + ErrCacheKeyEmpty = errors.New("cache key cannot be empty") + // ErrCacheControlPointEmpty is the error returned when the cache control point is empty. + ErrCacheControlPointEmpty = errors.New("cache control_point cannot be empty") + // ErrCacheNotReady is the error returned when the cache is not ready to be used. + ErrCacheNotReady = errors.New("cache is not ready") + // ErrCacheKeyNotFound is the error returned when the key is not found in the cache. This is copied from the internal olric package. + ErrCacheKeyNotFound = errors.New("key not found") +) + +// Cache for saving responses at flow end. +type Cache struct { + dmapCache olric.DMap +} + +// Cache implements iface.Cache. +var _ iface.Cache = (*Cache)(nil) + +// NewCache creates a new cache. +func NewCache(dc *distcache.DistCache, lc fx.Lifecycle) (iface.Cache, error) { + cache := &Cache{} + lc.Append(fx.Hook{ + OnStart: func(_ context.Context) error { + dmapCache, err := dc.NewDMap("control_point_cache", olricconfig.DMap{}) + if err != nil { + return err + } + cache.dmapCache = dmapCache + return nil + }, + }) + return cache, nil +} + +// Get returns the value for the given key. +func (c *Cache) Get(ctx context.Context, controlPoint, key string) ([]byte, error) { + err := c.Ready() + if err != nil { + return nil, err + } + if key == "" { + return nil, ErrCacheKeyEmpty + } + if controlPoint == "" { + return nil, ErrCacheControlPointEmpty + } + cacheKey := formatCacheKey(controlPoint, key) + getResponse, err := c.dmapCache.Get(ctx, cacheKey) + if err != nil { + return nil, err + } + + cachedBytes, err := getResponse.Byte() + if err != nil { + return nil, err + } + + return cachedBytes, nil +} + +// Upsert inserts or updates the value for the given key. +func (c *Cache) Upsert(ctx context.Context, controlPoint, key string, value []byte, ttl time.Duration) error { + err := c.Ready() + if err != nil { + return err + } + if key == "" { + return ErrCacheKeyEmpty + } + if controlPoint == "" { + return ErrCacheControlPointEmpty + } + cacheKey := formatCacheKey(controlPoint, key) + return c.dmapCache.Put(ctx, cacheKey, value, olric.EX(ttl)) +} + +// Delete deletes the value for the given key. +func (c *Cache) Delete(ctx context.Context, controlPoint, key string) error { + err := c.Ready() + if err != nil { + return err + } + if key == "" { + return ErrCacheKeyEmpty + } + if controlPoint == "" { + return ErrCacheControlPointEmpty + } + cacheKey := formatCacheKey(controlPoint, key) + _, err = c.dmapCache.Delete(ctx, cacheKey) + return err +} + +// Ready returns nil if the cache is ready to be used. +func (c *Cache) Ready() error { + if c.dmapCache == nil { + return ErrCacheNotReady + } + return nil +} + +// formatCacheKey returns the cache key for the given control point and key. +func formatCacheKey(controlPoint, key string) string { + return "@controlpoint:" + controlPoint + "/key:" + key +} diff --git a/pkg/policies/flowcontrol/engine.go b/pkg/policies/flowcontrol/engine.go index c8f6a7433a..4be7e7e44f 100644 --- a/pkg/policies/flowcontrol/engine.go +++ b/pkg/policies/flowcontrol/engine.go @@ -70,6 +70,7 @@ func (e *Engine) GetAgentInfo() *agentinfo.AgentInfo { // (1) Get schedulers given a service, control point and set of labels. // (2) Get flux meter histogram given a metric id. type Engine struct { + cache iface.Cache agentInfo *agentinfo.AgentInfo fluxMeters map[iface.FluxMeterID]iface.FluxMeter schedulers map[iface.LimiterID]iface.Scheduler @@ -86,6 +87,7 @@ func (e *Engine) ProcessRequest(ctx context.Context, requestContext iface.Reques controlPoint := requestContext.ControlPoint services := requestContext.Services flowLabels := requestContext.FlowLabels + cacheKey := requestContext.CacheKey labelKeys := flowLabels.SortedKeys() response = &flowcontrolv1.CheckResponse{ @@ -118,47 +120,83 @@ func (e *Engine) ProcessRequest(ctx context.Context, requestContext iface.Reques } response.FluxMeterInfos = fluxMeterProtos - limiterTypes := []struct { - rampComponent bool + type LimiterType struct { limiters map[iface.Limiter]struct{} rejectReason flowcontrolv1.CheckResponse_RejectReason - }{ - {true, mmr.rampSamplers, flowcontrolv1.CheckResponse_REJECT_REASON_NO_MATCHING_RAMP}, - {false, mmr.samplers, flowcontrolv1.CheckResponse_REJECT_REASON_NOT_SAMPLED}, - {false, mmr.rateLimiters, flowcontrolv1.CheckResponse_REJECT_REASON_RATE_LIMITED}, - {false, mmr.schedulers, flowcontrolv1.CheckResponse_REJECT_REASON_NO_TOKENS}, - } - - for _, limiterType := range limiterTypes { - if limiterType.rampComponent && requestContext.RampMode && len(limiterType.limiters) == 0 { - // There must be at least one ramp component accepting a ramp mode flow. - response.DecisionType = flowcontrolv1.CheckResponse_DECISION_TYPE_REJECTED - response.RejectReason = limiterType.rejectReason - return - } - limiterDecisions, decisionType, waitTime := runLimiters(ctx, limiterType.limiters, flowLabels) - for _, limiterDecision := range limiterDecisions { - response.LimiterDecisions = append(response.LimiterDecisions, limiterDecision) - if limiterDecision.Dropped && limiterDecision.DeniedResponseStatusCode != 0 { - response.DeniedResponseStatusCode = limiterDecision.DeniedResponseStatusCode + rampComponent bool + } + + runLimiters := func(limiterTypes []LimiterType) bool { + for _, limiterType := range limiterTypes { + if limiterType.rampComponent && requestContext.RampMode && len(limiterType.limiters) == 0 { + // There must be at least one ramp component accepting a ramp mode flow. + response.DecisionType = flowcontrolv1.CheckResponse_DECISION_TYPE_REJECTED + response.RejectReason = limiterType.rejectReason + return true } - } + limiterDecisions, decisionType, waitTime := runLimiters(ctx, limiterType.limiters, flowLabels) + for _, limiterDecision := range limiterDecisions { + response.LimiterDecisions = append(response.LimiterDecisions, limiterDecision) + if limiterDecision.Dropped && limiterDecision.DeniedResponseStatusCode != 0 { + response.DeniedResponseStatusCode = limiterDecision.DeniedResponseStatusCode + } + } + + defer func() { + if response.DecisionType == flowcontrolv1.CheckResponse_DECISION_TYPE_REJECTED { + revertRemaining(ctx, flowLabels, limiterDecisions) + } + }() - defer func() { - if response.DecisionType == flowcontrolv1.CheckResponse_DECISION_TYPE_REJECTED { - revertRemaining(ctx, flowLabels, limiterDecisions) + if decisionType == flowcontrolv1.CheckResponse_DECISION_TYPE_REJECTED { + response.DecisionType = decisionType + response.RejectReason = limiterType.rejectReason + if waitTime != 0 { + response.WaitTime = durationpb.New(waitTime) + } + return true } - }() + } + return false + } + + limiterTypes := []LimiterType{ + {mmr.rampSamplers, flowcontrolv1.CheckResponse_REJECT_REASON_NO_MATCHING_RAMP, true}, + {mmr.samplers, flowcontrolv1.CheckResponse_REJECT_REASON_NOT_SAMPLED, false}, + {mmr.rateLimiters, flowcontrolv1.CheckResponse_REJECT_REASON_RATE_LIMITED, false}, + } + rejected := runLimiters(limiterTypes) + if rejected { + return + } - if decisionType == flowcontrolv1.CheckResponse_DECISION_TYPE_REJECTED { - response.DecisionType = decisionType - response.RejectReason = limiterType.rejectReason - if waitTime != 0 { - response.WaitTime = durationpb.New(waitTime) + // Lookup cache + if cacheKey != "" && e.cache != nil { + cachedBytes, err := e.cache.Get(ctx, controlPoint, cacheKey) + if err == nil { + response.CachedValue = &flowcontrolv1.CachedValue{ + Value: cachedBytes, + LookupStatus: flowcontrolv1.CacheLookupStatus_HIT, + OperationStatus: flowcontrolv1.CacheOperationStatus_SUCCESS, } + response.DecisionType = flowcontrolv1.CheckResponse_DECISION_TYPE_ACCEPTED return } + response.CachedValue = &flowcontrolv1.CachedValue{ + LookupStatus: flowcontrolv1.CacheLookupStatus_MISS, + Error: err.Error(), + } + if err == ErrCacheKeyNotFound { + response.CachedValue.OperationStatus = flowcontrolv1.CacheOperationStatus_SUCCESS + } else { + response.CachedValue.OperationStatus = flowcontrolv1.CacheOperationStatus_ERROR + } + } + + limiterTypes = []LimiterType{ + {mmr.schedulers, flowcontrolv1.CheckResponse_REJECT_REASON_NO_TOKENS, false}, } + runLimiters(limiterTypes) return } @@ -501,3 +539,8 @@ func (e *Engine) unregister(key string, selectorsProto []*policylangv1.Selector) return nil } + +// RegisterCache . +func (e *Engine) RegisterCache(cache iface.Cache) { + e.cache = cache +} diff --git a/pkg/policies/flowcontrol/iface/cache.go b/pkg/policies/flowcontrol/iface/cache.go new file mode 100644 index 0000000000..10714bd9d6 --- /dev/null +++ b/pkg/policies/flowcontrol/iface/cache.go @@ -0,0 +1,16 @@ +package iface + +import ( + "context" + "time" +) + +// Cache is an interface for the cache. +type Cache interface { + // Get returns the value for the given key. + Get(ctx context.Context, controlPoint, key string) ([]byte, error) + // Upsert inserts or updates the value for the given key. + Upsert(ctx context.Context, controlPoint, key string, value []byte, ttl time.Duration) error + // Delete deletes the value for the given key. + Delete(ctx context.Context, controlPoint, key string) error +} diff --git a/pkg/policies/flowcontrol/iface/engine.go b/pkg/policies/flowcontrol/iface/engine.go index 7fdeadcb07..653b1a4f66 100644 --- a/pkg/policies/flowcontrol/iface/engine.go +++ b/pkg/policies/flowcontrol/iface/engine.go @@ -14,6 +14,7 @@ import ( type RequestContext struct { FlowLabels labels.Labels ControlPoint string + CacheKey string Services []string RampMode bool } @@ -45,4 +46,6 @@ type Engine interface { RegisterLabelPreview(l LabelPreview) error UnregisterLabelPreview(l LabelPreview) error + + RegisterCache(c Cache) } diff --git a/pkg/policies/flowcontrol/provide.go b/pkg/policies/flowcontrol/provide.go index e9d4016656..b2d2478f3f 100644 --- a/pkg/policies/flowcontrol/provide.go +++ b/pkg/policies/flowcontrol/provide.go @@ -3,13 +3,19 @@ package flowcontrol import ( "go.uber.org/fx" + agentinfo "github.com/fluxninja/aperture/v2/pkg/agent-info" + "github.com/fluxninja/aperture/v2/pkg/config" "github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/actuators" + "github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/iface" "github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/resources/classifier" "github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/resources/fluxmeter" "github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/service" servicegetter "github.com/fluxninja/aperture/v2/pkg/policies/flowcontrol/service-getter" ) +// CacheFxTag is the Fx tag for cache's dmap. +var CacheFxTag = config.NameTag("cache") + // Module returns the fx options for dataplane side pieces of policy. func Module() fx.Option { return fx.Options( @@ -18,8 +24,24 @@ func Module() fx.Option { classifier.Module(), service.Module(), servicegetter.Module, - fx.Provide( - NewEngine, - ), + EngineModule(), + CacheModule(), ) } + +// EngineModule returns the fx options for the engine. +func EngineModule() fx.Option { + return fx.Provide(ProvideEngine) +} + +// ProvideEngine provides the engine for the dataplane side of policy. +func ProvideEngine(cache iface.Cache, agentInfo *agentinfo.AgentInfo) iface.Engine { + engine := NewEngine(agentInfo) + engine.RegisterCache(cache) + return engine +} + +// CacheModule returns the fx options for the cache. +func CacheModule() fx.Option { + return fx.Provide(NewCache) +} diff --git a/pkg/policies/flowcontrol/service/check/check.go b/pkg/policies/flowcontrol/service/check/check.go index a49b1d79c4..b8878c385e 100644 --- a/pkg/policies/flowcontrol/service/check/check.go +++ b/pkg/policies/flowcontrol/service/check/check.go @@ -23,6 +23,7 @@ type Handler struct { serviceGetter servicegetter.ServiceGetter metrics Metrics engine iface.Engine + cache iface.Cache } // NewHandler creates a flowcontrol Handler. @@ -30,11 +31,13 @@ func NewHandler( serviceGetter servicegetter.ServiceGetter, metrics Metrics, engine iface.Engine, + cache iface.Cache, ) *Handler { return &Handler{ serviceGetter: serviceGetter, metrics: metrics, engine: engine, + cache: cache, } } @@ -74,6 +77,7 @@ func (h *Handler) Check(ctx context.Context, req *flowcontrolv1.CheckRequest) (* ControlPoint: req.ControlPoint, Services: services, RampMode: req.RampMode, + CacheKey: req.CacheKey, }, ) end := time.Now() @@ -84,3 +88,45 @@ func (h *Handler) Check(ctx context.Context, req *flowcontrolv1.CheckRequest) (* resp.TelemetryFlowLabels[otelconsts.ApertureControlPointTypeLabel] = otelconsts.FeatureControlPoint return resp, nil } + +// CacheUpsert is the CacheUpsert method of Flow Control service updates the cache with the given key and value. +func (h *Handler) CacheUpsert(ctx context.Context, req *flowcontrolv1.CacheUpsertRequest) (*flowcontrolv1.CacheUpsertResponse, error) { + if h.cache == nil { + return &flowcontrolv1.CacheUpsertResponse{ + OperationStatus: flowcontrolv1.CacheOperationStatus_ERROR, + Error: "cache is not enabled", + }, nil + } + err := h.cache.Upsert(ctx, req.ControlPoint, req.Key, req.Value, req.Ttl.AsDuration()) + if err != nil { + return &flowcontrolv1.CacheUpsertResponse{ + OperationStatus: flowcontrolv1.CacheOperationStatus_ERROR, + Error: err.Error(), + }, nil + } + + return &flowcontrolv1.CacheUpsertResponse{ + OperationStatus: flowcontrolv1.CacheOperationStatus_SUCCESS, + }, nil +} + +// CacheDelete is the CacheDelete method of Flow Control service deletes the cache entry with the given key. +func (h *Handler) CacheDelete(ctx context.Context, req *flowcontrolv1.CacheDeleteRequest) (*flowcontrolv1.CacheDeleteResponse, error) { + if h.cache == nil { + return &flowcontrolv1.CacheDeleteResponse{ + OperationStatus: flowcontrolv1.CacheOperationStatus_ERROR, + Error: "cache is not enabled", + }, nil + } + err := h.cache.Delete(ctx, req.ControlPoint, req.Key) + if err != nil { + return &flowcontrolv1.CacheDeleteResponse{ + OperationStatus: flowcontrolv1.CacheOperationStatus_ERROR, + Error: err.Error(), + }, nil + } + + return &flowcontrolv1.CacheDeleteResponse{ + OperationStatus: flowcontrolv1.CacheOperationStatus_SUCCESS, + }, nil +} diff --git a/pkg/policies/flowcontrol/service/check/provide.go b/pkg/policies/flowcontrol/service/check/provide.go index 574792a9ab..9e39275d99 100644 --- a/pkg/policies/flowcontrol/service/check/provide.go +++ b/pkg/policies/flowcontrol/service/check/provide.go @@ -36,13 +36,14 @@ type ConstructorIn struct { ServiceGetter servicegetter.ServiceGetter Metrics Metrics EngineAPI iface.Engine + Cache iface.Cache `optional:"true"` } // ProvideHandler provides a Flow Control Handler. func ProvideHandler( in ConstructorIn, ) (flowcontrolv1.FlowControlServiceServer, HandlerWithValues, error) { - h := NewHandler(in.ServiceGetter, in.Metrics, in.EngineAPI) + h := NewHandler(in.ServiceGetter, in.Metrics, in.EngineAPI, in.Cache) // Note: Returning the same handler twice as different interfaces – once as // a handler to be registered on gRPC server and once for consumption by diff --git a/pkg/policies/mocks/mock_engine.go b/pkg/policies/mocks/mock_engine.go index 01d11a41f9..4638f02933 100644 --- a/pkg/policies/mocks/mock_engine.go +++ b/pkg/policies/mocks/mock_engine.go @@ -121,6 +121,18 @@ func (mr *MockEngineMockRecorder) ProcessRequest(ctx, requestContext interface{} return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ProcessRequest", reflect.TypeOf((*MockEngine)(nil).ProcessRequest), ctx, requestContext) } +// RegisterCache mocks base method. +func (m *MockEngine) RegisterCache(c iface.Cache) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "RegisterCache", c) +} + +// RegisterCache indicates an expected call of RegisterCache. +func (mr *MockEngineMockRecorder) RegisterCache(c interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterCache", reflect.TypeOf((*MockEngine)(nil).RegisterCache), c) +} + // RegisterFluxMeter mocks base method. func (m *MockEngine) RegisterFluxMeter(fm iface.FluxMeter) error { m.ctrl.T.Helper() diff --git a/sdks/aperture-csharp/Generated/Aperture/Flowcontrol/V1/Check.cs b/sdks/aperture-csharp/Generated/Aperture/Flowcontrol/V1/Check.cs index c5204a0d48..5f54f043ea 100644 --- a/sdks/aperture-csharp/Generated/Aperture/Flowcontrol/V1/Check.cs +++ b/sdks/aperture-csharp/Generated/Aperture/Flowcontrol/V1/Check.cs @@ -27,84 +27,105 @@ static CheckReflection() { "CilhcGVydHVyZS9mbG93Y29udHJvbC9jaGVjay92MS9jaGVjay5wcm90bxId", "YXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEaHmdvb2dsZS9wcm90b2J1", "Zi9kdXJhdGlvbi5wcm90bxofZ29vZ2xlL3Byb3RvYnVmL3RpbWVzdGFtcC5w", - "cm90byLcAQoMQ2hlY2tSZXF1ZXN0EiMKDWNvbnRyb2xfcG9pbnQYASABKAlS", + "cm90byL5AQoMQ2hlY2tSZXF1ZXN0EiMKDWNvbnRyb2xfcG9pbnQYASABKAlS", "DGNvbnRyb2xQb2ludBJPCgZsYWJlbHMYAiADKAsyNy5hcGVydHVyZS5mbG93", "Y29udHJvbC5jaGVjay52MS5DaGVja1JlcXVlc3QuTGFiZWxzRW50cnlSBmxh", - "YmVscxIbCglyYW1wX21vZGUYAyABKAhSCHJhbXBNb2RlGjkKC0xhYmVsc0Vu", - "dHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToC", - "OAEi/QkKDUNoZWNrUmVzcG9uc2USMAoFc3RhcnQYASABKAsyGi5nb29nbGUu", - "cHJvdG9idWYuVGltZXN0YW1wUgVzdGFydBIsCgNlbmQYAiABKAsyGi5nb29n", - "bGUucHJvdG9idWYuVGltZXN0YW1wUgNlbmQSGgoIc2VydmljZXMYBCADKAlS", - "CHNlcnZpY2VzEiMKDWNvbnRyb2xfcG9pbnQYBSABKAlSDGNvbnRyb2xQb2lu", - "dBImCg9mbG93X2xhYmVsX2tleXMYBiADKAlSDWZsb3dMYWJlbEtleXMSeQoV", - "dGVsZW1ldHJ5X2Zsb3dfbGFiZWxzGAcgAygLMkUuYXBlcnR1cmUuZmxvd2Nv", - "bnRyb2wuY2hlY2sudjEuQ2hlY2tSZXNwb25zZS5UZWxlbWV0cnlGbG93TGFi", - "ZWxzRW50cnlSE3RlbGVtZXRyeUZsb3dMYWJlbHMSXgoNZGVjaXNpb25fdHlw", - "ZRgIIAEoDjI5LmFwZXJ0dXJlLmZsb3djb250cm9sLmNoZWNrLnYxLkNoZWNr", - "UmVzcG9uc2UuRGVjaXNpb25UeXBlUgxkZWNpc2lvblR5cGUSXgoNcmVqZWN0", - "X3JlYXNvbhgJIAEoDjI5LmFwZXJ0dXJlLmZsb3djb250cm9sLmNoZWNrLnYx", - "LkNoZWNrUmVzcG9uc2UuUmVqZWN0UmVhc29uUgxyZWplY3RSZWFzb24SWAoQ", - "Y2xhc3NpZmllcl9pbmZvcxgKIAMoCzItLmFwZXJ0dXJlLmZsb3djb250cm9s", - "LmNoZWNrLnYxLkNsYXNzaWZpZXJJbmZvUg9jbGFzc2lmaWVySW5mb3MSVgoQ", - "Zmx1eF9tZXRlcl9pbmZvcxgLIAMoCzIsLmFwZXJ0dXJlLmZsb3djb250cm9s", - "LmNoZWNrLnYxLkZsdXhNZXRlckluZm9SDmZsdXhNZXRlckluZm9zElsKEWxp", - "bWl0ZXJfZGVjaXNpb25zGAwgAygLMi4uYXBlcnR1cmUuZmxvd2NvbnRyb2wu", - "Y2hlY2sudjEuTGltaXRlckRlY2lzaW9uUhBsaW1pdGVyRGVjaXNpb25zEjYK", - "CXdhaXRfdGltZRgNIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvblII", - "d2FpdFRpbWUSaAobZGVuaWVkX3Jlc3BvbnNlX3N0YXR1c19jb2RlGA4gASgO", - "MikuYXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuU3RhdHVzQ29kZVIY", - "ZGVuaWVkUmVzcG9uc2VTdGF0dXNDb2RlGkYKGFRlbGVtZXRyeUZsb3dMYWJl", - "bHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFs", - "dWU6AjgBIqYBCgxSZWplY3RSZWFzb24SFgoSUkVKRUNUX1JFQVNPTl9OT05F", - "EAASHgoaUkVKRUNUX1JFQVNPTl9SQVRFX0xJTUlURUQQARIbChdSRUpFQ1Rf", - "UkVBU09OX05PX1RPS0VOUxACEh0KGVJFSkVDVF9SRUFTT05fTk9UX1NBTVBM", - "RUQQAxIiCh5SRUpFQ1RfUkVBU09OX05PX01BVENISU5HX1JBTVAQBCJGCgxE", - "ZWNpc2lvblR5cGUSGgoWREVDSVNJT05fVFlQRV9BQ0NFUFRFRBAAEhoKFkRF", - "Q0lTSU9OX1RZUEVfUkVKRUNURUQQASLtAgoOQ2xhc3NpZmllckluZm8SHwoL", - "cG9saWN5X25hbWUYASABKAlSCnBvbGljeU5hbWUSHwoLcG9saWN5X2hhc2gY", - "AiABKAlSCnBvbGljeUhhc2gSKQoQY2xhc3NpZmllcl9pbmRleBgDIAEoA1IP", - "Y2xhc3NpZmllckluZGV4EkkKBWVycm9yGAUgASgOMjMuYXBlcnR1cmUuZmxv", - "d2NvbnRyb2wuY2hlY2sudjEuQ2xhc3NpZmllckluZm8uRXJyb3JSBWVycm9y", - "IqIBCgVFcnJvchIOCgpFUlJPUl9OT05FEAASFQoRRVJST1JfRVZBTF9GQUlM", - "RUQQARIZChVFUlJPUl9FTVBUWV9SRVNVTFRTRVQQAhIdChlFUlJPUl9BTUJJ", - "R1VPVVNfUkVTVUxUU0VUEAMSGgoWRVJST1JfTVVMVElfRVhQUkVTU0lPThAE", - "EhwKGEVSUk9SX0VYUFJFU1NJT05fTk9UX01BUBAFIqYMCg9MaW1pdGVyRGVj", - "aXNpb24SHwoLcG9saWN5X25hbWUYASABKAlSCnBvbGljeU5hbWUSHwoLcG9s", - "aWN5X2hhc2gYAiABKAlSCnBvbGljeUhhc2gSIQoMY29tcG9uZW50X2lkGAMg", - "ASgJUgtjb21wb25lbnRJZBIYCgdkcm9wcGVkGAQgASgIUgdkcm9wcGVkElQK", - "BnJlYXNvbhgFIAEoDjI8LmFwZXJ0dXJlLmZsb3djb250cm9sLmNoZWNrLnYx", - "LkxpbWl0ZXJEZWNpc2lvbi5MaW1pdGVyUmVhc29uUgZyZWFzb24SaAobZGVu", - "aWVkX3Jlc3BvbnNlX3N0YXR1c19jb2RlGAogASgOMikuYXBlcnR1cmUuZmxv", - "d2NvbnRyb2wuY2hlY2sudjEuU3RhdHVzQ29kZVIYZGVuaWVkUmVzcG9uc2VT", - "dGF0dXNDb2RlEjYKCXdhaXRfdGltZRgLIAEoCzIZLmdvb2dsZS5wcm90b2J1", - "Zi5EdXJhdGlvblIId2FpdFRpbWUSbAoRcmF0ZV9saW1pdGVyX2luZm8YFCAB", - "KAsyPi5hcGVydHVyZS5mbG93Y29udHJvbC5jaGVjay52MS5MaW1pdGVyRGVj", - "aXNpb24uUmF0ZUxpbWl0ZXJJbmZvSABSD3JhdGVMaW1pdGVySW5mbxJuChNs", - "b2FkX3NjaGVkdWxlcl9pbmZvGBUgASgLMjwuYXBlcnR1cmUuZmxvd2NvbnRy", - "b2wuY2hlY2sudjEuTGltaXRlckRlY2lzaW9uLlNjaGVkdWxlckluZm9IAFIR", - "bG9hZFNjaGVkdWxlckluZm8SXwoMc2FtcGxlcl9pbmZvGBYgASgLMjouYXBl", - "cnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuTGltaXRlckRlY2lzaW9uLlNh", - "bXBsZXJJbmZvSABSC3NhbXBsZXJJbmZvEnUKFHF1b3RhX3NjaGVkdWxlcl9p", - "bmZvGBcgASgLMkEuYXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuTGlt", - "aXRlckRlY2lzaW9uLlF1b3RhU2NoZWR1bGVySW5mb0gAUhJxdW90YVNjaGVk", - "dWxlckluZm8aYAoKVG9rZW5zSW5mbxIcCglyZW1haW5pbmcYASABKAFSCXJl", - "bWFpbmluZxIYCgdjdXJyZW50GAIgASgBUgdjdXJyZW50EhoKCGNvbnN1bWVk", - "GAMgASgBUghjb25zdW1lZBqDAQoPUmF0ZUxpbWl0ZXJJbmZvEhQKBWxhYmVs", - "GAEgASgJUgVsYWJlbBJaCgt0b2tlbnNfaW5mbxgCIAEoCzI5LmFwZXJ0dXJl", - "LmZsb3djb250cm9sLmNoZWNrLnYxLkxpbWl0ZXJEZWNpc2lvbi5Ub2tlbnNJ", - "bmZvUgp0b2tlbnNJbmZvGq4BCg1TY2hlZHVsZXJJbmZvEiUKDndvcmtsb2Fk", - "X2luZGV4GAEgASgJUg13b3JrbG9hZEluZGV4EloKC3Rva2Vuc19pbmZvGAIg", - "ASgLMjkuYXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuTGltaXRlckRl", - "Y2lzaW9uLlRva2Vuc0luZm9SCnRva2Vuc0luZm8SGgoIcHJpb3JpdHkYAyAB", - "KAFSCHByaW9yaXR5GiMKC1NhbXBsZXJJbmZvEhQKBWxhYmVsGAEgASgJUgVs", - "YWJlbBrJAQoSUXVvdGFTY2hlZHVsZXJJbmZvEhQKBWxhYmVsGAEgASgJUgVs", - "YWJlbBIlCg53b3JrbG9hZF9pbmRleBgCIAEoCVINd29ya2xvYWRJbmRleBJa", - "Cgt0b2tlbnNfaW5mbxgDIAEoCzI5LmFwZXJ0dXJlLmZsb3djb250cm9sLmNo", - "ZWNrLnYxLkxpbWl0ZXJEZWNpc2lvbi5Ub2tlbnNJbmZvUgp0b2tlbnNJbmZv", - "EhoKCHByaW9yaXR5GAQgASgBUghwcmlvcml0eSJRCg1MaW1pdGVyUmVhc29u", - "Eh4KGkxJTUlURVJfUkVBU09OX1VOU1BFQ0lGSUVEEAASIAocTElNSVRFUl9S", - "RUFTT05fS0VZX05PVF9GT1VORBABQgkKB2RldGFpbHMiNwoNRmx1eE1ldGVy", - "SW5mbxImCg9mbHV4X21ldGVyX25hbWUYASABKAlSDWZsdXhNZXRlck5hbWUq", + "YmVscxIbCglyYW1wX21vZGUYAyABKAhSCHJhbXBNb2RlEhsKCWNhY2hlX2tl", + "eRgEIAEoCVIIY2FjaGVLZXkaOQoLTGFiZWxzRW50cnkSEAoDa2V5GAEgASgJ", + "UgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4ASLMCgoNQ2hlY2tSZXNw", + "b25zZRIwCgVzdGFydBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh", + "bXBSBXN0YXJ0EiwKA2VuZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1l", + "c3RhbXBSA2VuZBIaCghzZXJ2aWNlcxgEIAMoCVIIc2VydmljZXMSIwoNY29u", + "dHJvbF9wb2ludBgFIAEoCVIMY29udHJvbFBvaW50EiYKD2Zsb3dfbGFiZWxf", + "a2V5cxgGIAMoCVINZmxvd0xhYmVsS2V5cxJ5ChV0ZWxlbWV0cnlfZmxvd19s", + "YWJlbHMYByADKAsyRS5hcGVydHVyZS5mbG93Y29udHJvbC5jaGVjay52MS5D", + "aGVja1Jlc3BvbnNlLlRlbGVtZXRyeUZsb3dMYWJlbHNFbnRyeVITdGVsZW1l", + "dHJ5Rmxvd0xhYmVscxJeCg1kZWNpc2lvbl90eXBlGAggASgOMjkuYXBlcnR1", + "cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuQ2hlY2tSZXNwb25zZS5EZWNpc2lv", + "blR5cGVSDGRlY2lzaW9uVHlwZRJeCg1yZWplY3RfcmVhc29uGAkgASgOMjku", + "YXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuQ2hlY2tSZXNwb25zZS5S", + "ZWplY3RSZWFzb25SDHJlamVjdFJlYXNvbhJYChBjbGFzc2lmaWVyX2luZm9z", + "GAogAygLMi0uYXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuQ2xhc3Np", + "ZmllckluZm9SD2NsYXNzaWZpZXJJbmZvcxJWChBmbHV4X21ldGVyX2luZm9z", + "GAsgAygLMiwuYXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuRmx1eE1l", + "dGVySW5mb1IOZmx1eE1ldGVySW5mb3MSWwoRbGltaXRlcl9kZWNpc2lvbnMY", + "DCADKAsyLi5hcGVydHVyZS5mbG93Y29udHJvbC5jaGVjay52MS5MaW1pdGVy", + "RGVjaXNpb25SEGxpbWl0ZXJEZWNpc2lvbnMSNgoJd2FpdF90aW1lGA0gASgL", + "MhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uUgh3YWl0VGltZRJoChtkZW5p", + "ZWRfcmVzcG9uc2Vfc3RhdHVzX2NvZGUYDiABKA4yKS5hcGVydHVyZS5mbG93", + "Y29udHJvbC5jaGVjay52MS5TdGF0dXNDb2RlUhhkZW5pZWRSZXNwb25zZVN0", + "YXR1c0NvZGUSTQoMY2FjaGVkX3ZhbHVlGA8gASgLMiouYXBlcnR1cmUuZmxv", + "d2NvbnRyb2wuY2hlY2sudjEuQ2FjaGVkVmFsdWVSC2NhY2hlZFZhbHVlGkYK", + "GFRlbGVtZXRyeUZsb3dMYWJlbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIU", + "CgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIqYBCgxSZWplY3RSZWFzb24SFgoS", + "UkVKRUNUX1JFQVNPTl9OT05FEAASHgoaUkVKRUNUX1JFQVNPTl9SQVRFX0xJ", + "TUlURUQQARIbChdSRUpFQ1RfUkVBU09OX05PX1RPS0VOUxACEh0KGVJFSkVD", + "VF9SRUFTT05fTk9UX1NBTVBMRUQQAxIiCh5SRUpFQ1RfUkVBU09OX05PX01B", + "VENISU5HX1JBTVAQBCJGCgxEZWNpc2lvblR5cGUSGgoWREVDSVNJT05fVFlQ", + "RV9BQ0NFUFRFRBAAEhoKFkRFQ0lTSU9OX1RZUEVfUkVKRUNURUQQASLwAQoL", + "Q2FjaGVkVmFsdWUSFAoFdmFsdWUYASABKAxSBXZhbHVlElUKDWxvb2t1cF9z", + "dGF0dXMYAiABKA4yMC5hcGVydHVyZS5mbG93Y29udHJvbC5jaGVjay52MS5D", + "YWNoZUxvb2t1cFN0YXR1c1IMbG9va3VwU3RhdHVzEl4KEG9wZXJhdGlvbl9z", + "dGF0dXMYAyABKA4yMy5hcGVydHVyZS5mbG93Y29udHJvbC5jaGVjay52MS5D", + "YWNoZU9wZXJhdGlvblN0YXR1c1IPb3BlcmF0aW9uU3RhdHVzEhQKBWVycm9y", + "GAQgASgJUgVlcnJvciKOAQoSQ2FjaGVVcHNlcnRSZXF1ZXN0EiMKDWNvbnRy", + "b2xfcG9pbnQYASABKAlSDGNvbnRyb2xQb2ludBIQCgNrZXkYAiABKAlSA2tl", + "eRIUCgV2YWx1ZRgDIAEoDFIFdmFsdWUSKwoDdHRsGAQgASgLMhkuZ29vZ2xl", + "LnByb3RvYnVmLkR1cmF0aW9uUgN0dGwiiwEKE0NhY2hlVXBzZXJ0UmVzcG9u", + "c2USXgoQb3BlcmF0aW9uX3N0YXR1cxgBIAEoDjIzLmFwZXJ0dXJlLmZsb3dj", + "b250cm9sLmNoZWNrLnYxLkNhY2hlT3BlcmF0aW9uU3RhdHVzUg9vcGVyYXRp", + "b25TdGF0dXMSFAoFZXJyb3IYAiABKAlSBWVycm9yIksKEkNhY2hlRGVsZXRl", + "UmVxdWVzdBIjCg1jb250cm9sX3BvaW50GAEgASgJUgxjb250cm9sUG9pbnQS", + "EAoDa2V5GAIgASgJUgNrZXkiiwEKE0NhY2hlRGVsZXRlUmVzcG9uc2USXgoQ", + "b3BlcmF0aW9uX3N0YXR1cxgBIAEoDjIzLmFwZXJ0dXJlLmZsb3djb250cm9s", + "LmNoZWNrLnYxLkNhY2hlT3BlcmF0aW9uU3RhdHVzUg9vcGVyYXRpb25TdGF0", + "dXMSFAoFZXJyb3IYAiABKAlSBWVycm9yIu0CCg5DbGFzc2lmaWVySW5mbxIf", + "Cgtwb2xpY3lfbmFtZRgBIAEoCVIKcG9saWN5TmFtZRIfCgtwb2xpY3lfaGFz", + "aBgCIAEoCVIKcG9saWN5SGFzaBIpChBjbGFzc2lmaWVyX2luZGV4GAMgASgD", + "Ug9jbGFzc2lmaWVySW5kZXgSSQoFZXJyb3IYBSABKA4yMy5hcGVydHVyZS5m", + "bG93Y29udHJvbC5jaGVjay52MS5DbGFzc2lmaWVySW5mby5FcnJvclIFZXJy", + "b3IiogEKBUVycm9yEg4KCkVSUk9SX05PTkUQABIVChFFUlJPUl9FVkFMX0ZB", + "SUxFRBABEhkKFUVSUk9SX0VNUFRZX1JFU1VMVFNFVBACEh0KGUVSUk9SX0FN", + "QklHVU9VU19SRVNVTFRTRVQQAxIaChZFUlJPUl9NVUxUSV9FWFBSRVNTSU9O", + "EAQSHAoYRVJST1JfRVhQUkVTU0lPTl9OT1RfTUFQEAUipgwKD0xpbWl0ZXJE", + "ZWNpc2lvbhIfCgtwb2xpY3lfbmFtZRgBIAEoCVIKcG9saWN5TmFtZRIfCgtw", + "b2xpY3lfaGFzaBgCIAEoCVIKcG9saWN5SGFzaBIhCgxjb21wb25lbnRfaWQY", + "AyABKAlSC2NvbXBvbmVudElkEhgKB2Ryb3BwZWQYBCABKAhSB2Ryb3BwZWQS", + "VAoGcmVhc29uGAUgASgOMjwuYXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2su", + "djEuTGltaXRlckRlY2lzaW9uLkxpbWl0ZXJSZWFzb25SBnJlYXNvbhJoChtk", + "ZW5pZWRfcmVzcG9uc2Vfc3RhdHVzX2NvZGUYCiABKA4yKS5hcGVydHVyZS5m", + "bG93Y29udHJvbC5jaGVjay52MS5TdGF0dXNDb2RlUhhkZW5pZWRSZXNwb25z", + "ZVN0YXR1c0NvZGUSNgoJd2FpdF90aW1lGAsgASgLMhkuZ29vZ2xlLnByb3Rv", + "YnVmLkR1cmF0aW9uUgh3YWl0VGltZRJsChFyYXRlX2xpbWl0ZXJfaW5mbxgU", + "IAEoCzI+LmFwZXJ0dXJlLmZsb3djb250cm9sLmNoZWNrLnYxLkxpbWl0ZXJE", + "ZWNpc2lvbi5SYXRlTGltaXRlckluZm9IAFIPcmF0ZUxpbWl0ZXJJbmZvEm4K", + "E2xvYWRfc2NoZWR1bGVyX2luZm8YFSABKAsyPC5hcGVydHVyZS5mbG93Y29u", + "dHJvbC5jaGVjay52MS5MaW1pdGVyRGVjaXNpb24uU2NoZWR1bGVySW5mb0gA", + "UhFsb2FkU2NoZWR1bGVySW5mbxJfCgxzYW1wbGVyX2luZm8YFiABKAsyOi5h", + "cGVydHVyZS5mbG93Y29udHJvbC5jaGVjay52MS5MaW1pdGVyRGVjaXNpb24u", + "U2FtcGxlckluZm9IAFILc2FtcGxlckluZm8SdQoUcXVvdGFfc2NoZWR1bGVy", + "X2luZm8YFyABKAsyQS5hcGVydHVyZS5mbG93Y29udHJvbC5jaGVjay52MS5M", + "aW1pdGVyRGVjaXNpb24uUXVvdGFTY2hlZHVsZXJJbmZvSABSEnF1b3RhU2No", + "ZWR1bGVySW5mbxpgCgpUb2tlbnNJbmZvEhwKCXJlbWFpbmluZxgBIAEoAVIJ", + "cmVtYWluaW5nEhgKB2N1cnJlbnQYAiABKAFSB2N1cnJlbnQSGgoIY29uc3Vt", + "ZWQYAyABKAFSCGNvbnN1bWVkGoMBCg9SYXRlTGltaXRlckluZm8SFAoFbGFi", + "ZWwYASABKAlSBWxhYmVsEloKC3Rva2Vuc19pbmZvGAIgASgLMjkuYXBlcnR1", + "cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuTGltaXRlckRlY2lzaW9uLlRva2Vu", + "c0luZm9SCnRva2Vuc0luZm8argEKDVNjaGVkdWxlckluZm8SJQoOd29ya2xv", + "YWRfaW5kZXgYASABKAlSDXdvcmtsb2FkSW5kZXgSWgoLdG9rZW5zX2luZm8Y", + "AiABKAsyOS5hcGVydHVyZS5mbG93Y29udHJvbC5jaGVjay52MS5MaW1pdGVy", + "RGVjaXNpb24uVG9rZW5zSW5mb1IKdG9rZW5zSW5mbxIaCghwcmlvcml0eRgD", + "IAEoAVIIcHJpb3JpdHkaIwoLU2FtcGxlckluZm8SFAoFbGFiZWwYASABKAlS", + "BWxhYmVsGskBChJRdW90YVNjaGVkdWxlckluZm8SFAoFbGFiZWwYASABKAlS", + "BWxhYmVsEiUKDndvcmtsb2FkX2luZGV4GAIgASgJUg13b3JrbG9hZEluZGV4", + "EloKC3Rva2Vuc19pbmZvGAMgASgLMjkuYXBlcnR1cmUuZmxvd2NvbnRyb2wu", + "Y2hlY2sudjEuTGltaXRlckRlY2lzaW9uLlRva2Vuc0luZm9SCnRva2Vuc0lu", + "Zm8SGgoIcHJpb3JpdHkYBCABKAFSCHByaW9yaXR5IlEKDUxpbWl0ZXJSZWFz", + "b24SHgoaTElNSVRFUl9SRUFTT05fVU5TUEVDSUZJRUQQABIgChxMSU1JVEVS", + "X1JFQVNPTl9LRVlfTk9UX0ZPVU5EEAFCCQoHZGV0YWlscyI3Cg1GbHV4TWV0", + "ZXJJbmZvEiYKD2ZsdXhfbWV0ZXJfbmFtZRgBIAEoCVINZmx1eE1ldGVyTmFt", + "ZSomChFDYWNoZUxvb2t1cFN0YXR1cxIHCgNISVQQABIICgRNSVNTEAEqLgoU", + "Q2FjaGVPcGVyYXRpb25TdGF0dXMSCwoHU1VDQ0VTUxAAEgkKBUVSUk9SEAEq", "tQkKClN0YXR1c0NvZGUSCQoFRW1wdHkQABIMCghDb250aW51ZRBkEgcKAk9L", "EMgBEgwKB0NyZWF0ZWQQyQESDQoIQWNjZXB0ZWQQygESIAobTm9uQXV0aG9y", "aXRhdGl2ZUluZm9ybWF0aW9uEMsBEg4KCU5vQ29udGVudBDMARIRCgxSZXNl", @@ -131,20 +152,30 @@ static CheckReflection() { "dGV3YXlUaW1lb3V0EPgDEhwKF0hUVFBWZXJzaW9uTm90U3VwcG9ydGVkEPkD", "EhoKFVZhcmlhbnRBbHNvTmVnb3RpYXRlcxD6AxIYChNJbnN1ZmZpY2llbnRT", "dG9yYWdlEPsDEhEKDExvb3BEZXRlY3RlZBD8AxIQCgtOb3RFeHRlbmRlZBD+", - "AxIiCh1OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZBD/AzJ6ChJGbG93", - "Q29udHJvbFNlcnZpY2USZAoFQ2hlY2sSKy5hcGVydHVyZS5mbG93Y29udHJv", - "bC5jaGVjay52MS5DaGVja1JlcXVlc3QaLC5hcGVydHVyZS5mbG93Y29udHJv", - "bC5jaGVjay52MS5DaGVja1Jlc3BvbnNlIgBCxgEKIWNvbS5hcGVydHVyZS5m", - "bG93Y29udHJvbC5jaGVjay52MUIKQ2hlY2tQcm90b1ABogIDQUZDqgIdQXBl", - "cnR1cmUuRmxvd2NvbnRyb2wuQ2hlY2suVjHKAh1BcGVydHVyZVxGbG93Y29u", - "dHJvbFxDaGVja1xWMeICKUFwZXJ0dXJlXEZsb3djb250cm9sXENoZWNrXFYx", - "XEdQQk1ldGFkYXRh6gIgQXBlcnR1cmU6OkZsb3djb250cm9sOjpDaGVjazo6", - "VjFiBnByb3RvMw==")); + "AxIiCh1OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZBD/AzLqAgoSRmxv", + "d0NvbnRyb2xTZXJ2aWNlEmQKBUNoZWNrEisuYXBlcnR1cmUuZmxvd2NvbnRy", + "b2wuY2hlY2sudjEuQ2hlY2tSZXF1ZXN0GiwuYXBlcnR1cmUuZmxvd2NvbnRy", + "b2wuY2hlY2sudjEuQ2hlY2tSZXNwb25zZSIAEnYKC0NhY2hlVXBzZXJ0EjEu", + "YXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuQ2FjaGVVcHNlcnRSZXF1", + "ZXN0GjIuYXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjEuQ2FjaGVVcHNl", + "cnRSZXNwb25zZSIAEnYKC0NhY2hlRGVsZXRlEjEuYXBlcnR1cmUuZmxvd2Nv", + "bnRyb2wuY2hlY2sudjEuQ2FjaGVEZWxldGVSZXF1ZXN0GjIuYXBlcnR1cmUu", + "Zmxvd2NvbnRyb2wuY2hlY2sudjEuQ2FjaGVEZWxldGVSZXNwb25zZSIAQsYB", + "CiFjb20uYXBlcnR1cmUuZmxvd2NvbnRyb2wuY2hlY2sudjFCCkNoZWNrUHJv", + "dG9QAaICA0FGQ6oCHUFwZXJ0dXJlLkZsb3djb250cm9sLkNoZWNrLlYxygId", + "QXBlcnR1cmVcRmxvd2NvbnRyb2xcQ2hlY2tcVjHiAilBcGVydHVyZVxGbG93", + "Y29udHJvbFxDaGVja1xWMVxHUEJNZXRhZGF0YeoCIEFwZXJ0dXJlOjpGbG93", + "Y29udHJvbDo6Q2hlY2s6OlYxYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Aperture.Flowcontrol.Check.V1.StatusCode), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CheckRequest), global::Aperture.Flowcontrol.Check.V1.CheckRequest.Parser, new[]{ "ControlPoint", "Labels", "RampMode" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CheckResponse), global::Aperture.Flowcontrol.Check.V1.CheckResponse.Parser, new[]{ "Start", "End", "Services", "ControlPoint", "FlowLabelKeys", "TelemetryFlowLabels", "DecisionType", "RejectReason", "ClassifierInfos", "FluxMeterInfos", "LimiterDecisions", "WaitTime", "DeniedResponseStatusCode" }, null, new[]{ typeof(global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason), typeof(global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType) }, null, new pbr::GeneratedClrTypeInfo[] { null, }), + new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus), typeof(global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus), typeof(global::Aperture.Flowcontrol.Check.V1.StatusCode), }, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CheckRequest), global::Aperture.Flowcontrol.Check.V1.CheckRequest.Parser, new[]{ "ControlPoint", "Labels", "RampMode", "CacheKey" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), + new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CheckResponse), global::Aperture.Flowcontrol.Check.V1.CheckResponse.Parser, new[]{ "Start", "End", "Services", "ControlPoint", "FlowLabelKeys", "TelemetryFlowLabels", "DecisionType", "RejectReason", "ClassifierInfos", "FluxMeterInfos", "LimiterDecisions", "WaitTime", "DeniedResponseStatusCode", "CachedValue" }, null, new[]{ typeof(global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason), typeof(global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType) }, null, new pbr::GeneratedClrTypeInfo[] { null, }), + new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CachedValue), global::Aperture.Flowcontrol.Check.V1.CachedValue.Parser, new[]{ "Value", "LookupStatus", "OperationStatus", "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CacheUpsertRequest), global::Aperture.Flowcontrol.Check.V1.CacheUpsertRequest.Parser, new[]{ "ControlPoint", "Key", "Value", "Ttl" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CacheUpsertResponse), global::Aperture.Flowcontrol.Check.V1.CacheUpsertResponse.Parser, new[]{ "OperationStatus", "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CacheDeleteRequest), global::Aperture.Flowcontrol.Check.V1.CacheDeleteRequest.Parser, new[]{ "ControlPoint", "Key" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.CacheDeleteResponse), global::Aperture.Flowcontrol.Check.V1.CacheDeleteResponse.Parser, new[]{ "OperationStatus", "Error" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.ClassifierInfo), global::Aperture.Flowcontrol.Check.V1.ClassifierInfo.Parser, new[]{ "PolicyName", "PolicyHash", "ClassifierIndex", "Error" }, null, new[]{ typeof(global::Aperture.Flowcontrol.Check.V1.ClassifierInfo.Types.Error) }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.LimiterDecision), global::Aperture.Flowcontrol.Check.V1.LimiterDecision.Parser, new[]{ "PolicyName", "PolicyHash", "ComponentId", "Dropped", "Reason", "DeniedResponseStatusCode", "WaitTime", "RateLimiterInfo", "LoadSchedulerInfo", "SamplerInfo", "QuotaSchedulerInfo" }, new[]{ "Details" }, new[]{ typeof(global::Aperture.Flowcontrol.Check.V1.LimiterDecision.Types.LimiterReason) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.LimiterDecision.Types.TokensInfo), global::Aperture.Flowcontrol.Check.V1.LimiterDecision.Types.TokensInfo.Parser, new[]{ "Remaining", "Current", "Consumed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Aperture.Flowcontrol.Check.V1.LimiterDecision.Types.RateLimiterInfo), global::Aperture.Flowcontrol.Check.V1.LimiterDecision.Types.RateLimiterInfo.Parser, new[]{ "Label", "TokensInfo" }, null, null, null, null), @@ -158,6 +189,16 @@ static CheckReflection() { } #region Enums + public enum CacheLookupStatus { + [pbr::OriginalName("HIT")] Hit = 0, + [pbr::OriginalName("MISS")] Miss = 1, + } + + public enum CacheOperationStatus { + [pbr::OriginalName("SUCCESS")] Success = 0, + [pbr::OriginalName("ERROR")] Error = 1, + } + /// /// HTTP response codes. /// For more details: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml @@ -268,6 +309,7 @@ public CheckRequest(CheckRequest other) : this() { controlPoint_ = other.controlPoint_; labels_ = other.labels_.Clone(); rampMode_ = other.rampMode_; + cacheKey_ = other.cacheKey_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -312,6 +354,21 @@ public bool RampMode { } } + /// Field number for the "cache_key" field. + public const int CacheKeyFieldNumber = 4; + private string cacheKey_ = ""; + /// + /// Cache item to fetch. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string CacheKey { + get { return cacheKey_; } + set { + cacheKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -330,6 +387,7 @@ public bool Equals(CheckRequest other) { if (ControlPoint != other.ControlPoint) return false; if (!Labels.Equals(other.Labels)) return false; if (RampMode != other.RampMode) return false; + if (CacheKey != other.CacheKey) return false; return Equals(_unknownFields, other._unknownFields); } @@ -340,6 +398,7 @@ public override int GetHashCode() { if (ControlPoint.Length != 0) hash ^= ControlPoint.GetHashCode(); hash ^= Labels.GetHashCode(); if (RampMode != false) hash ^= RampMode.GetHashCode(); + if (CacheKey.Length != 0) hash ^= CacheKey.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -367,6 +426,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(24); output.WriteBool(RampMode); } + if (CacheKey.Length != 0) { + output.WriteRawTag(34); + output.WriteString(CacheKey); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -386,6 +449,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(24); output.WriteBool(RampMode); } + if (CacheKey.Length != 0) { + output.WriteRawTag(34); + output.WriteString(CacheKey); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -403,6 +470,9 @@ public int CalculateSize() { if (RampMode != false) { size += 1 + 1; } + if (CacheKey.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(CacheKey); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -422,6 +492,9 @@ public void MergeFrom(CheckRequest other) { if (other.RampMode != false) { RampMode = other.RampMode; } + if (other.CacheKey.Length != 0) { + CacheKey = other.CacheKey; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -449,6 +522,10 @@ public void MergeFrom(pb::CodedInputStream input) { RampMode = input.ReadBool(); break; } + case 34: { + CacheKey = input.ReadString(); + break; + } } } #endif @@ -476,6 +553,10 @@ public void MergeFrom(pb::CodedInputStream input) { RampMode = input.ReadBool(); break; } + case 34: { + CacheKey = input.ReadString(); + break; + } } } } @@ -533,6 +614,7 @@ public CheckResponse(CheckResponse other) : this() { limiterDecisions_ = other.limiterDecisions_.Clone(); waitTime_ = other.waitTime_ != null ? other.waitTime_.Clone() : null; deniedResponseStatusCode_ = other.deniedResponseStatusCode_; + cachedValue_ = other.cachedValue_ != null ? other.cachedValue_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -733,6 +815,21 @@ public string ControlPoint { } } + /// Field number for the "cached_value" field. + public const int CachedValueFieldNumber = 15; + private global::Aperture.Flowcontrol.Check.V1.CachedValue cachedValue_; + /// + /// Matching cached value. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Aperture.Flowcontrol.Check.V1.CachedValue CachedValue { + get { return cachedValue_; } + set { + cachedValue_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -761,6 +858,7 @@ public bool Equals(CheckResponse other) { if(!limiterDecisions_.Equals(other.limiterDecisions_)) return false; if (!object.Equals(WaitTime, other.WaitTime)) return false; if (DeniedResponseStatusCode != other.DeniedResponseStatusCode) return false; + if (!object.Equals(CachedValue, other.CachedValue)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -781,6 +879,7 @@ public override int GetHashCode() { hash ^= limiterDecisions_.GetHashCode(); if (waitTime_ != null) hash ^= WaitTime.GetHashCode(); if (DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) hash ^= DeniedResponseStatusCode.GetHashCode(); + if (cachedValue_ != null) hash ^= CachedValue.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -829,9 +928,1537 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(106); output.WriteMessage(WaitTime); } - if (DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) { - output.WriteRawTag(112); - output.WriteEnum((int) DeniedResponseStatusCode); + if (DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) { + output.WriteRawTag(112); + output.WriteEnum((int) DeniedResponseStatusCode); + } + if (cachedValue_ != null) { + output.WriteRawTag(122); + output.WriteMessage(CachedValue); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (start_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Start); + } + if (end_ != null) { + output.WriteRawTag(18); + output.WriteMessage(End); + } + services_.WriteTo(ref output, _repeated_services_codec); + if (ControlPoint.Length != 0) { + output.WriteRawTag(42); + output.WriteString(ControlPoint); + } + flowLabelKeys_.WriteTo(ref output, _repeated_flowLabelKeys_codec); + telemetryFlowLabels_.WriteTo(ref output, _map_telemetryFlowLabels_codec); + if (DecisionType != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType.Accepted) { + output.WriteRawTag(64); + output.WriteEnum((int) DecisionType); + } + if (RejectReason != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason.None) { + output.WriteRawTag(72); + output.WriteEnum((int) RejectReason); + } + classifierInfos_.WriteTo(ref output, _repeated_classifierInfos_codec); + fluxMeterInfos_.WriteTo(ref output, _repeated_fluxMeterInfos_codec); + limiterDecisions_.WriteTo(ref output, _repeated_limiterDecisions_codec); + if (waitTime_ != null) { + output.WriteRawTag(106); + output.WriteMessage(WaitTime); + } + if (DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) { + output.WriteRawTag(112); + output.WriteEnum((int) DeniedResponseStatusCode); + } + if (cachedValue_ != null) { + output.WriteRawTag(122); + output.WriteMessage(CachedValue); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (start_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Start); + } + if (end_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(End); + } + size += services_.CalculateSize(_repeated_services_codec); + if (ControlPoint.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ControlPoint); + } + size += flowLabelKeys_.CalculateSize(_repeated_flowLabelKeys_codec); + size += telemetryFlowLabels_.CalculateSize(_map_telemetryFlowLabels_codec); + if (DecisionType != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType.Accepted) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DecisionType); + } + if (RejectReason != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason.None) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RejectReason); + } + size += classifierInfos_.CalculateSize(_repeated_classifierInfos_codec); + size += fluxMeterInfos_.CalculateSize(_repeated_fluxMeterInfos_codec); + size += limiterDecisions_.CalculateSize(_repeated_limiterDecisions_codec); + if (waitTime_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(WaitTime); + } + if (DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DeniedResponseStatusCode); + } + if (cachedValue_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(CachedValue); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(CheckResponse other) { + if (other == null) { + return; + } + if (other.start_ != null) { + if (start_ == null) { + Start = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + Start.MergeFrom(other.Start); + } + if (other.end_ != null) { + if (end_ == null) { + End = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + End.MergeFrom(other.End); + } + services_.Add(other.services_); + if (other.ControlPoint.Length != 0) { + ControlPoint = other.ControlPoint; + } + flowLabelKeys_.Add(other.flowLabelKeys_); + telemetryFlowLabels_.MergeFrom(other.telemetryFlowLabels_); + if (other.DecisionType != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType.Accepted) { + DecisionType = other.DecisionType; + } + if (other.RejectReason != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason.None) { + RejectReason = other.RejectReason; + } + classifierInfos_.Add(other.classifierInfos_); + fluxMeterInfos_.Add(other.fluxMeterInfos_); + limiterDecisions_.Add(other.limiterDecisions_); + if (other.waitTime_ != null) { + if (waitTime_ == null) { + WaitTime = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + WaitTime.MergeFrom(other.WaitTime); + } + if (other.DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) { + DeniedResponseStatusCode = other.DeniedResponseStatusCode; + } + if (other.cachedValue_ != null) { + if (cachedValue_ == null) { + CachedValue = new global::Aperture.Flowcontrol.Check.V1.CachedValue(); + } + CachedValue.MergeFrom(other.CachedValue); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (start_ == null) { + Start = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + input.ReadMessage(Start); + break; + } + case 18: { + if (end_ == null) { + End = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + input.ReadMessage(End); + break; + } + case 34: { + services_.AddEntriesFrom(input, _repeated_services_codec); + break; + } + case 42: { + ControlPoint = input.ReadString(); + break; + } + case 50: { + flowLabelKeys_.AddEntriesFrom(input, _repeated_flowLabelKeys_codec); + break; + } + case 58: { + telemetryFlowLabels_.AddEntriesFrom(input, _map_telemetryFlowLabels_codec); + break; + } + case 64: { + DecisionType = (global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType) input.ReadEnum(); + break; + } + case 72: { + RejectReason = (global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason) input.ReadEnum(); + break; + } + case 82: { + classifierInfos_.AddEntriesFrom(input, _repeated_classifierInfos_codec); + break; + } + case 90: { + fluxMeterInfos_.AddEntriesFrom(input, _repeated_fluxMeterInfos_codec); + break; + } + case 98: { + limiterDecisions_.AddEntriesFrom(input, _repeated_limiterDecisions_codec); + break; + } + case 106: { + if (waitTime_ == null) { + WaitTime = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + input.ReadMessage(WaitTime); + break; + } + case 112: { + DeniedResponseStatusCode = (global::Aperture.Flowcontrol.Check.V1.StatusCode) input.ReadEnum(); + break; + } + case 122: { + if (cachedValue_ == null) { + CachedValue = new global::Aperture.Flowcontrol.Check.V1.CachedValue(); + } + input.ReadMessage(CachedValue); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (start_ == null) { + Start = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + input.ReadMessage(Start); + break; + } + case 18: { + if (end_ == null) { + End = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + input.ReadMessage(End); + break; + } + case 34: { + services_.AddEntriesFrom(ref input, _repeated_services_codec); + break; + } + case 42: { + ControlPoint = input.ReadString(); + break; + } + case 50: { + flowLabelKeys_.AddEntriesFrom(ref input, _repeated_flowLabelKeys_codec); + break; + } + case 58: { + telemetryFlowLabels_.AddEntriesFrom(ref input, _map_telemetryFlowLabels_codec); + break; + } + case 64: { + DecisionType = (global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType) input.ReadEnum(); + break; + } + case 72: { + RejectReason = (global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason) input.ReadEnum(); + break; + } + case 82: { + classifierInfos_.AddEntriesFrom(ref input, _repeated_classifierInfos_codec); + break; + } + case 90: { + fluxMeterInfos_.AddEntriesFrom(ref input, _repeated_fluxMeterInfos_codec); + break; + } + case 98: { + limiterDecisions_.AddEntriesFrom(ref input, _repeated_limiterDecisions_codec); + break; + } + case 106: { + if (waitTime_ == null) { + WaitTime = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + input.ReadMessage(WaitTime); + break; + } + case 112: { + DeniedResponseStatusCode = (global::Aperture.Flowcontrol.Check.V1.StatusCode) input.ReadEnum(); + break; + } + case 122: { + if (cachedValue_ == null) { + CachedValue = new global::Aperture.Flowcontrol.Check.V1.CachedValue(); + } + input.ReadMessage(CachedValue); + break; + } + } + } + } + #endif + + #region Nested types + /// Container for nested types declared in the CheckResponse message type. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static partial class Types { + /// + /// RejectReason contains fields that give further information about rejection. + /// + public enum RejectReason { + [pbr::OriginalName("REJECT_REASON_NONE")] None = 0, + [pbr::OriginalName("REJECT_REASON_RATE_LIMITED")] RateLimited = 1, + [pbr::OriginalName("REJECT_REASON_NO_TOKENS")] NoTokens = 2, + [pbr::OriginalName("REJECT_REASON_NOT_SAMPLED")] NotSampled = 3, + [pbr::OriginalName("REJECT_REASON_NO_MATCHING_RAMP")] NoMatchingRamp = 4, + } + + /// + /// DecisionType contains fields that represent decision made by Check call. + /// + public enum DecisionType { + [pbr::OriginalName("DECISION_TYPE_ACCEPTED")] Accepted = 0, + [pbr::OriginalName("DECISION_TYPE_REJECTED")] Rejected = 1, + } + + } + #endregion + + } + + public sealed partial class CachedValue : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CachedValue()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[2]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CachedValue() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CachedValue(CachedValue other) : this() { + value_ = other.value_; + lookupStatus_ = other.lookupStatus_; + operationStatus_ = other.operationStatus_; + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CachedValue Clone() { + return new CachedValue(this); + } + + /// Field number for the "value" field. + public const int ValueFieldNumber = 1; + private pb::ByteString value_ = pb::ByteString.Empty; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pb::ByteString Value { + get { return value_; } + set { + value_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "lookup_status" field. + public const int LookupStatusFieldNumber = 2; + private global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus lookupStatus_ = global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus.Hit; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus LookupStatus { + get { return lookupStatus_; } + set { + lookupStatus_ = value; + } + } + + /// Field number for the "operation_status" field. + public const int OperationStatusFieldNumber = 3; + private global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus operationStatus_ = global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus OperationStatus { + get { return operationStatus_; } + set { + operationStatus_ = value; + } + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 4; + private string error_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as CachedValue); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(CachedValue other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Value != other.Value) return false; + if (LookupStatus != other.LookupStatus) return false; + if (OperationStatus != other.OperationStatus) return false; + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (Value.Length != 0) hash ^= Value.GetHashCode(); + if (LookupStatus != global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus.Hit) hash ^= LookupStatus.GetHashCode(); + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) hash ^= OperationStatus.GetHashCode(); + if (Error.Length != 0) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Value.Length != 0) { + output.WriteRawTag(10); + output.WriteBytes(Value); + } + if (LookupStatus != global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus.Hit) { + output.WriteRawTag(16); + output.WriteEnum((int) LookupStatus); + } + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + output.WriteRawTag(24); + output.WriteEnum((int) OperationStatus); + } + if (Error.Length != 0) { + output.WriteRawTag(34); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Value.Length != 0) { + output.WriteRawTag(10); + output.WriteBytes(Value); + } + if (LookupStatus != global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus.Hit) { + output.WriteRawTag(16); + output.WriteEnum((int) LookupStatus); + } + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + output.WriteRawTag(24); + output.WriteEnum((int) OperationStatus); + } + if (Error.Length != 0) { + output.WriteRawTag(34); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (Value.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(Value); + } + if (LookupStatus != global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus.Hit) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LookupStatus); + } + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OperationStatus); + } + if (Error.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(CachedValue other) { + if (other == null) { + return; + } + if (other.Value.Length != 0) { + Value = other.Value; + } + if (other.LookupStatus != global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus.Hit) { + LookupStatus = other.LookupStatus; + } + if (other.OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + OperationStatus = other.OperationStatus; + } + if (other.Error.Length != 0) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Value = input.ReadBytes(); + break; + } + case 16: { + LookupStatus = (global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus) input.ReadEnum(); + break; + } + case 24: { + OperationStatus = (global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus) input.ReadEnum(); + break; + } + case 34: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Value = input.ReadBytes(); + break; + } + case 16: { + LookupStatus = (global::Aperture.Flowcontrol.Check.V1.CacheLookupStatus) input.ReadEnum(); + break; + } + case 24: { + OperationStatus = (global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus) input.ReadEnum(); + break; + } + case 34: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + public sealed partial class CacheUpsertRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CacheUpsertRequest()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[3]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheUpsertRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheUpsertRequest(CacheUpsertRequest other) : this() { + controlPoint_ = other.controlPoint_; + key_ = other.key_; + value_ = other.value_; + ttl_ = other.ttl_ != null ? other.ttl_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheUpsertRequest Clone() { + return new CacheUpsertRequest(this); + } + + /// Field number for the "control_point" field. + public const int ControlPointFieldNumber = 1; + private string controlPoint_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string ControlPoint { + get { return controlPoint_; } + set { + controlPoint_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "key" field. + public const int KeyFieldNumber = 2; + private string key_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Key { + get { return key_; } + set { + key_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "value" field. + public const int ValueFieldNumber = 3; + private pb::ByteString value_ = pb::ByteString.Empty; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pb::ByteString Value { + get { return value_; } + set { + value_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "ttl" field. + public const int TtlFieldNumber = 4; + private global::Google.Protobuf.WellKnownTypes.Duration ttl_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Duration Ttl { + get { return ttl_; } + set { + ttl_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as CacheUpsertRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(CacheUpsertRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ControlPoint != other.ControlPoint) return false; + if (Key != other.Key) return false; + if (Value != other.Value) return false; + if (!object.Equals(Ttl, other.Ttl)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (ControlPoint.Length != 0) hash ^= ControlPoint.GetHashCode(); + if (Key.Length != 0) hash ^= Key.GetHashCode(); + if (Value.Length != 0) hash ^= Value.GetHashCode(); + if (ttl_ != null) hash ^= Ttl.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (ControlPoint.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ControlPoint); + } + if (Key.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Key); + } + if (Value.Length != 0) { + output.WriteRawTag(26); + output.WriteBytes(Value); + } + if (ttl_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Ttl); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (ControlPoint.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ControlPoint); + } + if (Key.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Key); + } + if (Value.Length != 0) { + output.WriteRawTag(26); + output.WriteBytes(Value); + } + if (ttl_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Ttl); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (ControlPoint.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ControlPoint); + } + if (Key.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Key); + } + if (Value.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(Value); + } + if (ttl_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Ttl); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(CacheUpsertRequest other) { + if (other == null) { + return; + } + if (other.ControlPoint.Length != 0) { + ControlPoint = other.ControlPoint; + } + if (other.Key.Length != 0) { + Key = other.Key; + } + if (other.Value.Length != 0) { + Value = other.Value; + } + if (other.ttl_ != null) { + if (ttl_ == null) { + Ttl = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + Ttl.MergeFrom(other.Ttl); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + ControlPoint = input.ReadString(); + break; + } + case 18: { + Key = input.ReadString(); + break; + } + case 26: { + Value = input.ReadBytes(); + break; + } + case 34: { + if (ttl_ == null) { + Ttl = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + input.ReadMessage(Ttl); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + ControlPoint = input.ReadString(); + break; + } + case 18: { + Key = input.ReadString(); + break; + } + case 26: { + Value = input.ReadBytes(); + break; + } + case 34: { + if (ttl_ == null) { + Ttl = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + input.ReadMessage(Ttl); + break; + } + } + } + } + #endif + + } + + public sealed partial class CacheUpsertResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CacheUpsertResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[4]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheUpsertResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheUpsertResponse(CacheUpsertResponse other) : this() { + operationStatus_ = other.operationStatus_; + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheUpsertResponse Clone() { + return new CacheUpsertResponse(this); + } + + /// Field number for the "operation_status" field. + public const int OperationStatusFieldNumber = 1; + private global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus operationStatus_ = global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus OperationStatus { + get { return operationStatus_; } + set { + operationStatus_ = value; + } + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 2; + private string error_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as CacheUpsertResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(CacheUpsertResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (OperationStatus != other.OperationStatus) return false; + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) hash ^= OperationStatus.GetHashCode(); + if (Error.Length != 0) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + output.WriteRawTag(8); + output.WriteEnum((int) OperationStatus); + } + if (Error.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + output.WriteRawTag(8); + output.WriteEnum((int) OperationStatus); + } + if (Error.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Error); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OperationStatus); + } + if (Error.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(CacheUpsertResponse other) { + if (other == null) { + return; + } + if (other.OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + OperationStatus = other.OperationStatus; + } + if (other.Error.Length != 0) { + Error = other.Error; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + OperationStatus = (global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus) input.ReadEnum(); + break; + } + case 18: { + Error = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + OperationStatus = (global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus) input.ReadEnum(); + break; + } + case 18: { + Error = input.ReadString(); + break; + } + } + } + } + #endif + + } + + public sealed partial class CacheDeleteRequest : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CacheDeleteRequest()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[5]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheDeleteRequest() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheDeleteRequest(CacheDeleteRequest other) : this() { + controlPoint_ = other.controlPoint_; + key_ = other.key_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheDeleteRequest Clone() { + return new CacheDeleteRequest(this); + } + + /// Field number for the "control_point" field. + public const int ControlPointFieldNumber = 1; + private string controlPoint_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string ControlPoint { + get { return controlPoint_; } + set { + controlPoint_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "key" field. + public const int KeyFieldNumber = 2; + private string key_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Key { + get { return key_; } + set { + key_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as CacheDeleteRequest); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(CacheDeleteRequest other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ControlPoint != other.ControlPoint) return false; + if (Key != other.Key) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (ControlPoint.Length != 0) hash ^= ControlPoint.GetHashCode(); + if (Key.Length != 0) hash ^= Key.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (ControlPoint.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ControlPoint); + } + if (Key.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Key); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (ControlPoint.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ControlPoint); + } + if (Key.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Key); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (ControlPoint.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ControlPoint); + } + if (Key.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Key); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(CacheDeleteRequest other) { + if (other == null) { + return; + } + if (other.ControlPoint.Length != 0) { + ControlPoint = other.ControlPoint; + } + if (other.Key.Length != 0) { + Key = other.Key; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + ControlPoint = input.ReadString(); + break; + } + case 18: { + Key = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + ControlPoint = input.ReadString(); + break; + } + case 18: { + Key = input.ReadString(); + break; + } + } + } + } + #endif + + } + + public sealed partial class CacheDeleteResponse : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CacheDeleteResponse()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[6]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheDeleteResponse() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheDeleteResponse(CacheDeleteResponse other) : this() { + operationStatus_ = other.operationStatus_; + error_ = other.error_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public CacheDeleteResponse Clone() { + return new CacheDeleteResponse(this); + } + + /// Field number for the "operation_status" field. + public const int OperationStatusFieldNumber = 1; + private global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus operationStatus_ = global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus OperationStatus { + get { return operationStatus_; } + set { + operationStatus_ = value; + } + } + + /// Field number for the "error" field. + public const int ErrorFieldNumber = 2; + private string error_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Error { + get { return error_; } + set { + error_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as CacheDeleteResponse); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(CacheDeleteResponse other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (OperationStatus != other.OperationStatus) return false; + if (Error != other.Error) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) hash ^= OperationStatus.GetHashCode(); + if (Error.Length != 0) hash ^= Error.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + output.WriteRawTag(8); + output.WriteEnum((int) OperationStatus); + } + if (Error.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Error); } if (_unknownFields != null) { _unknownFields.WriteTo(output); @@ -843,39 +2470,13 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (start_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Start); + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + output.WriteRawTag(8); + output.WriteEnum((int) OperationStatus); } - if (end_ != null) { + if (Error.Length != 0) { output.WriteRawTag(18); - output.WriteMessage(End); - } - services_.WriteTo(ref output, _repeated_services_codec); - if (ControlPoint.Length != 0) { - output.WriteRawTag(42); - output.WriteString(ControlPoint); - } - flowLabelKeys_.WriteTo(ref output, _repeated_flowLabelKeys_codec); - telemetryFlowLabels_.WriteTo(ref output, _map_telemetryFlowLabels_codec); - if (DecisionType != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType.Accepted) { - output.WriteRawTag(64); - output.WriteEnum((int) DecisionType); - } - if (RejectReason != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason.None) { - output.WriteRawTag(72); - output.WriteEnum((int) RejectReason); - } - classifierInfos_.WriteTo(ref output, _repeated_classifierInfos_codec); - fluxMeterInfos_.WriteTo(ref output, _repeated_fluxMeterInfos_codec); - limiterDecisions_.WriteTo(ref output, _repeated_limiterDecisions_codec); - if (waitTime_ != null) { - output.WriteRawTag(106); - output.WriteMessage(WaitTime); - } - if (DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) { - output.WriteRawTag(112); - output.WriteEnum((int) DeniedResponseStatusCode); + output.WriteString(Error); } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); @@ -887,32 +2488,11 @@ public void WriteTo(pb::CodedOutputStream output) { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public int CalculateSize() { int size = 0; - if (start_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Start); - } - if (end_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(End); - } - size += services_.CalculateSize(_repeated_services_codec); - if (ControlPoint.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(ControlPoint); - } - size += flowLabelKeys_.CalculateSize(_repeated_flowLabelKeys_codec); - size += telemetryFlowLabels_.CalculateSize(_map_telemetryFlowLabels_codec); - if (DecisionType != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType.Accepted) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DecisionType); - } - if (RejectReason != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason.None) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RejectReason); - } - size += classifierInfos_.CalculateSize(_repeated_classifierInfos_codec); - size += fluxMeterInfos_.CalculateSize(_repeated_fluxMeterInfos_codec); - size += limiterDecisions_.CalculateSize(_repeated_limiterDecisions_codec); - if (waitTime_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(WaitTime); + if (OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OperationStatus); } - if (DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DeniedResponseStatusCode); + if (Error.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -922,45 +2502,15 @@ public int CalculateSize() { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public void MergeFrom(CheckResponse other) { + public void MergeFrom(CacheDeleteResponse other) { if (other == null) { return; } - if (other.start_ != null) { - if (start_ == null) { - Start = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - Start.MergeFrom(other.Start); - } - if (other.end_ != null) { - if (end_ == null) { - End = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - End.MergeFrom(other.End); - } - services_.Add(other.services_); - if (other.ControlPoint.Length != 0) { - ControlPoint = other.ControlPoint; - } - flowLabelKeys_.Add(other.flowLabelKeys_); - telemetryFlowLabels_.MergeFrom(other.telemetryFlowLabels_); - if (other.DecisionType != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType.Accepted) { - DecisionType = other.DecisionType; - } - if (other.RejectReason != global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason.None) { - RejectReason = other.RejectReason; - } - classifierInfos_.Add(other.classifierInfos_); - fluxMeterInfos_.Add(other.fluxMeterInfos_); - limiterDecisions_.Add(other.limiterDecisions_); - if (other.waitTime_ != null) { - if (waitTime_ == null) { - WaitTime = new global::Google.Protobuf.WellKnownTypes.Duration(); - } - WaitTime.MergeFrom(other.WaitTime); + if (other.OperationStatus != global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus.Success) { + OperationStatus = other.OperationStatus; } - if (other.DeniedResponseStatusCode != global::Aperture.Flowcontrol.Check.V1.StatusCode.Empty) { - DeniedResponseStatusCode = other.DeniedResponseStatusCode; + if (other.Error.Length != 0) { + Error = other.Error; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -977,65 +2527,12 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; - case 10: { - if (start_ == null) { - Start = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - input.ReadMessage(Start); + case 8: { + OperationStatus = (global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus) input.ReadEnum(); break; } case 18: { - if (end_ == null) { - End = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - input.ReadMessage(End); - break; - } - case 34: { - services_.AddEntriesFrom(input, _repeated_services_codec); - break; - } - case 42: { - ControlPoint = input.ReadString(); - break; - } - case 50: { - flowLabelKeys_.AddEntriesFrom(input, _repeated_flowLabelKeys_codec); - break; - } - case 58: { - telemetryFlowLabels_.AddEntriesFrom(input, _map_telemetryFlowLabels_codec); - break; - } - case 64: { - DecisionType = (global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType) input.ReadEnum(); - break; - } - case 72: { - RejectReason = (global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason) input.ReadEnum(); - break; - } - case 82: { - classifierInfos_.AddEntriesFrom(input, _repeated_classifierInfos_codec); - break; - } - case 90: { - fluxMeterInfos_.AddEntriesFrom(input, _repeated_fluxMeterInfos_codec); - break; - } - case 98: { - limiterDecisions_.AddEntriesFrom(input, _repeated_limiterDecisions_codec); - break; - } - case 106: { - if (waitTime_ == null) { - WaitTime = new global::Google.Protobuf.WellKnownTypes.Duration(); - } - input.ReadMessage(WaitTime); - break; - } - case 112: { - DeniedResponseStatusCode = (global::Aperture.Flowcontrol.Check.V1.StatusCode) input.ReadEnum(); + Error = input.ReadString(); break; } } @@ -1053,65 +2550,12 @@ public void MergeFrom(pb::CodedInputStream input) { default: _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; - case 10: { - if (start_ == null) { - Start = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - input.ReadMessage(Start); + case 8: { + OperationStatus = (global::Aperture.Flowcontrol.Check.V1.CacheOperationStatus) input.ReadEnum(); break; } case 18: { - if (end_ == null) { - End = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - input.ReadMessage(End); - break; - } - case 34: { - services_.AddEntriesFrom(ref input, _repeated_services_codec); - break; - } - case 42: { - ControlPoint = input.ReadString(); - break; - } - case 50: { - flowLabelKeys_.AddEntriesFrom(ref input, _repeated_flowLabelKeys_codec); - break; - } - case 58: { - telemetryFlowLabels_.AddEntriesFrom(ref input, _map_telemetryFlowLabels_codec); - break; - } - case 64: { - DecisionType = (global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.DecisionType) input.ReadEnum(); - break; - } - case 72: { - RejectReason = (global::Aperture.Flowcontrol.Check.V1.CheckResponse.Types.RejectReason) input.ReadEnum(); - break; - } - case 82: { - classifierInfos_.AddEntriesFrom(ref input, _repeated_classifierInfos_codec); - break; - } - case 90: { - fluxMeterInfos_.AddEntriesFrom(ref input, _repeated_fluxMeterInfos_codec); - break; - } - case 98: { - limiterDecisions_.AddEntriesFrom(ref input, _repeated_limiterDecisions_codec); - break; - } - case 106: { - if (waitTime_ == null) { - WaitTime = new global::Google.Protobuf.WellKnownTypes.Duration(); - } - input.ReadMessage(WaitTime); - break; - } - case 112: { - DeniedResponseStatusCode = (global::Aperture.Flowcontrol.Check.V1.StatusCode) input.ReadEnum(); + Error = input.ReadString(); break; } } @@ -1119,33 +2563,6 @@ public void MergeFrom(pb::CodedInputStream input) { } #endif - #region Nested types - /// Container for nested types declared in the CheckResponse message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] - public static partial class Types { - /// - /// RejectReason contains fields that give further information about rejection. - /// - public enum RejectReason { - [pbr::OriginalName("REJECT_REASON_NONE")] None = 0, - [pbr::OriginalName("REJECT_REASON_RATE_LIMITED")] RateLimited = 1, - [pbr::OriginalName("REJECT_REASON_NO_TOKENS")] NoTokens = 2, - [pbr::OriginalName("REJECT_REASON_NOT_SAMPLED")] NotSampled = 3, - [pbr::OriginalName("REJECT_REASON_NO_MATCHING_RAMP")] NoMatchingRamp = 4, - } - - /// - /// DecisionType contains fields that represent decision made by Check call. - /// - public enum DecisionType { - [pbr::OriginalName("DECISION_TYPE_ACCEPTED")] Accepted = 0, - [pbr::OriginalName("DECISION_TYPE_REJECTED")] Rejected = 1, - } - - } - #endregion - } /// @@ -1165,7 +2582,7 @@ public sealed partial class ClassifierInfo : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[2]; } + get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1488,7 +2905,7 @@ public sealed partial class LimiterDecision : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[3]; } + get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3437,7 +4854,7 @@ public sealed partial class FluxMeterInfo : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[4]; } + get { return global::Aperture.Flowcontrol.Check.V1.CheckReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] diff --git a/sdks/aperture-csharp/Generated/Aperture/Flowcontrol/V1/CheckGrpc.cs b/sdks/aperture-csharp/Generated/Aperture/Flowcontrol/V1/CheckGrpc.cs index fe2fedcd8b..b485f69047 100644 --- a/sdks/aperture-csharp/Generated/Aperture/Flowcontrol/V1/CheckGrpc.cs +++ b/sdks/aperture-csharp/Generated/Aperture/Flowcontrol/V1/CheckGrpc.cs @@ -52,6 +52,14 @@ static T __Helper_DeserializeMessage(grpc::DeserializationContext context, gl static readonly grpc::Marshaller __Marshaller_aperture_flowcontrol_check_v1_CheckRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Aperture.Flowcontrol.Check.V1.CheckRequest.Parser)); [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] static readonly grpc::Marshaller __Marshaller_aperture_flowcontrol_check_v1_CheckResponse = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Aperture.Flowcontrol.Check.V1.CheckResponse.Parser)); + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + static readonly grpc::Marshaller __Marshaller_aperture_flowcontrol_check_v1_CacheUpsertRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Aperture.Flowcontrol.Check.V1.CacheUpsertRequest.Parser)); + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + static readonly grpc::Marshaller __Marshaller_aperture_flowcontrol_check_v1_CacheUpsertResponse = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Aperture.Flowcontrol.Check.V1.CacheUpsertResponse.Parser)); + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + static readonly grpc::Marshaller __Marshaller_aperture_flowcontrol_check_v1_CacheDeleteRequest = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Aperture.Flowcontrol.Check.V1.CacheDeleteRequest.Parser)); + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + static readonly grpc::Marshaller __Marshaller_aperture_flowcontrol_check_v1_CacheDeleteResponse = grpc::Marshallers.Create(__Helper_SerializeMessage, context => __Helper_DeserializeMessage(context, global::Aperture.Flowcontrol.Check.V1.CacheDeleteResponse.Parser)); [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] static readonly grpc::Method __Method_Check = new grpc::Method( @@ -61,6 +69,22 @@ static T __Helper_DeserializeMessage(grpc::DeserializationContext context, gl __Marshaller_aperture_flowcontrol_check_v1_CheckRequest, __Marshaller_aperture_flowcontrol_check_v1_CheckResponse); + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + static readonly grpc::Method __Method_CacheUpsert = new grpc::Method( + grpc::MethodType.Unary, + __ServiceName, + "CacheUpsert", + __Marshaller_aperture_flowcontrol_check_v1_CacheUpsertRequest, + __Marshaller_aperture_flowcontrol_check_v1_CacheUpsertResponse); + + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + static readonly grpc::Method __Method_CacheDelete = new grpc::Method( + grpc::MethodType.Unary, + __ServiceName, + "CacheDelete", + __Marshaller_aperture_flowcontrol_check_v1_CacheDeleteRequest, + __Marshaller_aperture_flowcontrol_check_v1_CacheDeleteResponse); + /// Service descriptor public static global::Google.Protobuf.Reflection.ServiceDescriptor Descriptor { @@ -83,6 +107,18 @@ public abstract partial class FlowControlServiceBase throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual global::System.Threading.Tasks.Task CacheUpsert(global::Aperture.Flowcontrol.Check.V1.CacheUpsertRequest request, grpc::ServerCallContext context) + { + throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); + } + + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual global::System.Threading.Tasks.Task CacheDelete(global::Aperture.Flowcontrol.Check.V1.CacheDeleteRequest request, grpc::ServerCallContext context) + { + throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, "")); + } + } /// Client for FlowControlService @@ -160,6 +196,46 @@ protected FlowControlServiceClient(ClientBaseConfiguration configuration) : base { return CallInvoker.AsyncUnaryCall(__Method_Check, null, options, request); } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual global::Aperture.Flowcontrol.Check.V1.CacheUpsertResponse CacheUpsert(global::Aperture.Flowcontrol.Check.V1.CacheUpsertRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + return CacheUpsert(request, new grpc::CallOptions(headers, deadline, cancellationToken)); + } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual global::Aperture.Flowcontrol.Check.V1.CacheUpsertResponse CacheUpsert(global::Aperture.Flowcontrol.Check.V1.CacheUpsertRequest request, grpc::CallOptions options) + { + return CallInvoker.BlockingUnaryCall(__Method_CacheUpsert, null, options, request); + } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual grpc::AsyncUnaryCall CacheUpsertAsync(global::Aperture.Flowcontrol.Check.V1.CacheUpsertRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + return CacheUpsertAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); + } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual grpc::AsyncUnaryCall CacheUpsertAsync(global::Aperture.Flowcontrol.Check.V1.CacheUpsertRequest request, grpc::CallOptions options) + { + return CallInvoker.AsyncUnaryCall(__Method_CacheUpsert, null, options, request); + } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual global::Aperture.Flowcontrol.Check.V1.CacheDeleteResponse CacheDelete(global::Aperture.Flowcontrol.Check.V1.CacheDeleteRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + return CacheDelete(request, new grpc::CallOptions(headers, deadline, cancellationToken)); + } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual global::Aperture.Flowcontrol.Check.V1.CacheDeleteResponse CacheDelete(global::Aperture.Flowcontrol.Check.V1.CacheDeleteRequest request, grpc::CallOptions options) + { + return CallInvoker.BlockingUnaryCall(__Method_CacheDelete, null, options, request); + } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual grpc::AsyncUnaryCall CacheDeleteAsync(global::Aperture.Flowcontrol.Check.V1.CacheDeleteRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, global::System.Threading.CancellationToken cancellationToken = default(global::System.Threading.CancellationToken)) + { + return CacheDeleteAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken)); + } + [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] + public virtual grpc::AsyncUnaryCall CacheDeleteAsync(global::Aperture.Flowcontrol.Check.V1.CacheDeleteRequest request, grpc::CallOptions options) + { + return CallInvoker.AsyncUnaryCall(__Method_CacheDelete, null, options, request); + } /// Creates a new instance of client from given ClientBaseConfiguration. [global::System.CodeDom.Compiler.GeneratedCode("grpc_csharp_plugin", null)] protected override FlowControlServiceClient NewInstance(ClientBaseConfiguration configuration) @@ -174,7 +250,9 @@ protected override FlowControlServiceClient NewInstance(ClientBaseConfiguration public static grpc::ServerServiceDefinition BindService(FlowControlServiceBase serviceImpl) { return grpc::ServerServiceDefinition.CreateBuilder() - .AddMethod(__Method_Check, serviceImpl.Check).Build(); + .AddMethod(__Method_Check, serviceImpl.Check) + .AddMethod(__Method_CacheUpsert, serviceImpl.CacheUpsert) + .AddMethod(__Method_CacheDelete, serviceImpl.CacheDelete).Build(); } /// Register service method with a service binder with or without implementation. Useful when customizing the service binding logic. @@ -185,6 +263,8 @@ protected override FlowControlServiceClient NewInstance(ClientBaseConfiguration public static void BindService(grpc::ServiceBinderBase serviceBinder, FlowControlServiceBase serviceImpl) { serviceBinder.AddMethod(__Method_Check, serviceImpl == null ? null : new grpc::UnaryServerMethod(serviceImpl.Check)); + serviceBinder.AddMethod(__Method_CacheUpsert, serviceImpl == null ? null : new grpc::UnaryServerMethod(serviceImpl.CacheUpsert)); + serviceBinder.AddMethod(__Method_CacheDelete, serviceImpl == null ? null : new grpc::UnaryServerMethod(serviceImpl.CacheDelete)); } } diff --git a/sdks/aperture-go/example/main.go b/sdks/aperture-go/example/main.go index 5b11fea4ac..265df1a40b 100644 --- a/sdks/aperture-go/example/main.go +++ b/sdks/aperture-go/example/main.go @@ -9,20 +9,19 @@ import ( "net/http" "os" "os/signal" + "strconv" "syscall" "time" - "github.com/go-logr/stdr" "github.com/gorilla/mux" - "github.com/spf13/cast" "google.golang.org/grpc" "google.golang.org/grpc/backoff" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/credentials" "google.golang.org/grpc/credentials/insecure" - aperturego "github.com/fluxninja/aperture-go/v2/sdk" - aperturegomiddleware "github.com/fluxninja/aperture-go/v2/sdk/middleware" + aperture "github.com/fluxninja/aperture-go/v2/sdk" + "github.com/fluxninja/aperture-go/v2/sdk/middleware" ) const ( @@ -33,7 +32,7 @@ const ( // app struct contains the server and the Aperture client. type app struct { server *http.Server - apertureClient aperturego.Client + apertureClient aperture.Client } // grpcOptions creates a new gRPC client that will be passed in order to initialize the Aperture client. @@ -63,16 +62,20 @@ func grpcOptions(insecureMode, skipVerify bool) []grpc.DialOption { func main() { ctx := context.Background() - stdr.SetVerbosity(2) + apertureAgentAddr := getEnvOrDefault("APERTURE_AGENT_ADDRESS", defaultAgentAddress) + apertureAgentInsecure := getEnvOrDefault("APERTURE_AGENT_INSECURE", "false") + apertureAgentInsecureBool, _ := strconv.ParseBool(apertureAgentInsecure) + apertureAgentSkipVerify := getEnvOrDefault("APERTURE_AGENT_SKIP_VERIFY", "false") + apertureAgentSkipVerifyBool, _ := strconv.ParseBool(apertureAgentSkipVerify) - opts := aperturego.Options{ - Address: getEnvOrDefault("APERTURE_AGENT_ADDRESS", defaultAgentAddress), - DialOptions: grpcOptions(getBoolEnvOrDefault("APERTURE_AGENT_INSECURE", false), getBoolEnvOrDefault("APERTURE_AGENT_SKIP_VERIFY", false)), + opts := aperture.Options{ + Address: apertureAgentAddr, + DialOptions: grpcOptions(apertureAgentInsecureBool, apertureAgentSkipVerifyBool), AgentAPIKey: getEnvOrDefault("APERTURE_AGENT_API_KEY", ""), } // initialize Aperture Client with the provided options. - apertureClient, err := aperturego.NewClient(ctx, opts) + apertureClient, err := aperture.NewClient(ctx, opts) if err != nil { log.Fatalf("failed to create client: %v", err) } @@ -92,11 +95,11 @@ func main() { superRouter := mux.PathPrefix("/super").Subrouter() superRouter.HandleFunc("", a.SuperHandler) - middlewareParams := aperturego.MiddlewareParams{ + middlewareParams := aperture.MiddlewareParams{ Timeout: 2000 * time.Millisecond, } - m, err := aperturegomiddleware.NewHTTPMiddleware(apertureClient, "awesomeFeature", middlewareParams) + m, err := middleware.NewHTTPMiddleware(apertureClient, "awesomeFeature", middlewareParams) if err != nil { log.Fatalf("failed to create HTTP middleware: %v", err) } @@ -148,15 +151,7 @@ func (a *app) HealthHandler(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("Healthy")) } -func getBoolEnvOrDefault(envName string, defaultValue bool) bool { - val := os.Getenv(envName) - if val == "" { - return defaultValue - } - return cast.ToBool(val) -} - -func getEnvOrDefault(envName, defaultValue string) string { +func getEnvOrDefault(envName string, defaultValue string) string { val := os.Getenv(envName) if val == "" { return defaultValue diff --git a/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.go b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.go new file mode 100644 index 0000000000..d5332d6fb6 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.go @@ -0,0 +1,2382 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: aperture/flowcontrol/check/v1/check.proto + +package checkv1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +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 CacheLookupStatus int32 + +const ( + CacheLookupStatus_HIT CacheLookupStatus = 0 + CacheLookupStatus_MISS CacheLookupStatus = 1 +) + +// Enum value maps for CacheLookupStatus. +var ( + CacheLookupStatus_name = map[int32]string{ + 0: "HIT", + 1: "MISS", + } + CacheLookupStatus_value = map[string]int32{ + "HIT": 0, + "MISS": 1, + } +) + +func (x CacheLookupStatus) Enum() *CacheLookupStatus { + p := new(CacheLookupStatus) + *p = x + return p +} + +func (x CacheLookupStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CacheLookupStatus) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[0].Descriptor() +} + +func (CacheLookupStatus) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[0] +} + +func (x CacheLookupStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CacheLookupStatus.Descriptor instead. +func (CacheLookupStatus) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{0} +} + +type CacheOperationStatus int32 + +const ( + CacheOperationStatus_SUCCESS CacheOperationStatus = 0 + CacheOperationStatus_ERROR CacheOperationStatus = 1 +) + +// Enum value maps for CacheOperationStatus. +var ( + CacheOperationStatus_name = map[int32]string{ + 0: "SUCCESS", + 1: "ERROR", + } + CacheOperationStatus_value = map[string]int32{ + "SUCCESS": 0, + "ERROR": 1, + } +) + +func (x CacheOperationStatus) Enum() *CacheOperationStatus { + p := new(CacheOperationStatus) + *p = x + return p +} + +func (x CacheOperationStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CacheOperationStatus) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[1].Descriptor() +} + +func (CacheOperationStatus) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[1] +} + +func (x CacheOperationStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CacheOperationStatus.Descriptor instead. +func (CacheOperationStatus) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{1} +} + +// HTTP response codes. +// For more details: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml +type StatusCode int32 + +const ( + // Empty - This code not part of the HTTP status code specification, but it is needed for `enum` type. + StatusCode_Empty StatusCode = 0 + StatusCode_Continue StatusCode = 100 + StatusCode_OK StatusCode = 200 + StatusCode_Created StatusCode = 201 + StatusCode_Accepted StatusCode = 202 + StatusCode_NonAuthoritativeInformation StatusCode = 203 + StatusCode_NoContent StatusCode = 204 + StatusCode_ResetContent StatusCode = 205 + StatusCode_PartialContent StatusCode = 206 + StatusCode_MultiStatus StatusCode = 207 + StatusCode_AlreadyReported StatusCode = 208 + StatusCode_IMUsed StatusCode = 226 + StatusCode_MultipleChoices StatusCode = 300 + StatusCode_MovedPermanently StatusCode = 301 + StatusCode_Found StatusCode = 302 + StatusCode_SeeOther StatusCode = 303 + StatusCode_NotModified StatusCode = 304 + StatusCode_UseProxy StatusCode = 305 + StatusCode_TemporaryRedirect StatusCode = 307 + StatusCode_PermanentRedirect StatusCode = 308 + StatusCode_BadRequest StatusCode = 400 + StatusCode_Unauthorized StatusCode = 401 + StatusCode_PaymentRequired StatusCode = 402 + StatusCode_Forbidden StatusCode = 403 + StatusCode_NotFound StatusCode = 404 + StatusCode_MethodNotAllowed StatusCode = 405 + StatusCode_NotAcceptable StatusCode = 406 + StatusCode_ProxyAuthenticationRequired StatusCode = 407 + StatusCode_RequestTimeout StatusCode = 408 + StatusCode_Conflict StatusCode = 409 + StatusCode_Gone StatusCode = 410 + StatusCode_LengthRequired StatusCode = 411 + StatusCode_PreconditionFailed StatusCode = 412 + StatusCode_PayloadTooLarge StatusCode = 413 + StatusCode_URITooLong StatusCode = 414 + StatusCode_UnsupportedMediaType StatusCode = 415 + StatusCode_RangeNotSatisfiable StatusCode = 416 + StatusCode_ExpectationFailed StatusCode = 417 + StatusCode_MisdirectedRequest StatusCode = 421 + StatusCode_UnprocessableEntity StatusCode = 422 + StatusCode_Locked StatusCode = 423 + StatusCode_FailedDependency StatusCode = 424 + StatusCode_UpgradeRequired StatusCode = 426 + StatusCode_PreconditionRequired StatusCode = 428 + StatusCode_TooManyRequests StatusCode = 429 + StatusCode_RequestHeaderFieldsTooLarge StatusCode = 431 + StatusCode_InternalServerError StatusCode = 500 + StatusCode_NotImplemented StatusCode = 501 + StatusCode_BadGateway StatusCode = 502 + StatusCode_ServiceUnavailable StatusCode = 503 + StatusCode_GatewayTimeout StatusCode = 504 + StatusCode_HTTPVersionNotSupported StatusCode = 505 + StatusCode_VariantAlsoNegotiates StatusCode = 506 + StatusCode_InsufficientStorage StatusCode = 507 + StatusCode_LoopDetected StatusCode = 508 + StatusCode_NotExtended StatusCode = 510 + StatusCode_NetworkAuthenticationRequired StatusCode = 511 +) + +// Enum value maps for StatusCode. +var ( + StatusCode_name = map[int32]string{ + 0: "Empty", + 100: "Continue", + 200: "OK", + 201: "Created", + 202: "Accepted", + 203: "NonAuthoritativeInformation", + 204: "NoContent", + 205: "ResetContent", + 206: "PartialContent", + 207: "MultiStatus", + 208: "AlreadyReported", + 226: "IMUsed", + 300: "MultipleChoices", + 301: "MovedPermanently", + 302: "Found", + 303: "SeeOther", + 304: "NotModified", + 305: "UseProxy", + 307: "TemporaryRedirect", + 308: "PermanentRedirect", + 400: "BadRequest", + 401: "Unauthorized", + 402: "PaymentRequired", + 403: "Forbidden", + 404: "NotFound", + 405: "MethodNotAllowed", + 406: "NotAcceptable", + 407: "ProxyAuthenticationRequired", + 408: "RequestTimeout", + 409: "Conflict", + 410: "Gone", + 411: "LengthRequired", + 412: "PreconditionFailed", + 413: "PayloadTooLarge", + 414: "URITooLong", + 415: "UnsupportedMediaType", + 416: "RangeNotSatisfiable", + 417: "ExpectationFailed", + 421: "MisdirectedRequest", + 422: "UnprocessableEntity", + 423: "Locked", + 424: "FailedDependency", + 426: "UpgradeRequired", + 428: "PreconditionRequired", + 429: "TooManyRequests", + 431: "RequestHeaderFieldsTooLarge", + 500: "InternalServerError", + 501: "NotImplemented", + 502: "BadGateway", + 503: "ServiceUnavailable", + 504: "GatewayTimeout", + 505: "HTTPVersionNotSupported", + 506: "VariantAlsoNegotiates", + 507: "InsufficientStorage", + 508: "LoopDetected", + 510: "NotExtended", + 511: "NetworkAuthenticationRequired", + } + StatusCode_value = map[string]int32{ + "Empty": 0, + "Continue": 100, + "OK": 200, + "Created": 201, + "Accepted": 202, + "NonAuthoritativeInformation": 203, + "NoContent": 204, + "ResetContent": 205, + "PartialContent": 206, + "MultiStatus": 207, + "AlreadyReported": 208, + "IMUsed": 226, + "MultipleChoices": 300, + "MovedPermanently": 301, + "Found": 302, + "SeeOther": 303, + "NotModified": 304, + "UseProxy": 305, + "TemporaryRedirect": 307, + "PermanentRedirect": 308, + "BadRequest": 400, + "Unauthorized": 401, + "PaymentRequired": 402, + "Forbidden": 403, + "NotFound": 404, + "MethodNotAllowed": 405, + "NotAcceptable": 406, + "ProxyAuthenticationRequired": 407, + "RequestTimeout": 408, + "Conflict": 409, + "Gone": 410, + "LengthRequired": 411, + "PreconditionFailed": 412, + "PayloadTooLarge": 413, + "URITooLong": 414, + "UnsupportedMediaType": 415, + "RangeNotSatisfiable": 416, + "ExpectationFailed": 417, + "MisdirectedRequest": 421, + "UnprocessableEntity": 422, + "Locked": 423, + "FailedDependency": 424, + "UpgradeRequired": 426, + "PreconditionRequired": 428, + "TooManyRequests": 429, + "RequestHeaderFieldsTooLarge": 431, + "InternalServerError": 500, + "NotImplemented": 501, + "BadGateway": 502, + "ServiceUnavailable": 503, + "GatewayTimeout": 504, + "HTTPVersionNotSupported": 505, + "VariantAlsoNegotiates": 506, + "InsufficientStorage": 507, + "LoopDetected": 508, + "NotExtended": 510, + "NetworkAuthenticationRequired": 511, + } +) + +func (x StatusCode) Enum() *StatusCode { + p := new(StatusCode) + *p = x + return p +} + +func (x StatusCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StatusCode) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[2].Descriptor() +} + +func (StatusCode) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[2] +} + +func (x StatusCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatusCode.Descriptor instead. +func (StatusCode) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{2} +} + +// RejectReason contains fields that give further information about rejection. +type CheckResponse_RejectReason int32 + +const ( + CheckResponse_REJECT_REASON_NONE CheckResponse_RejectReason = 0 + CheckResponse_REJECT_REASON_RATE_LIMITED CheckResponse_RejectReason = 1 + CheckResponse_REJECT_REASON_NO_TOKENS CheckResponse_RejectReason = 2 + CheckResponse_REJECT_REASON_NOT_SAMPLED CheckResponse_RejectReason = 3 + CheckResponse_REJECT_REASON_NO_MATCHING_RAMP CheckResponse_RejectReason = 4 +) + +// Enum value maps for CheckResponse_RejectReason. +var ( + CheckResponse_RejectReason_name = map[int32]string{ + 0: "REJECT_REASON_NONE", + 1: "REJECT_REASON_RATE_LIMITED", + 2: "REJECT_REASON_NO_TOKENS", + 3: "REJECT_REASON_NOT_SAMPLED", + 4: "REJECT_REASON_NO_MATCHING_RAMP", + } + CheckResponse_RejectReason_value = map[string]int32{ + "REJECT_REASON_NONE": 0, + "REJECT_REASON_RATE_LIMITED": 1, + "REJECT_REASON_NO_TOKENS": 2, + "REJECT_REASON_NOT_SAMPLED": 3, + "REJECT_REASON_NO_MATCHING_RAMP": 4, + } +) + +func (x CheckResponse_RejectReason) Enum() *CheckResponse_RejectReason { + p := new(CheckResponse_RejectReason) + *p = x + return p +} + +func (x CheckResponse_RejectReason) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CheckResponse_RejectReason) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[3].Descriptor() +} + +func (CheckResponse_RejectReason) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[3] +} + +func (x CheckResponse_RejectReason) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CheckResponse_RejectReason.Descriptor instead. +func (CheckResponse_RejectReason) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{1, 0} +} + +// DecisionType contains fields that represent decision made by Check call. +type CheckResponse_DecisionType int32 + +const ( + CheckResponse_DECISION_TYPE_ACCEPTED CheckResponse_DecisionType = 0 + CheckResponse_DECISION_TYPE_REJECTED CheckResponse_DecisionType = 1 +) + +// Enum value maps for CheckResponse_DecisionType. +var ( + CheckResponse_DecisionType_name = map[int32]string{ + 0: "DECISION_TYPE_ACCEPTED", + 1: "DECISION_TYPE_REJECTED", + } + CheckResponse_DecisionType_value = map[string]int32{ + "DECISION_TYPE_ACCEPTED": 0, + "DECISION_TYPE_REJECTED": 1, + } +) + +func (x CheckResponse_DecisionType) Enum() *CheckResponse_DecisionType { + p := new(CheckResponse_DecisionType) + *p = x + return p +} + +func (x CheckResponse_DecisionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CheckResponse_DecisionType) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[4].Descriptor() +} + +func (CheckResponse_DecisionType) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[4] +} + +func (x CheckResponse_DecisionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CheckResponse_DecisionType.Descriptor instead. +func (CheckResponse_DecisionType) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{1, 1} +} + +// Error information. +type ClassifierInfo_Error int32 + +const ( + ClassifierInfo_ERROR_NONE ClassifierInfo_Error = 0 + ClassifierInfo_ERROR_EVAL_FAILED ClassifierInfo_Error = 1 + ClassifierInfo_ERROR_EMPTY_RESULTSET ClassifierInfo_Error = 2 + ClassifierInfo_ERROR_AMBIGUOUS_RESULTSET ClassifierInfo_Error = 3 + ClassifierInfo_ERROR_MULTI_EXPRESSION ClassifierInfo_Error = 4 + ClassifierInfo_ERROR_EXPRESSION_NOT_MAP ClassifierInfo_Error = 5 +) + +// Enum value maps for ClassifierInfo_Error. +var ( + ClassifierInfo_Error_name = map[int32]string{ + 0: "ERROR_NONE", + 1: "ERROR_EVAL_FAILED", + 2: "ERROR_EMPTY_RESULTSET", + 3: "ERROR_AMBIGUOUS_RESULTSET", + 4: "ERROR_MULTI_EXPRESSION", + 5: "ERROR_EXPRESSION_NOT_MAP", + } + ClassifierInfo_Error_value = map[string]int32{ + "ERROR_NONE": 0, + "ERROR_EVAL_FAILED": 1, + "ERROR_EMPTY_RESULTSET": 2, + "ERROR_AMBIGUOUS_RESULTSET": 3, + "ERROR_MULTI_EXPRESSION": 4, + "ERROR_EXPRESSION_NOT_MAP": 5, + } +) + +func (x ClassifierInfo_Error) Enum() *ClassifierInfo_Error { + p := new(ClassifierInfo_Error) + *p = x + return p +} + +func (x ClassifierInfo_Error) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ClassifierInfo_Error) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[5].Descriptor() +} + +func (ClassifierInfo_Error) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[5] +} + +func (x ClassifierInfo_Error) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ClassifierInfo_Error.Descriptor instead. +func (ClassifierInfo_Error) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{7, 0} +} + +type LimiterDecision_LimiterReason int32 + +const ( + LimiterDecision_LIMITER_REASON_UNSPECIFIED LimiterDecision_LimiterReason = 0 + LimiterDecision_LIMITER_REASON_KEY_NOT_FOUND LimiterDecision_LimiterReason = 1 +) + +// Enum value maps for LimiterDecision_LimiterReason. +var ( + LimiterDecision_LimiterReason_name = map[int32]string{ + 0: "LIMITER_REASON_UNSPECIFIED", + 1: "LIMITER_REASON_KEY_NOT_FOUND", + } + LimiterDecision_LimiterReason_value = map[string]int32{ + "LIMITER_REASON_UNSPECIFIED": 0, + "LIMITER_REASON_KEY_NOT_FOUND": 1, + } +) + +func (x LimiterDecision_LimiterReason) Enum() *LimiterDecision_LimiterReason { + p := new(LimiterDecision_LimiterReason) + *p = x + return p +} + +func (x LimiterDecision_LimiterReason) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LimiterDecision_LimiterReason) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_check_v1_check_proto_enumTypes[6].Descriptor() +} + +func (LimiterDecision_LimiterReason) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_check_v1_check_proto_enumTypes[6] +} + +func (x LimiterDecision_LimiterReason) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LimiterDecision_LimiterReason.Descriptor instead. +func (LimiterDecision_LimiterReason) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 0} +} + +// CheckRequest contains fields required to perform Check call. +type CheckRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ControlPoint string `protobuf:"bytes,1,opt,name=control_point,json=controlPoint,proto3" json:"control_point,omitempty"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + RampMode bool `protobuf:"varint,3,opt,name=ramp_mode,json=rampMode,proto3" json:"ramp_mode,omitempty"` + // Cache item to fetch. + CacheKey string `protobuf:"bytes,4,opt,name=cache_key,json=cacheKey,proto3" json:"cache_key,omitempty"` +} + +func (x *CheckRequest) Reset() { + *x = CheckRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckRequest) ProtoMessage() {} + +func (x *CheckRequest) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_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 CheckRequest.ProtoReflect.Descriptor instead. +func (*CheckRequest) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{0} +} + +func (x *CheckRequest) GetControlPoint() string { + if x != nil { + return x.ControlPoint + } + return "" +} + +func (x *CheckRequest) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *CheckRequest) GetRampMode() bool { + if x != nil { + return x.RampMode + } + return false +} + +func (x *CheckRequest) GetCacheKey() string { + if x != nil { + return x.CacheKey + } + return "" +} + +// CheckResponse contains fields that represent decision made by Check call. +type CheckResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // start timestamp + Start *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"` + // end timestamp + End *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"` + // services that matched + Services []string `protobuf:"bytes,4,rep,name=services,proto3" json:"services,omitempty"` + // control_point of request + ControlPoint string `protobuf:"bytes,5,opt,name=control_point,json=controlPoint,proto3" json:"control_point,omitempty"` + // flow label keys that were matched for this request. + FlowLabelKeys []string `protobuf:"bytes,6,rep,name=flow_label_keys,json=flowLabelKeys,proto3" json:"flow_label_keys,omitempty"` + // telemetry_flow_labels are labels for telemetry purpose. The keys in telemetry_flow_labels is subset of flow_label_keys. + TelemetryFlowLabels map[string]string `protobuf:"bytes,7,rep,name=telemetry_flow_labels,json=telemetryFlowLabels,proto3" json:"telemetry_flow_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // decision_type contains what the decision was. + DecisionType CheckResponse_DecisionType `protobuf:"varint,8,opt,name=decision_type,json=decisionType,proto3,enum=aperture.flowcontrol.check.v1.CheckResponse_DecisionType" json:"decision_type,omitempty"` + // reject_reason contains the reason for the rejection. + RejectReason CheckResponse_RejectReason `protobuf:"varint,9,opt,name=reject_reason,json=rejectReason,proto3,enum=aperture.flowcontrol.check.v1.CheckResponse_RejectReason" json:"reject_reason,omitempty"` + // classifiers that were matched for this request. + ClassifierInfos []*ClassifierInfo `protobuf:"bytes,10,rep,name=classifier_infos,json=classifierInfos,proto3" json:"classifier_infos,omitempty"` + // flux meters that were matched for this request. + FluxMeterInfos []*FluxMeterInfo `protobuf:"bytes,11,rep,name=flux_meter_infos,json=fluxMeterInfos,proto3" json:"flux_meter_infos,omitempty"` + // limiter_decisions contains information about decision made by each limiter. + LimiterDecisions []*LimiterDecision `protobuf:"bytes,12,rep,name=limiter_decisions,json=limiterDecisions,proto3" json:"limiter_decisions,omitempty"` + // Recommended minimal amount of time to wait when retrying the request, if + // decision_type is REJECTED. Optional. + WaitTime *durationpb.Duration `protobuf:"bytes,13,opt,name=wait_time,json=waitTime,proto3" json:"wait_time,omitempty"` + // http_status contains the http status code to be returned to the client, if + // decision_type is REJECTED. Optional. + DeniedResponseStatusCode StatusCode `protobuf:"varint,14,opt,name=denied_response_status_code,json=deniedResponseStatusCode,proto3,enum=aperture.flowcontrol.check.v1.StatusCode" json:"denied_response_status_code,omitempty"` + // Matching cached value. + CachedValue *CachedValue `protobuf:"bytes,15,opt,name=cached_value,json=cachedValue,proto3" json:"cached_value,omitempty"` +} + +func (x *CheckResponse) Reset() { + *x = CheckResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckResponse) ProtoMessage() {} + +func (x *CheckResponse) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[1] + 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 CheckResponse.ProtoReflect.Descriptor instead. +func (*CheckResponse) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{1} +} + +func (x *CheckResponse) GetStart() *timestamppb.Timestamp { + if x != nil { + return x.Start + } + return nil +} + +func (x *CheckResponse) GetEnd() *timestamppb.Timestamp { + if x != nil { + return x.End + } + return nil +} + +func (x *CheckResponse) GetServices() []string { + if x != nil { + return x.Services + } + return nil +} + +func (x *CheckResponse) GetControlPoint() string { + if x != nil { + return x.ControlPoint + } + return "" +} + +func (x *CheckResponse) GetFlowLabelKeys() []string { + if x != nil { + return x.FlowLabelKeys + } + return nil +} + +func (x *CheckResponse) GetTelemetryFlowLabels() map[string]string { + if x != nil { + return x.TelemetryFlowLabels + } + return nil +} + +func (x *CheckResponse) GetDecisionType() CheckResponse_DecisionType { + if x != nil { + return x.DecisionType + } + return CheckResponse_DECISION_TYPE_ACCEPTED +} + +func (x *CheckResponse) GetRejectReason() CheckResponse_RejectReason { + if x != nil { + return x.RejectReason + } + return CheckResponse_REJECT_REASON_NONE +} + +func (x *CheckResponse) GetClassifierInfos() []*ClassifierInfo { + if x != nil { + return x.ClassifierInfos + } + return nil +} + +func (x *CheckResponse) GetFluxMeterInfos() []*FluxMeterInfo { + if x != nil { + return x.FluxMeterInfos + } + return nil +} + +func (x *CheckResponse) GetLimiterDecisions() []*LimiterDecision { + if x != nil { + return x.LimiterDecisions + } + return nil +} + +func (x *CheckResponse) GetWaitTime() *durationpb.Duration { + if x != nil { + return x.WaitTime + } + return nil +} + +func (x *CheckResponse) GetDeniedResponseStatusCode() StatusCode { + if x != nil { + return x.DeniedResponseStatusCode + } + return StatusCode_Empty +} + +func (x *CheckResponse) GetCachedValue() *CachedValue { + if x != nil { + return x.CachedValue + } + return nil +} + +type CachedValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + LookupStatus CacheLookupStatus `protobuf:"varint,2,opt,name=lookup_status,json=lookupStatus,proto3,enum=aperture.flowcontrol.check.v1.CacheLookupStatus" json:"lookup_status,omitempty"` + OperationStatus CacheOperationStatus `protobuf:"varint,3,opt,name=operation_status,json=operationStatus,proto3,enum=aperture.flowcontrol.check.v1.CacheOperationStatus" json:"operation_status,omitempty"` + Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *CachedValue) Reset() { + *x = CachedValue{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CachedValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CachedValue) ProtoMessage() {} + +func (x *CachedValue) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[2] + 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 CachedValue.ProtoReflect.Descriptor instead. +func (*CachedValue) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{2} +} + +func (x *CachedValue) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *CachedValue) GetLookupStatus() CacheLookupStatus { + if x != nil { + return x.LookupStatus + } + return CacheLookupStatus_HIT +} + +func (x *CachedValue) GetOperationStatus() CacheOperationStatus { + if x != nil { + return x.OperationStatus + } + return CacheOperationStatus_SUCCESS +} + +func (x *CachedValue) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +type CacheUpsertRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ControlPoint string `protobuf:"bytes,1,opt,name=control_point,json=controlPoint,proto3" json:"control_point,omitempty"` + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` + Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + Ttl *durationpb.Duration `protobuf:"bytes,4,opt,name=ttl,proto3" json:"ttl,omitempty"` +} + +func (x *CacheUpsertRequest) Reset() { + *x = CacheUpsertRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CacheUpsertRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheUpsertRequest) ProtoMessage() {} + +func (x *CacheUpsertRequest) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3] + 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 CacheUpsertRequest.ProtoReflect.Descriptor instead. +func (*CacheUpsertRequest) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{3} +} + +func (x *CacheUpsertRequest) GetControlPoint() string { + if x != nil { + return x.ControlPoint + } + return "" +} + +func (x *CacheUpsertRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *CacheUpsertRequest) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +func (x *CacheUpsertRequest) GetTtl() *durationpb.Duration { + if x != nil { + return x.Ttl + } + return nil +} + +type CacheUpsertResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperationStatus CacheOperationStatus `protobuf:"varint,1,opt,name=operation_status,json=operationStatus,proto3,enum=aperture.flowcontrol.check.v1.CacheOperationStatus" json:"operation_status,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *CacheUpsertResponse) Reset() { + *x = CacheUpsertResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CacheUpsertResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheUpsertResponse) ProtoMessage() {} + +func (x *CacheUpsertResponse) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[4] + 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 CacheUpsertResponse.ProtoReflect.Descriptor instead. +func (*CacheUpsertResponse) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{4} +} + +func (x *CacheUpsertResponse) GetOperationStatus() CacheOperationStatus { + if x != nil { + return x.OperationStatus + } + return CacheOperationStatus_SUCCESS +} + +func (x *CacheUpsertResponse) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +type CacheDeleteRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ControlPoint string `protobuf:"bytes,1,opt,name=control_point,json=controlPoint,proto3" json:"control_point,omitempty"` + Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` +} + +func (x *CacheDeleteRequest) Reset() { + *x = CacheDeleteRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CacheDeleteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheDeleteRequest) ProtoMessage() {} + +func (x *CacheDeleteRequest) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[5] + 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 CacheDeleteRequest.ProtoReflect.Descriptor instead. +func (*CacheDeleteRequest) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{5} +} + +func (x *CacheDeleteRequest) GetControlPoint() string { + if x != nil { + return x.ControlPoint + } + return "" +} + +func (x *CacheDeleteRequest) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +type CacheDeleteResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OperationStatus CacheOperationStatus `protobuf:"varint,1,opt,name=operation_status,json=operationStatus,proto3,enum=aperture.flowcontrol.check.v1.CacheOperationStatus" json:"operation_status,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *CacheDeleteResponse) Reset() { + *x = CacheDeleteResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CacheDeleteResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CacheDeleteResponse) ProtoMessage() {} + +func (x *CacheDeleteResponse) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[6] + 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 CacheDeleteResponse.ProtoReflect.Descriptor instead. +func (*CacheDeleteResponse) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{6} +} + +func (x *CacheDeleteResponse) GetOperationStatus() CacheOperationStatus { + if x != nil { + return x.OperationStatus + } + return CacheOperationStatus_SUCCESS +} + +func (x *CacheDeleteResponse) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +// ClassifierInfo describes details for each ClassifierInfo. +type ClassifierInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PolicyName string `protobuf:"bytes,1,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"` + PolicyHash string `protobuf:"bytes,2,opt,name=policy_hash,json=policyHash,proto3" json:"policy_hash,omitempty"` + ClassifierIndex int64 `protobuf:"varint,3,opt,name=classifier_index,json=classifierIndex,proto3" json:"classifier_index,omitempty"` + Error ClassifierInfo_Error `protobuf:"varint,5,opt,name=error,proto3,enum=aperture.flowcontrol.check.v1.ClassifierInfo_Error" json:"error,omitempty"` +} + +func (x *ClassifierInfo) Reset() { + *x = ClassifierInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClassifierInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClassifierInfo) ProtoMessage() {} + +func (x *ClassifierInfo) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[7] + 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 ClassifierInfo.ProtoReflect.Descriptor instead. +func (*ClassifierInfo) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{7} +} + +func (x *ClassifierInfo) GetPolicyName() string { + if x != nil { + return x.PolicyName + } + return "" +} + +func (x *ClassifierInfo) GetPolicyHash() string { + if x != nil { + return x.PolicyHash + } + return "" +} + +func (x *ClassifierInfo) GetClassifierIndex() int64 { + if x != nil { + return x.ClassifierIndex + } + return 0 +} + +func (x *ClassifierInfo) GetError() ClassifierInfo_Error { + if x != nil { + return x.Error + } + return ClassifierInfo_ERROR_NONE +} + +// LimiterDecision describes details for each limiter. +type LimiterDecision struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PolicyName string `protobuf:"bytes,1,opt,name=policy_name,json=policyName,proto3" json:"policy_name,omitempty"` + PolicyHash string `protobuf:"bytes,2,opt,name=policy_hash,json=policyHash,proto3" json:"policy_hash,omitempty"` + ComponentId string `protobuf:"bytes,3,opt,name=component_id,json=componentId,proto3" json:"component_id,omitempty"` + Dropped bool `protobuf:"varint,4,opt,name=dropped,proto3" json:"dropped,omitempty"` + Reason LimiterDecision_LimiterReason `protobuf:"varint,5,opt,name=reason,proto3,enum=aperture.flowcontrol.check.v1.LimiterDecision_LimiterReason" json:"reason,omitempty"` + DeniedResponseStatusCode StatusCode `protobuf:"varint,10,opt,name=denied_response_status_code,json=deniedResponseStatusCode,proto3,enum=aperture.flowcontrol.check.v1.StatusCode" json:"denied_response_status_code,omitempty"` + WaitTime *durationpb.Duration `protobuf:"bytes,11,opt,name=wait_time,json=waitTime,proto3" json:"wait_time,omitempty"` + // Types that are assignable to Details: + // + // *LimiterDecision_RateLimiterInfo_ + // *LimiterDecision_LoadSchedulerInfo + // *LimiterDecision_SamplerInfo_ + // *LimiterDecision_QuotaSchedulerInfo_ + Details isLimiterDecision_Details `protobuf_oneof:"details"` +} + +func (x *LimiterDecision) Reset() { + *x = LimiterDecision{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LimiterDecision) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LimiterDecision) ProtoMessage() {} + +func (x *LimiterDecision) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8] + 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 LimiterDecision.ProtoReflect.Descriptor instead. +func (*LimiterDecision) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8} +} + +func (x *LimiterDecision) GetPolicyName() string { + if x != nil { + return x.PolicyName + } + return "" +} + +func (x *LimiterDecision) GetPolicyHash() string { + if x != nil { + return x.PolicyHash + } + return "" +} + +func (x *LimiterDecision) GetComponentId() string { + if x != nil { + return x.ComponentId + } + return "" +} + +func (x *LimiterDecision) GetDropped() bool { + if x != nil { + return x.Dropped + } + return false +} + +func (x *LimiterDecision) GetReason() LimiterDecision_LimiterReason { + if x != nil { + return x.Reason + } + return LimiterDecision_LIMITER_REASON_UNSPECIFIED +} + +func (x *LimiterDecision) GetDeniedResponseStatusCode() StatusCode { + if x != nil { + return x.DeniedResponseStatusCode + } + return StatusCode_Empty +} + +func (x *LimiterDecision) GetWaitTime() *durationpb.Duration { + if x != nil { + return x.WaitTime + } + return nil +} + +func (m *LimiterDecision) GetDetails() isLimiterDecision_Details { + if m != nil { + return m.Details + } + return nil +} + +func (x *LimiterDecision) GetRateLimiterInfo() *LimiterDecision_RateLimiterInfo { + if x, ok := x.GetDetails().(*LimiterDecision_RateLimiterInfo_); ok { + return x.RateLimiterInfo + } + return nil +} + +func (x *LimiterDecision) GetLoadSchedulerInfo() *LimiterDecision_SchedulerInfo { + if x, ok := x.GetDetails().(*LimiterDecision_LoadSchedulerInfo); ok { + return x.LoadSchedulerInfo + } + return nil +} + +func (x *LimiterDecision) GetSamplerInfo() *LimiterDecision_SamplerInfo { + if x, ok := x.GetDetails().(*LimiterDecision_SamplerInfo_); ok { + return x.SamplerInfo + } + return nil +} + +func (x *LimiterDecision) GetQuotaSchedulerInfo() *LimiterDecision_QuotaSchedulerInfo { + if x, ok := x.GetDetails().(*LimiterDecision_QuotaSchedulerInfo_); ok { + return x.QuotaSchedulerInfo + } + return nil +} + +type isLimiterDecision_Details interface { + isLimiterDecision_Details() +} + +type LimiterDecision_RateLimiterInfo_ struct { + RateLimiterInfo *LimiterDecision_RateLimiterInfo `protobuf:"bytes,20,opt,name=rate_limiter_info,json=rateLimiterInfo,proto3,oneof"` +} + +type LimiterDecision_LoadSchedulerInfo struct { + LoadSchedulerInfo *LimiterDecision_SchedulerInfo `protobuf:"bytes,21,opt,name=load_scheduler_info,json=loadSchedulerInfo,proto3,oneof"` +} + +type LimiterDecision_SamplerInfo_ struct { + SamplerInfo *LimiterDecision_SamplerInfo `protobuf:"bytes,22,opt,name=sampler_info,json=samplerInfo,proto3,oneof"` +} + +type LimiterDecision_QuotaSchedulerInfo_ struct { + QuotaSchedulerInfo *LimiterDecision_QuotaSchedulerInfo `protobuf:"bytes,23,opt,name=quota_scheduler_info,json=quotaSchedulerInfo,proto3,oneof"` +} + +func (*LimiterDecision_RateLimiterInfo_) isLimiterDecision_Details() {} + +func (*LimiterDecision_LoadSchedulerInfo) isLimiterDecision_Details() {} + +func (*LimiterDecision_SamplerInfo_) isLimiterDecision_Details() {} + +func (*LimiterDecision_QuotaSchedulerInfo_) isLimiterDecision_Details() {} + +// FluxMeterInfo describes detail for each FluxMeterInfo. +type FluxMeterInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FluxMeterName string `protobuf:"bytes,1,opt,name=flux_meter_name,json=fluxMeterName,proto3" json:"flux_meter_name,omitempty"` +} + +func (x *FluxMeterInfo) Reset() { + *x = FluxMeterInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FluxMeterInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FluxMeterInfo) ProtoMessage() {} + +func (x *FluxMeterInfo) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[9] + 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 FluxMeterInfo.ProtoReflect.Descriptor instead. +func (*FluxMeterInfo) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{9} +} + +func (x *FluxMeterInfo) GetFluxMeterName() string { + if x != nil { + return x.FluxMeterName + } + return "" +} + +type LimiterDecision_TokensInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // remaining and current may not + // provide accurate values in case + // the request times out while waiting + // for tokens. + Remaining float64 `protobuf:"fixed64,1,opt,name=remaining,proto3" json:"remaining,omitempty"` + Current float64 `protobuf:"fixed64,2,opt,name=current,proto3" json:"current,omitempty"` + Consumed float64 `protobuf:"fixed64,3,opt,name=consumed,proto3" json:"consumed,omitempty"` +} + +func (x *LimiterDecision_TokensInfo) Reset() { + *x = LimiterDecision_TokensInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LimiterDecision_TokensInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LimiterDecision_TokensInfo) ProtoMessage() {} + +func (x *LimiterDecision_TokensInfo) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[12] + 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 LimiterDecision_TokensInfo.ProtoReflect.Descriptor instead. +func (*LimiterDecision_TokensInfo) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 0} +} + +func (x *LimiterDecision_TokensInfo) GetRemaining() float64 { + if x != nil { + return x.Remaining + } + return 0 +} + +func (x *LimiterDecision_TokensInfo) GetCurrent() float64 { + if x != nil { + return x.Current + } + return 0 +} + +func (x *LimiterDecision_TokensInfo) GetConsumed() float64 { + if x != nil { + return x.Consumed + } + return 0 +} + +type LimiterDecision_RateLimiterInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` + TokensInfo *LimiterDecision_TokensInfo `protobuf:"bytes,2,opt,name=tokens_info,json=tokensInfo,proto3" json:"tokens_info,omitempty"` +} + +func (x *LimiterDecision_RateLimiterInfo) Reset() { + *x = LimiterDecision_RateLimiterInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LimiterDecision_RateLimiterInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LimiterDecision_RateLimiterInfo) ProtoMessage() {} + +func (x *LimiterDecision_RateLimiterInfo) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[13] + 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 LimiterDecision_RateLimiterInfo.ProtoReflect.Descriptor instead. +func (*LimiterDecision_RateLimiterInfo) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 1} +} + +func (x *LimiterDecision_RateLimiterInfo) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *LimiterDecision_RateLimiterInfo) GetTokensInfo() *LimiterDecision_TokensInfo { + if x != nil { + return x.TokensInfo + } + return nil +} + +type LimiterDecision_SchedulerInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WorkloadIndex string `protobuf:"bytes,1,opt,name=workload_index,json=workloadIndex,proto3" json:"workload_index,omitempty"` + TokensInfo *LimiterDecision_TokensInfo `protobuf:"bytes,2,opt,name=tokens_info,json=tokensInfo,proto3" json:"tokens_info,omitempty"` + Priority float64 `protobuf:"fixed64,3,opt,name=priority,proto3" json:"priority,omitempty"` +} + +func (x *LimiterDecision_SchedulerInfo) Reset() { + *x = LimiterDecision_SchedulerInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LimiterDecision_SchedulerInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LimiterDecision_SchedulerInfo) ProtoMessage() {} + +func (x *LimiterDecision_SchedulerInfo) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[14] + 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 LimiterDecision_SchedulerInfo.ProtoReflect.Descriptor instead. +func (*LimiterDecision_SchedulerInfo) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 2} +} + +func (x *LimiterDecision_SchedulerInfo) GetWorkloadIndex() string { + if x != nil { + return x.WorkloadIndex + } + return "" +} + +func (x *LimiterDecision_SchedulerInfo) GetTokensInfo() *LimiterDecision_TokensInfo { + if x != nil { + return x.TokensInfo + } + return nil +} + +func (x *LimiterDecision_SchedulerInfo) GetPriority() float64 { + if x != nil { + return x.Priority + } + return 0 +} + +type LimiterDecision_SamplerInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` +} + +func (x *LimiterDecision_SamplerInfo) Reset() { + *x = LimiterDecision_SamplerInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LimiterDecision_SamplerInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LimiterDecision_SamplerInfo) ProtoMessage() {} + +func (x *LimiterDecision_SamplerInfo) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[15] + 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 LimiterDecision_SamplerInfo.ProtoReflect.Descriptor instead. +func (*LimiterDecision_SamplerInfo) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 3} +} + +func (x *LimiterDecision_SamplerInfo) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +type LimiterDecision_QuotaSchedulerInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` + WorkloadIndex string `protobuf:"bytes,2,opt,name=workload_index,json=workloadIndex,proto3" json:"workload_index,omitempty"` + TokensInfo *LimiterDecision_TokensInfo `protobuf:"bytes,3,opt,name=tokens_info,json=tokensInfo,proto3" json:"tokens_info,omitempty"` + Priority float64 `protobuf:"fixed64,4,opt,name=priority,proto3" json:"priority,omitempty"` +} + +func (x *LimiterDecision_QuotaSchedulerInfo) Reset() { + *x = LimiterDecision_QuotaSchedulerInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LimiterDecision_QuotaSchedulerInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LimiterDecision_QuotaSchedulerInfo) ProtoMessage() {} + +func (x *LimiterDecision_QuotaSchedulerInfo) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_check_v1_check_proto_msgTypes[16] + 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 LimiterDecision_QuotaSchedulerInfo.ProtoReflect.Descriptor instead. +func (*LimiterDecision_QuotaSchedulerInfo) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP(), []int{8, 4} +} + +func (x *LimiterDecision_QuotaSchedulerInfo) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *LimiterDecision_QuotaSchedulerInfo) GetWorkloadIndex() string { + if x != nil { + return x.WorkloadIndex + } + return "" +} + +func (x *LimiterDecision_QuotaSchedulerInfo) GetTokensInfo() *LimiterDecision_TokensInfo { + if x != nil { + return x.TokensInfo + } + return nil +} + +func (x *LimiterDecision_QuotaSchedulerInfo) GetPriority() float64 { + if x != nil { + return x.Priority + } + return 0 +} + +var File_aperture_flowcontrol_check_v1_check_proto protoreflect.FileDescriptor + +var file_aperture_flowcontrol_check_v1_check_proto_rawDesc = []byte{ + 0x0a, 0x29, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x66, 0x6c, 0x6f, 0x77, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x61, 0x70, 0x65, + 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf9, 0x01, 0x0a, 0x0c, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x4f, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x61, 0x6d, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x61, 0x6d, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x63, 0x68, 0x65, 0x4b, 0x65, 0x79, 0x1a, 0x39, 0x0a, 0x0b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc, 0x0a, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, + 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4b, 0x65, + 0x79, 0x73, 0x12, 0x79, 0x0a, 0x15, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, + 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x5e, 0x0a, + 0x0d, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0c, 0x64, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5e, 0x0a, + 0x0d, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, + 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x58, 0x0a, + 0x10, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x66, 0x6c, 0x75, 0x78, 0x5f, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0e, 0x66, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, + 0x5b, 0x0a, 0x11, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x65, + 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x09, + 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x77, 0x61, 0x69, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x68, 0x0a, 0x1b, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x43, 0x6f, 0x64, 0x65, 0x52, 0x18, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4d, + 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x46, 0x0a, + 0x18, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1e, + 0x0a, 0x1a, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1b, + 0x0a, 0x17, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x4e, 0x4f, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x52, + 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, + 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x45, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x4d, + 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x41, 0x4d, 0x50, 0x10, 0x04, 0x22, 0x46, + 0x0a, 0x0c, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x16, 0x44, 0x45, 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, + 0x43, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x4a, 0x45, + 0x43, 0x54, 0x45, 0x44, 0x10, 0x01, 0x22, 0xf0, 0x01, 0x0a, 0x0b, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x55, 0x0a, 0x0d, + 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, + 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x5e, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, + 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x0a, + 0x03, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0x8b, 0x01, 0x0a, 0x13, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x61, + 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4b, 0x0a, 0x12, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x8b, 0x01, 0x0a, 0x13, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, + 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0xed, 0x02, 0x0a, 0x0e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x49, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, + 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa2, + 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x45, 0x56, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, + 0x19, 0x0a, 0x15, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x5f, 0x52, + 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x45, 0x54, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x5f, 0x41, 0x4d, 0x42, 0x49, 0x47, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x52, 0x45, + 0x53, 0x55, 0x4c, 0x54, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x45, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, + 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4d, 0x41, + 0x50, 0x10, 0x05, 0x22, 0xa6, 0x0c, 0x0a, 0x0f, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, + 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, + 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, + 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, + 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x1b, + 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x18, 0x64, 0x65, + 0x6e, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x77, 0x61, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, + 0x0a, 0x11, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, + 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x6e, 0x0a, 0x13, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, + 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, 0x0c, + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, + 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, + 0x52, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x75, 0x0a, + 0x14, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x61, 0x70, + 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x51, 0x75, 0x6f, 0x74, + 0x61, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, + 0x52, 0x12, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x60, 0x0a, 0x0a, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x1a, 0x83, 0x01, 0x0a, 0x0f, 0x52, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x5a, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0xae, 0x01, 0x0a, + 0x0d, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, + 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, + 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x1a, 0x23, 0x0a, + 0x0b, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x1a, 0xc9, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x70, + 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x44, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x51, + 0x0a, 0x0d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x1e, 0x0a, 0x1a, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x20, 0x0a, 0x1c, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x37, 0x0a, 0x0d, + 0x46, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, + 0x0f, 0x66, 0x6c, 0x75, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x6c, 0x75, 0x78, 0x4d, 0x65, 0x74, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x2a, 0x26, 0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x49, + 0x54, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, + 0x14, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x2a, 0xb5, 0x09, + 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x65, 0x10, 0x64, 0x12, 0x07, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0xc8, 0x01, 0x12, 0x0c, + 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0xc9, 0x01, 0x12, 0x0d, 0x0a, 0x08, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x10, 0xca, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x4e, + 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xcb, 0x01, 0x12, 0x0e, 0x0a, + 0x09, 0x4e, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xcc, 0x01, 0x12, 0x11, 0x0a, + 0x0c, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xcd, 0x01, + 0x12, 0x13, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x10, 0xce, 0x01, 0x12, 0x10, 0x0a, 0x0b, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x10, 0xcf, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x6c, 0x72, 0x65, 0x61, + 0x64, 0x79, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x10, 0xd0, 0x01, 0x12, 0x0b, 0x0a, + 0x06, 0x49, 0x4d, 0x55, 0x73, 0x65, 0x64, 0x10, 0xe2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x10, 0xac, 0x02, + 0x12, 0x15, 0x0a, 0x10, 0x4d, 0x6f, 0x76, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, + 0x6e, 0x74, 0x6c, 0x79, 0x10, 0xad, 0x02, 0x12, 0x0a, 0x0a, 0x05, 0x46, 0x6f, 0x75, 0x6e, 0x64, + 0x10, 0xae, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x53, 0x65, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x10, + 0xaf, 0x02, 0x12, 0x10, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0xb0, 0x02, 0x12, 0x0d, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x10, 0xb1, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, + 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x10, 0xb3, 0x02, 0x12, 0x16, 0x0a, 0x11, 0x50, + 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x10, 0xb4, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x10, 0x90, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x55, 0x6e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x10, 0x91, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x92, 0x03, 0x12, 0x0e, 0x0a, + 0x09, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x10, 0x93, 0x03, 0x12, 0x0d, 0x0a, + 0x08, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x94, 0x03, 0x12, 0x15, 0x0a, 0x10, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x6f, 0x74, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x10, 0x95, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x10, 0x96, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x97, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0x98, 0x03, 0x12, 0x0d, + 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x10, 0x99, 0x03, 0x12, 0x09, 0x0a, + 0x04, 0x47, 0x6f, 0x6e, 0x65, 0x10, 0x9a, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, 0x9b, 0x03, 0x12, 0x17, 0x0a, + 0x12, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x10, 0x9c, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x54, 0x6f, 0x6f, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x10, 0x9d, 0x03, 0x12, 0x0f, 0x0a, 0x0a, + 0x55, 0x52, 0x49, 0x54, 0x6f, 0x6f, 0x4c, 0x6f, 0x6e, 0x67, 0x10, 0x9e, 0x03, 0x12, 0x19, 0x0a, + 0x14, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x10, 0x9f, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x4e, 0x6f, 0x74, 0x53, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x10, + 0xa0, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xa1, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x4d, 0x69, + 0x73, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x10, 0xa5, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x55, 0x6e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x10, 0xa6, 0x03, 0x12, 0x0b, 0x0a, + 0x06, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x10, 0xa7, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x46, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x10, 0xa8, + 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x10, 0xaa, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x10, + 0xac, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x73, 0x10, 0xad, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x54, + 0x6f, 0x6f, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x10, 0xaf, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x10, 0xf4, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x49, 0x6d, 0x70, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x10, 0xf5, 0x03, 0x12, 0x0f, 0x0a, 0x0a, 0x42, 0x61, 0x64, + 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x10, 0xf6, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x10, 0xf7, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0xf8, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x54, 0x54, 0x50, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x10, 0xf9, 0x03, 0x12, 0x1a, 0x0a, 0x15, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, + 0x74, 0x41, 0x6c, 0x73, 0x6f, 0x4e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x73, 0x10, + 0xfa, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, + 0x6e, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x10, 0xfb, 0x03, 0x12, 0x11, 0x0a, 0x0c, + 0x4c, 0x6f, 0x6f, 0x70, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x10, 0xfc, 0x03, 0x12, + 0x10, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x10, 0xfe, + 0x03, 0x12, 0x22, 0x0a, 0x1d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x74, 0x68, + 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x10, 0xff, 0x03, 0x32, 0xea, 0x02, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x05, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, + 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x76, 0x0a, 0x0b, 0x43, 0x61, 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x0b, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, + 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x42, 0xb3, 0x02, 0x0a, 0x35, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x75, 0x78, 0x6e, + 0x69, 0x6e, 0x6a, 0x61, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x61, + 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x57, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x75, 0x78, 0x6e, 0x69, 0x6e, 0x6a, 0x61, + 0x2f, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x70, + 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x46, 0x43, 0xaa, 0x02, 0x1d, 0x41, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1d, 0x41, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x5c, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x29, 0x41, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x5c, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x20, 0x41, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x3a, 0x3a, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_aperture_flowcontrol_check_v1_check_proto_rawDescOnce sync.Once + file_aperture_flowcontrol_check_v1_check_proto_rawDescData = file_aperture_flowcontrol_check_v1_check_proto_rawDesc +) + +func file_aperture_flowcontrol_check_v1_check_proto_rawDescGZIP() []byte { + file_aperture_flowcontrol_check_v1_check_proto_rawDescOnce.Do(func() { + file_aperture_flowcontrol_check_v1_check_proto_rawDescData = protoimpl.X.CompressGZIP(file_aperture_flowcontrol_check_v1_check_proto_rawDescData) + }) + return file_aperture_flowcontrol_check_v1_check_proto_rawDescData +} + +var file_aperture_flowcontrol_check_v1_check_proto_enumTypes = make([]protoimpl.EnumInfo, 7) +var file_aperture_flowcontrol_check_v1_check_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_aperture_flowcontrol_check_v1_check_proto_goTypes = []interface{}{ + (CacheLookupStatus)(0), // 0: aperture.flowcontrol.check.v1.CacheLookupStatus + (CacheOperationStatus)(0), // 1: aperture.flowcontrol.check.v1.CacheOperationStatus + (StatusCode)(0), // 2: aperture.flowcontrol.check.v1.StatusCode + (CheckResponse_RejectReason)(0), // 3: aperture.flowcontrol.check.v1.CheckResponse.RejectReason + (CheckResponse_DecisionType)(0), // 4: aperture.flowcontrol.check.v1.CheckResponse.DecisionType + (ClassifierInfo_Error)(0), // 5: aperture.flowcontrol.check.v1.ClassifierInfo.Error + (LimiterDecision_LimiterReason)(0), // 6: aperture.flowcontrol.check.v1.LimiterDecision.LimiterReason + (*CheckRequest)(nil), // 7: aperture.flowcontrol.check.v1.CheckRequest + (*CheckResponse)(nil), // 8: aperture.flowcontrol.check.v1.CheckResponse + (*CachedValue)(nil), // 9: aperture.flowcontrol.check.v1.CachedValue + (*CacheUpsertRequest)(nil), // 10: aperture.flowcontrol.check.v1.CacheUpsertRequest + (*CacheUpsertResponse)(nil), // 11: aperture.flowcontrol.check.v1.CacheUpsertResponse + (*CacheDeleteRequest)(nil), // 12: aperture.flowcontrol.check.v1.CacheDeleteRequest + (*CacheDeleteResponse)(nil), // 13: aperture.flowcontrol.check.v1.CacheDeleteResponse + (*ClassifierInfo)(nil), // 14: aperture.flowcontrol.check.v1.ClassifierInfo + (*LimiterDecision)(nil), // 15: aperture.flowcontrol.check.v1.LimiterDecision + (*FluxMeterInfo)(nil), // 16: aperture.flowcontrol.check.v1.FluxMeterInfo + nil, // 17: aperture.flowcontrol.check.v1.CheckRequest.LabelsEntry + nil, // 18: aperture.flowcontrol.check.v1.CheckResponse.TelemetryFlowLabelsEntry + (*LimiterDecision_TokensInfo)(nil), // 19: aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo + (*LimiterDecision_RateLimiterInfo)(nil), // 20: aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo + (*LimiterDecision_SchedulerInfo)(nil), // 21: aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo + (*LimiterDecision_SamplerInfo)(nil), // 22: aperture.flowcontrol.check.v1.LimiterDecision.SamplerInfo + (*LimiterDecision_QuotaSchedulerInfo)(nil), // 23: aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo + (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 25: google.protobuf.Duration +} +var file_aperture_flowcontrol_check_v1_check_proto_depIdxs = []int32{ + 17, // 0: aperture.flowcontrol.check.v1.CheckRequest.labels:type_name -> aperture.flowcontrol.check.v1.CheckRequest.LabelsEntry + 24, // 1: aperture.flowcontrol.check.v1.CheckResponse.start:type_name -> google.protobuf.Timestamp + 24, // 2: aperture.flowcontrol.check.v1.CheckResponse.end:type_name -> google.protobuf.Timestamp + 18, // 3: aperture.flowcontrol.check.v1.CheckResponse.telemetry_flow_labels:type_name -> aperture.flowcontrol.check.v1.CheckResponse.TelemetryFlowLabelsEntry + 4, // 4: aperture.flowcontrol.check.v1.CheckResponse.decision_type:type_name -> aperture.flowcontrol.check.v1.CheckResponse.DecisionType + 3, // 5: aperture.flowcontrol.check.v1.CheckResponse.reject_reason:type_name -> aperture.flowcontrol.check.v1.CheckResponse.RejectReason + 14, // 6: aperture.flowcontrol.check.v1.CheckResponse.classifier_infos:type_name -> aperture.flowcontrol.check.v1.ClassifierInfo + 16, // 7: aperture.flowcontrol.check.v1.CheckResponse.flux_meter_infos:type_name -> aperture.flowcontrol.check.v1.FluxMeterInfo + 15, // 8: aperture.flowcontrol.check.v1.CheckResponse.limiter_decisions:type_name -> aperture.flowcontrol.check.v1.LimiterDecision + 25, // 9: aperture.flowcontrol.check.v1.CheckResponse.wait_time:type_name -> google.protobuf.Duration + 2, // 10: aperture.flowcontrol.check.v1.CheckResponse.denied_response_status_code:type_name -> aperture.flowcontrol.check.v1.StatusCode + 9, // 11: aperture.flowcontrol.check.v1.CheckResponse.cached_value:type_name -> aperture.flowcontrol.check.v1.CachedValue + 0, // 12: aperture.flowcontrol.check.v1.CachedValue.lookup_status:type_name -> aperture.flowcontrol.check.v1.CacheLookupStatus + 1, // 13: aperture.flowcontrol.check.v1.CachedValue.operation_status:type_name -> aperture.flowcontrol.check.v1.CacheOperationStatus + 25, // 14: aperture.flowcontrol.check.v1.CacheUpsertRequest.ttl:type_name -> google.protobuf.Duration + 1, // 15: aperture.flowcontrol.check.v1.CacheUpsertResponse.operation_status:type_name -> aperture.flowcontrol.check.v1.CacheOperationStatus + 1, // 16: aperture.flowcontrol.check.v1.CacheDeleteResponse.operation_status:type_name -> aperture.flowcontrol.check.v1.CacheOperationStatus + 5, // 17: aperture.flowcontrol.check.v1.ClassifierInfo.error:type_name -> aperture.flowcontrol.check.v1.ClassifierInfo.Error + 6, // 18: aperture.flowcontrol.check.v1.LimiterDecision.reason:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.LimiterReason + 2, // 19: aperture.flowcontrol.check.v1.LimiterDecision.denied_response_status_code:type_name -> aperture.flowcontrol.check.v1.StatusCode + 25, // 20: aperture.flowcontrol.check.v1.LimiterDecision.wait_time:type_name -> google.protobuf.Duration + 20, // 21: aperture.flowcontrol.check.v1.LimiterDecision.rate_limiter_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo + 21, // 22: aperture.flowcontrol.check.v1.LimiterDecision.load_scheduler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo + 22, // 23: aperture.flowcontrol.check.v1.LimiterDecision.sampler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.SamplerInfo + 23, // 24: aperture.flowcontrol.check.v1.LimiterDecision.quota_scheduler_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo + 19, // 25: aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo + 19, // 26: aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo + 19, // 27: aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfo.tokens_info:type_name -> aperture.flowcontrol.check.v1.LimiterDecision.TokensInfo + 7, // 28: aperture.flowcontrol.check.v1.FlowControlService.Check:input_type -> aperture.flowcontrol.check.v1.CheckRequest + 10, // 29: aperture.flowcontrol.check.v1.FlowControlService.CacheUpsert:input_type -> aperture.flowcontrol.check.v1.CacheUpsertRequest + 12, // 30: aperture.flowcontrol.check.v1.FlowControlService.CacheDelete:input_type -> aperture.flowcontrol.check.v1.CacheDeleteRequest + 8, // 31: aperture.flowcontrol.check.v1.FlowControlService.Check:output_type -> aperture.flowcontrol.check.v1.CheckResponse + 11, // 32: aperture.flowcontrol.check.v1.FlowControlService.CacheUpsert:output_type -> aperture.flowcontrol.check.v1.CacheUpsertResponse + 13, // 33: aperture.flowcontrol.check.v1.FlowControlService.CacheDelete:output_type -> aperture.flowcontrol.check.v1.CacheDeleteResponse + 31, // [31:34] is the sub-list for method output_type + 28, // [28:31] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name +} + +func init() { file_aperture_flowcontrol_check_v1_check_proto_init() } +func file_aperture_flowcontrol_check_v1_check_proto_init() { + if File_aperture_flowcontrol_check_v1_check_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CachedValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CacheUpsertRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CacheUpsertResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CacheDeleteRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CacheDeleteResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ClassifierInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LimiterDecision); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FluxMeterInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LimiterDecision_TokensInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LimiterDecision_RateLimiterInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LimiterDecision_SchedulerInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LimiterDecision_SamplerInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LimiterDecision_QuotaSchedulerInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_aperture_flowcontrol_check_v1_check_proto_msgTypes[8].OneofWrappers = []interface{}{ + (*LimiterDecision_RateLimiterInfo_)(nil), + (*LimiterDecision_LoadSchedulerInfo)(nil), + (*LimiterDecision_SamplerInfo_)(nil), + (*LimiterDecision_QuotaSchedulerInfo_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_aperture_flowcontrol_check_v1_check_proto_rawDesc, + NumEnums: 7, + NumMessages: 17, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_aperture_flowcontrol_check_v1_check_proto_goTypes, + DependencyIndexes: file_aperture_flowcontrol_check_v1_check_proto_depIdxs, + EnumInfos: file_aperture_flowcontrol_check_v1_check_proto_enumTypes, + MessageInfos: file_aperture_flowcontrol_check_v1_check_proto_msgTypes, + }.Build() + File_aperture_flowcontrol_check_v1_check_proto = out.File + file_aperture_flowcontrol_check_v1_check_proto_rawDesc = nil + file_aperture_flowcontrol_check_v1_check_proto_goTypes = nil + file_aperture_flowcontrol_check_v1_check_proto_depIdxs = nil +} diff --git a/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.json.go b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.json.go new file mode 100644 index 0000000000..1266e82972 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.json.go @@ -0,0 +1,248 @@ +// Code generated by protoc-gen-go-json. DO NOT EDIT. +// source: aperture/flowcontrol/check/v1/check.proto + +package checkv1 + +import ( + "google.golang.org/protobuf/encoding/protojson" +) + +// MarshalJSON implements json.Marshaler +func (msg *CheckRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CheckRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CheckResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CheckResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CachedValue) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CachedValue) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CacheUpsertRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CacheUpsertRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CacheUpsertResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CacheUpsertResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CacheDeleteRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CacheDeleteRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CacheDeleteResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CacheDeleteResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *ClassifierInfo) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *ClassifierInfo) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *LimiterDecision) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *LimiterDecision) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *LimiterDecision_TokensInfo) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *LimiterDecision_TokensInfo) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *LimiterDecision_RateLimiterInfo) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *LimiterDecision_RateLimiterInfo) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *LimiterDecision_SchedulerInfo) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *LimiterDecision_SchedulerInfo) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *LimiterDecision_SamplerInfo) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *LimiterDecision_SamplerInfo) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *LimiterDecision_QuotaSchedulerInfo) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *LimiterDecision_QuotaSchedulerInfo) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *FluxMeterInfo) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *FluxMeterInfo) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} diff --git a/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.validate.go b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.validate.go new file mode 100644 index 0000000000..152f797a05 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check.pb.validate.go @@ -0,0 +1,2176 @@ +// Code generated by protoc-gen-validate. DO NOT EDIT. +// source: aperture/flowcontrol/check/v1/check.proto + +package checkv1 + +import ( + "bytes" + "errors" + "fmt" + "net" + "net/mail" + "net/url" + "regexp" + "sort" + "strings" + "time" + "unicode/utf8" + + "google.golang.org/protobuf/types/known/anypb" +) + +// ensure the imports are used +var ( + _ = bytes.MinRead + _ = errors.New("") + _ = fmt.Print + _ = utf8.UTFMax + _ = (*regexp.Regexp)(nil) + _ = (*strings.Reader)(nil) + _ = net.IPv4len + _ = time.Duration(0) + _ = (*url.URL)(nil) + _ = (*mail.Address)(nil) + _ = anypb.Any{} + _ = sort.Sort +) + +// Validate checks the field values on CheckRequest with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *CheckRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CheckRequestMultiError, or +// nil if none found. +func (m *CheckRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ControlPoint + + // no validation rules for Labels + + // no validation rules for RampMode + + // no validation rules for CacheKey + + if len(errors) > 0 { + return CheckRequestMultiError(errors) + } + + return nil +} + +// CheckRequestMultiError is an error wrapping multiple validation errors +// returned by CheckRequest.ValidateAll() if the designated constraints aren't met. +type CheckRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckRequestMultiError) AllErrors() []error { return m } + +// CheckRequestValidationError is the validation error returned by +// CheckRequest.Validate if the designated constraints aren't met. +type CheckRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CheckRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CheckRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CheckRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CheckRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CheckRequestValidationError) ErrorName() string { return "CheckRequestValidationError" } + +// Error satisfies the builtin error interface +func (e CheckRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCheckRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CheckRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CheckRequestValidationError{} + +// Validate checks the field values on CheckResponse with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *CheckResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckResponse with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CheckResponseMultiError, or +// nil if none found. +func (m *CheckResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetStart()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "Start", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "Start", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetStart()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckResponseValidationError{ + field: "Start", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetEnd()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "End", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "End", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnd()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckResponseValidationError{ + field: "End", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for ControlPoint + + // no validation rules for TelemetryFlowLabels + + // no validation rules for DecisionType + + // no validation rules for RejectReason + + for idx, item := range m.GetClassifierInfos() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: fmt.Sprintf("ClassifierInfos[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: fmt.Sprintf("ClassifierInfos[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckResponseValidationError{ + field: fmt.Sprintf("ClassifierInfos[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + for idx, item := range m.GetFluxMeterInfos() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: fmt.Sprintf("FluxMeterInfos[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: fmt.Sprintf("FluxMeterInfos[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckResponseValidationError{ + field: fmt.Sprintf("FluxMeterInfos[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + for idx, item := range m.GetLimiterDecisions() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: fmt.Sprintf("LimiterDecisions[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: fmt.Sprintf("LimiterDecisions[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckResponseValidationError{ + field: fmt.Sprintf("LimiterDecisions[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if all { + switch v := interface{}(m.GetWaitTime()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "WaitTime", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "WaitTime", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWaitTime()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckResponseValidationError{ + field: "WaitTime", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for DeniedResponseStatusCode + + if all { + switch v := interface{}(m.GetCachedValue()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "CachedValue", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckResponseValidationError{ + field: "CachedValue", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCachedValue()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckResponseValidationError{ + field: "CachedValue", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return CheckResponseMultiError(errors) + } + + return nil +} + +// CheckResponseMultiError is an error wrapping multiple validation errors +// returned by CheckResponse.ValidateAll() if the designated constraints +// aren't met. +type CheckResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckResponseMultiError) AllErrors() []error { return m } + +// CheckResponseValidationError is the validation error returned by +// CheckResponse.Validate if the designated constraints aren't met. +type CheckResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CheckResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CheckResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CheckResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CheckResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CheckResponseValidationError) ErrorName() string { return "CheckResponseValidationError" } + +// Error satisfies the builtin error interface +func (e CheckResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCheckResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CheckResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CheckResponseValidationError{} + +// Validate checks the field values on CachedValue with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *CachedValue) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CachedValue with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CachedValueMultiError, or +// nil if none found. +func (m *CachedValue) ValidateAll() error { + return m.validate(true) +} + +func (m *CachedValue) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Value + + // no validation rules for LookupStatus + + // no validation rules for OperationStatus + + // no validation rules for Error + + if len(errors) > 0 { + return CachedValueMultiError(errors) + } + + return nil +} + +// CachedValueMultiError is an error wrapping multiple validation errors +// returned by CachedValue.ValidateAll() if the designated constraints aren't met. +type CachedValueMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CachedValueMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CachedValueMultiError) AllErrors() []error { return m } + +// CachedValueValidationError is the validation error returned by +// CachedValue.Validate if the designated constraints aren't met. +type CachedValueValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CachedValueValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CachedValueValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CachedValueValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CachedValueValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CachedValueValidationError) ErrorName() string { return "CachedValueValidationError" } + +// Error satisfies the builtin error interface +func (e CachedValueValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCachedValue.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CachedValueValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CachedValueValidationError{} + +// Validate checks the field values on CacheUpsertRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CacheUpsertRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CacheUpsertRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CacheUpsertRequestMultiError, or nil if none found. +func (m *CacheUpsertRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CacheUpsertRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ControlPoint + + // no validation rules for Key + + // no validation rules for Value + + if all { + switch v := interface{}(m.GetTtl()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CacheUpsertRequestValidationError{ + field: "Ttl", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CacheUpsertRequestValidationError{ + field: "Ttl", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTtl()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CacheUpsertRequestValidationError{ + field: "Ttl", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return CacheUpsertRequestMultiError(errors) + } + + return nil +} + +// CacheUpsertRequestMultiError is an error wrapping multiple validation errors +// returned by CacheUpsertRequest.ValidateAll() if the designated constraints +// aren't met. +type CacheUpsertRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CacheUpsertRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CacheUpsertRequestMultiError) AllErrors() []error { return m } + +// CacheUpsertRequestValidationError is the validation error returned by +// CacheUpsertRequest.Validate if the designated constraints aren't met. +type CacheUpsertRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CacheUpsertRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CacheUpsertRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CacheUpsertRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CacheUpsertRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CacheUpsertRequestValidationError) ErrorName() string { + return "CacheUpsertRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e CacheUpsertRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCacheUpsertRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CacheUpsertRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CacheUpsertRequestValidationError{} + +// Validate checks the field values on CacheUpsertResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CacheUpsertResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CacheUpsertResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CacheUpsertResponseMultiError, or nil if none found. +func (m *CacheUpsertResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CacheUpsertResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for OperationStatus + + // no validation rules for Error + + if len(errors) > 0 { + return CacheUpsertResponseMultiError(errors) + } + + return nil +} + +// CacheUpsertResponseMultiError is an error wrapping multiple validation +// errors returned by CacheUpsertResponse.ValidateAll() if the designated +// constraints aren't met. +type CacheUpsertResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CacheUpsertResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CacheUpsertResponseMultiError) AllErrors() []error { return m } + +// CacheUpsertResponseValidationError is the validation error returned by +// CacheUpsertResponse.Validate if the designated constraints aren't met. +type CacheUpsertResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CacheUpsertResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CacheUpsertResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CacheUpsertResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CacheUpsertResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CacheUpsertResponseValidationError) ErrorName() string { + return "CacheUpsertResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e CacheUpsertResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCacheUpsertResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CacheUpsertResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CacheUpsertResponseValidationError{} + +// Validate checks the field values on CacheDeleteRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CacheDeleteRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CacheDeleteRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CacheDeleteRequestMultiError, or nil if none found. +func (m *CacheDeleteRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CacheDeleteRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for ControlPoint + + // no validation rules for Key + + if len(errors) > 0 { + return CacheDeleteRequestMultiError(errors) + } + + return nil +} + +// CacheDeleteRequestMultiError is an error wrapping multiple validation errors +// returned by CacheDeleteRequest.ValidateAll() if the designated constraints +// aren't met. +type CacheDeleteRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CacheDeleteRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CacheDeleteRequestMultiError) AllErrors() []error { return m } + +// CacheDeleteRequestValidationError is the validation error returned by +// CacheDeleteRequest.Validate if the designated constraints aren't met. +type CacheDeleteRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CacheDeleteRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CacheDeleteRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CacheDeleteRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CacheDeleteRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CacheDeleteRequestValidationError) ErrorName() string { + return "CacheDeleteRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e CacheDeleteRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCacheDeleteRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CacheDeleteRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CacheDeleteRequestValidationError{} + +// Validate checks the field values on CacheDeleteResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CacheDeleteResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CacheDeleteResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CacheDeleteResponseMultiError, or nil if none found. +func (m *CacheDeleteResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CacheDeleteResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for OperationStatus + + // no validation rules for Error + + if len(errors) > 0 { + return CacheDeleteResponseMultiError(errors) + } + + return nil +} + +// CacheDeleteResponseMultiError is an error wrapping multiple validation +// errors returned by CacheDeleteResponse.ValidateAll() if the designated +// constraints aren't met. +type CacheDeleteResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CacheDeleteResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CacheDeleteResponseMultiError) AllErrors() []error { return m } + +// CacheDeleteResponseValidationError is the validation error returned by +// CacheDeleteResponse.Validate if the designated constraints aren't met. +type CacheDeleteResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CacheDeleteResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CacheDeleteResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CacheDeleteResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CacheDeleteResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CacheDeleteResponseValidationError) ErrorName() string { + return "CacheDeleteResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e CacheDeleteResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCacheDeleteResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CacheDeleteResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CacheDeleteResponseValidationError{} + +// Validate checks the field values on ClassifierInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *ClassifierInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClassifierInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ClassifierInfoMultiError, +// or nil if none found. +func (m *ClassifierInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ClassifierInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PolicyName + + // no validation rules for PolicyHash + + // no validation rules for ClassifierIndex + + // no validation rules for Error + + if len(errors) > 0 { + return ClassifierInfoMultiError(errors) + } + + return nil +} + +// ClassifierInfoMultiError is an error wrapping multiple validation errors +// returned by ClassifierInfo.ValidateAll() if the designated constraints +// aren't met. +type ClassifierInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClassifierInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClassifierInfoMultiError) AllErrors() []error { return m } + +// ClassifierInfoValidationError is the validation error returned by +// ClassifierInfo.Validate if the designated constraints aren't met. +type ClassifierInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ClassifierInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ClassifierInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ClassifierInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ClassifierInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ClassifierInfoValidationError) ErrorName() string { return "ClassifierInfoValidationError" } + +// Error satisfies the builtin error interface +func (e ClassifierInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sClassifierInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ClassifierInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ClassifierInfoValidationError{} + +// Validate checks the field values on LimiterDecision with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *LimiterDecision) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on LimiterDecision with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// LimiterDecisionMultiError, or nil if none found. +func (m *LimiterDecision) ValidateAll() error { + return m.validate(true) +} + +func (m *LimiterDecision) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PolicyName + + // no validation rules for PolicyHash + + // no validation rules for ComponentId + + // no validation rules for Dropped + + // no validation rules for Reason + + // no validation rules for DeniedResponseStatusCode + + if all { + switch v := interface{}(m.GetWaitTime()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "WaitTime", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "WaitTime", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWaitTime()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LimiterDecisionValidationError{ + field: "WaitTime", + reason: "embedded message failed validation", + cause: err, + } + } + } + + switch v := m.Details.(type) { + case *LimiterDecision_RateLimiterInfo_: + if v == nil { + err := LimiterDecisionValidationError{ + field: "Details", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetRateLimiterInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "RateLimiterInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "RateLimiterInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRateLimiterInfo()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LimiterDecisionValidationError{ + field: "RateLimiterInfo", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *LimiterDecision_LoadSchedulerInfo: + if v == nil { + err := LimiterDecisionValidationError{ + field: "Details", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetLoadSchedulerInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "LoadSchedulerInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "LoadSchedulerInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLoadSchedulerInfo()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LimiterDecisionValidationError{ + field: "LoadSchedulerInfo", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *LimiterDecision_SamplerInfo_: + if v == nil { + err := LimiterDecisionValidationError{ + field: "Details", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetSamplerInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "SamplerInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "SamplerInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSamplerInfo()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LimiterDecisionValidationError{ + field: "SamplerInfo", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *LimiterDecision_QuotaSchedulerInfo_: + if v == nil { + err := LimiterDecisionValidationError{ + field: "Details", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetQuotaSchedulerInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "QuotaSchedulerInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LimiterDecisionValidationError{ + field: "QuotaSchedulerInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetQuotaSchedulerInfo()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LimiterDecisionValidationError{ + field: "QuotaSchedulerInfo", + reason: "embedded message failed validation", + cause: err, + } + } + } + + default: + _ = v // ensures v is used + } + + if len(errors) > 0 { + return LimiterDecisionMultiError(errors) + } + + return nil +} + +// LimiterDecisionMultiError is an error wrapping multiple validation errors +// returned by LimiterDecision.ValidateAll() if the designated constraints +// aren't met. +type LimiterDecisionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m LimiterDecisionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m LimiterDecisionMultiError) AllErrors() []error { return m } + +// LimiterDecisionValidationError is the validation error returned by +// LimiterDecision.Validate if the designated constraints aren't met. +type LimiterDecisionValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e LimiterDecisionValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e LimiterDecisionValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e LimiterDecisionValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e LimiterDecisionValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e LimiterDecisionValidationError) ErrorName() string { return "LimiterDecisionValidationError" } + +// Error satisfies the builtin error interface +func (e LimiterDecisionValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sLimiterDecision.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = LimiterDecisionValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = LimiterDecisionValidationError{} + +// Validate checks the field values on FluxMeterInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *FluxMeterInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on FluxMeterInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in FluxMeterInfoMultiError, or +// nil if none found. +func (m *FluxMeterInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *FluxMeterInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for FluxMeterName + + if len(errors) > 0 { + return FluxMeterInfoMultiError(errors) + } + + return nil +} + +// FluxMeterInfoMultiError is an error wrapping multiple validation errors +// returned by FluxMeterInfo.ValidateAll() if the designated constraints +// aren't met. +type FluxMeterInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m FluxMeterInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m FluxMeterInfoMultiError) AllErrors() []error { return m } + +// FluxMeterInfoValidationError is the validation error returned by +// FluxMeterInfo.Validate if the designated constraints aren't met. +type FluxMeterInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e FluxMeterInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e FluxMeterInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e FluxMeterInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e FluxMeterInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e FluxMeterInfoValidationError) ErrorName() string { return "FluxMeterInfoValidationError" } + +// Error satisfies the builtin error interface +func (e FluxMeterInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sFluxMeterInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = FluxMeterInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = FluxMeterInfoValidationError{} + +// Validate checks the field values on LimiterDecision_TokensInfo with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *LimiterDecision_TokensInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on LimiterDecision_TokensInfo with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// LimiterDecision_TokensInfoMultiError, or nil if none found. +func (m *LimiterDecision_TokensInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *LimiterDecision_TokensInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Remaining + + // no validation rules for Current + + // no validation rules for Consumed + + if len(errors) > 0 { + return LimiterDecision_TokensInfoMultiError(errors) + } + + return nil +} + +// LimiterDecision_TokensInfoMultiError is an error wrapping multiple +// validation errors returned by LimiterDecision_TokensInfo.ValidateAll() if +// the designated constraints aren't met. +type LimiterDecision_TokensInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m LimiterDecision_TokensInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m LimiterDecision_TokensInfoMultiError) AllErrors() []error { return m } + +// LimiterDecision_TokensInfoValidationError is the validation error returned +// by LimiterDecision_TokensInfo.Validate if the designated constraints aren't met. +type LimiterDecision_TokensInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e LimiterDecision_TokensInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e LimiterDecision_TokensInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e LimiterDecision_TokensInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e LimiterDecision_TokensInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e LimiterDecision_TokensInfoValidationError) ErrorName() string { + return "LimiterDecision_TokensInfoValidationError" +} + +// Error satisfies the builtin error interface +func (e LimiterDecision_TokensInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sLimiterDecision_TokensInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = LimiterDecision_TokensInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = LimiterDecision_TokensInfoValidationError{} + +// Validate checks the field values on LimiterDecision_RateLimiterInfo with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *LimiterDecision_RateLimiterInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on LimiterDecision_RateLimiterInfo with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// LimiterDecision_RateLimiterInfoMultiError, or nil if none found. +func (m *LimiterDecision_RateLimiterInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *LimiterDecision_RateLimiterInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Label + + if all { + switch v := interface{}(m.GetTokensInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LimiterDecision_RateLimiterInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LimiterDecision_RateLimiterInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTokensInfo()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LimiterDecision_RateLimiterInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return LimiterDecision_RateLimiterInfoMultiError(errors) + } + + return nil +} + +// LimiterDecision_RateLimiterInfoMultiError is an error wrapping multiple +// validation errors returned by LimiterDecision_RateLimiterInfo.ValidateAll() +// if the designated constraints aren't met. +type LimiterDecision_RateLimiterInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m LimiterDecision_RateLimiterInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m LimiterDecision_RateLimiterInfoMultiError) AllErrors() []error { return m } + +// LimiterDecision_RateLimiterInfoValidationError is the validation error +// returned by LimiterDecision_RateLimiterInfo.Validate if the designated +// constraints aren't met. +type LimiterDecision_RateLimiterInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e LimiterDecision_RateLimiterInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e LimiterDecision_RateLimiterInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e LimiterDecision_RateLimiterInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e LimiterDecision_RateLimiterInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e LimiterDecision_RateLimiterInfoValidationError) ErrorName() string { + return "LimiterDecision_RateLimiterInfoValidationError" +} + +// Error satisfies the builtin error interface +func (e LimiterDecision_RateLimiterInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sLimiterDecision_RateLimiterInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = LimiterDecision_RateLimiterInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = LimiterDecision_RateLimiterInfoValidationError{} + +// Validate checks the field values on LimiterDecision_SchedulerInfo with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *LimiterDecision_SchedulerInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on LimiterDecision_SchedulerInfo with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// LimiterDecision_SchedulerInfoMultiError, or nil if none found. +func (m *LimiterDecision_SchedulerInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *LimiterDecision_SchedulerInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for WorkloadIndex + + if all { + switch v := interface{}(m.GetTokensInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LimiterDecision_SchedulerInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LimiterDecision_SchedulerInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTokensInfo()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LimiterDecision_SchedulerInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Priority + + if len(errors) > 0 { + return LimiterDecision_SchedulerInfoMultiError(errors) + } + + return nil +} + +// LimiterDecision_SchedulerInfoMultiError is an error wrapping multiple +// validation errors returned by LimiterDecision_SchedulerInfo.ValidateAll() +// if the designated constraints aren't met. +type LimiterDecision_SchedulerInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m LimiterDecision_SchedulerInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m LimiterDecision_SchedulerInfoMultiError) AllErrors() []error { return m } + +// LimiterDecision_SchedulerInfoValidationError is the validation error +// returned by LimiterDecision_SchedulerInfo.Validate if the designated +// constraints aren't met. +type LimiterDecision_SchedulerInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e LimiterDecision_SchedulerInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e LimiterDecision_SchedulerInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e LimiterDecision_SchedulerInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e LimiterDecision_SchedulerInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e LimiterDecision_SchedulerInfoValidationError) ErrorName() string { + return "LimiterDecision_SchedulerInfoValidationError" +} + +// Error satisfies the builtin error interface +func (e LimiterDecision_SchedulerInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sLimiterDecision_SchedulerInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = LimiterDecision_SchedulerInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = LimiterDecision_SchedulerInfoValidationError{} + +// Validate checks the field values on LimiterDecision_SamplerInfo with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *LimiterDecision_SamplerInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on LimiterDecision_SamplerInfo with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// LimiterDecision_SamplerInfoMultiError, or nil if none found. +func (m *LimiterDecision_SamplerInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *LimiterDecision_SamplerInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Label + + if len(errors) > 0 { + return LimiterDecision_SamplerInfoMultiError(errors) + } + + return nil +} + +// LimiterDecision_SamplerInfoMultiError is an error wrapping multiple +// validation errors returned by LimiterDecision_SamplerInfo.ValidateAll() if +// the designated constraints aren't met. +type LimiterDecision_SamplerInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m LimiterDecision_SamplerInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m LimiterDecision_SamplerInfoMultiError) AllErrors() []error { return m } + +// LimiterDecision_SamplerInfoValidationError is the validation error returned +// by LimiterDecision_SamplerInfo.Validate if the designated constraints +// aren't met. +type LimiterDecision_SamplerInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e LimiterDecision_SamplerInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e LimiterDecision_SamplerInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e LimiterDecision_SamplerInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e LimiterDecision_SamplerInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e LimiterDecision_SamplerInfoValidationError) ErrorName() string { + return "LimiterDecision_SamplerInfoValidationError" +} + +// Error satisfies the builtin error interface +func (e LimiterDecision_SamplerInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sLimiterDecision_SamplerInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = LimiterDecision_SamplerInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = LimiterDecision_SamplerInfoValidationError{} + +// Validate checks the field values on LimiterDecision_QuotaSchedulerInfo with +// the rules defined in the proto definition for this message. If any rules +// are violated, the first error encountered is returned, or nil if there are +// no violations. +func (m *LimiterDecision_QuotaSchedulerInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on LimiterDecision_QuotaSchedulerInfo +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// LimiterDecision_QuotaSchedulerInfoMultiError, or nil if none found. +func (m *LimiterDecision_QuotaSchedulerInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *LimiterDecision_QuotaSchedulerInfo) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Label + + // no validation rules for WorkloadIndex + + if all { + switch v := interface{}(m.GetTokensInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LimiterDecision_QuotaSchedulerInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LimiterDecision_QuotaSchedulerInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTokensInfo()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return LimiterDecision_QuotaSchedulerInfoValidationError{ + field: "TokensInfo", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Priority + + if len(errors) > 0 { + return LimiterDecision_QuotaSchedulerInfoMultiError(errors) + } + + return nil +} + +// LimiterDecision_QuotaSchedulerInfoMultiError is an error wrapping multiple +// validation errors returned by +// LimiterDecision_QuotaSchedulerInfo.ValidateAll() if the designated +// constraints aren't met. +type LimiterDecision_QuotaSchedulerInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m LimiterDecision_QuotaSchedulerInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m LimiterDecision_QuotaSchedulerInfoMultiError) AllErrors() []error { return m } + +// LimiterDecision_QuotaSchedulerInfoValidationError is the validation error +// returned by LimiterDecision_QuotaSchedulerInfo.Validate if the designated +// constraints aren't met. +type LimiterDecision_QuotaSchedulerInfoValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e LimiterDecision_QuotaSchedulerInfoValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e LimiterDecision_QuotaSchedulerInfoValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e LimiterDecision_QuotaSchedulerInfoValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e LimiterDecision_QuotaSchedulerInfoValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e LimiterDecision_QuotaSchedulerInfoValidationError) ErrorName() string { + return "LimiterDecision_QuotaSchedulerInfoValidationError" +} + +// Error satisfies the builtin error interface +func (e LimiterDecision_QuotaSchedulerInfoValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sLimiterDecision_QuotaSchedulerInfo.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = LimiterDecision_QuotaSchedulerInfoValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = LimiterDecision_QuotaSchedulerInfoValidationError{} diff --git a/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check_grpc.pb.go b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check_grpc.pb.go new file mode 100644 index 0000000000..62e5cf85e4 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check_grpc.pb.go @@ -0,0 +1,183 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: aperture/flowcontrol/check/v1/check.proto + +package checkv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + FlowControlService_Check_FullMethodName = "/aperture.flowcontrol.check.v1.FlowControlService/Check" + FlowControlService_CacheUpsert_FullMethodName = "/aperture.flowcontrol.check.v1.FlowControlService/CacheUpsert" + FlowControlService_CacheDelete_FullMethodName = "/aperture.flowcontrol.check.v1.FlowControlService/CacheDelete" +) + +// FlowControlServiceClient is the client API for FlowControlService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type FlowControlServiceClient interface { + // Check wraps the given arbitrary resource and matches the given labels against Flow Control Limiters to makes a decision whether to allow/deny. + Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error) + CacheUpsert(ctx context.Context, in *CacheUpsertRequest, opts ...grpc.CallOption) (*CacheUpsertResponse, error) + CacheDelete(ctx context.Context, in *CacheDeleteRequest, opts ...grpc.CallOption) (*CacheDeleteResponse, error) +} + +type flowControlServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewFlowControlServiceClient(cc grpc.ClientConnInterface) FlowControlServiceClient { + return &flowControlServiceClient{cc} +} + +func (c *flowControlServiceClient) Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error) { + out := new(CheckResponse) + err := c.cc.Invoke(ctx, FlowControlService_Check_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *flowControlServiceClient) CacheUpsert(ctx context.Context, in *CacheUpsertRequest, opts ...grpc.CallOption) (*CacheUpsertResponse, error) { + out := new(CacheUpsertResponse) + err := c.cc.Invoke(ctx, FlowControlService_CacheUpsert_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *flowControlServiceClient) CacheDelete(ctx context.Context, in *CacheDeleteRequest, opts ...grpc.CallOption) (*CacheDeleteResponse, error) { + out := new(CacheDeleteResponse) + err := c.cc.Invoke(ctx, FlowControlService_CacheDelete_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// FlowControlServiceServer is the server API for FlowControlService service. +// All implementations should embed UnimplementedFlowControlServiceServer +// for forward compatibility +type FlowControlServiceServer interface { + // Check wraps the given arbitrary resource and matches the given labels against Flow Control Limiters to makes a decision whether to allow/deny. + Check(context.Context, *CheckRequest) (*CheckResponse, error) + CacheUpsert(context.Context, *CacheUpsertRequest) (*CacheUpsertResponse, error) + CacheDelete(context.Context, *CacheDeleteRequest) (*CacheDeleteResponse, error) +} + +// UnimplementedFlowControlServiceServer should be embedded to have forward compatible implementations. +type UnimplementedFlowControlServiceServer struct { +} + +func (UnimplementedFlowControlServiceServer) Check(context.Context, *CheckRequest) (*CheckResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Check not implemented") +} +func (UnimplementedFlowControlServiceServer) CacheUpsert(context.Context, *CacheUpsertRequest) (*CacheUpsertResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CacheUpsert not implemented") +} +func (UnimplementedFlowControlServiceServer) CacheDelete(context.Context, *CacheDeleteRequest) (*CacheDeleteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CacheDelete not implemented") +} + +// UnsafeFlowControlServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to FlowControlServiceServer will +// result in compilation errors. +type UnsafeFlowControlServiceServer interface { + mustEmbedUnimplementedFlowControlServiceServer() +} + +func RegisterFlowControlServiceServer(s grpc.ServiceRegistrar, srv FlowControlServiceServer) { + s.RegisterService(&FlowControlService_ServiceDesc, srv) +} + +func _FlowControlService_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CheckRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FlowControlServiceServer).Check(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FlowControlService_Check_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FlowControlServiceServer).Check(ctx, req.(*CheckRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _FlowControlService_CacheUpsert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CacheUpsertRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FlowControlServiceServer).CacheUpsert(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FlowControlService_CacheUpsert_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FlowControlServiceServer).CacheUpsert(ctx, req.(*CacheUpsertRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _FlowControlService_CacheDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CacheDeleteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FlowControlServiceServer).CacheDelete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FlowControlService_CacheDelete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FlowControlServiceServer).CacheDelete(ctx, req.(*CacheDeleteRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// FlowControlService_ServiceDesc is the grpc.ServiceDesc for FlowControlService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var FlowControlService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "aperture.flowcontrol.check.v1.FlowControlService", + HandlerType: (*FlowControlServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Check", + Handler: _FlowControlService_Check_Handler, + }, + { + MethodName: "CacheUpsert", + Handler: _FlowControlService_CacheUpsert_Handler, + }, + { + MethodName: "CacheDelete", + Handler: _FlowControlService_CacheDelete_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "aperture/flowcontrol/check/v1/check.proto", +} diff --git a/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check_vtproto.pb.go b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check_vtproto.pb.go new file mode 100644 index 0000000000..791bbb3319 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/check/v1/check_vtproto.pb.go @@ -0,0 +1,4518 @@ +// Code generated by protoc-gen-go-vtproto. DO NOT EDIT. +// protoc-gen-go-vtproto version: v0.5.0 +// source: aperture/flowcontrol/check/v1/check.proto + +package checkv1 + +import ( + binary "encoding/binary" + fmt "fmt" + proto "google.golang.org/protobuf/proto" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + io "io" + math "math" + bits "math/bits" + sync "sync" +) + +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) +) + +func (m *CheckRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CheckRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CheckRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.CacheKey) > 0 { + i -= len(m.CacheKey) + copy(dAtA[i:], m.CacheKey) + i = encodeVarint(dAtA, i, uint64(len(m.CacheKey))) + i-- + dAtA[i] = 0x22 + } + if m.RampMode { + i-- + if m.RampMode { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.Labels) > 0 { + for k := range m.Labels { + v := m.Labels[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarint(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarint(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarint(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x12 + } + } + if len(m.ControlPoint) > 0 { + i -= len(m.ControlPoint) + copy(dAtA[i:], m.ControlPoint) + i = encodeVarint(dAtA, i, uint64(len(m.ControlPoint))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CheckResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CheckResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CheckResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.CachedValue != nil { + size, err := m.CachedValue.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x7a + } + if m.DeniedResponseStatusCode != 0 { + i = encodeVarint(dAtA, i, uint64(m.DeniedResponseStatusCode)) + i-- + dAtA[i] = 0x70 + } + if m.WaitTime != nil { + if vtmsg, ok := interface{}(m.WaitTime).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.WaitTime) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x6a + } + if len(m.LimiterDecisions) > 0 { + for iNdEx := len(m.LimiterDecisions) - 1; iNdEx >= 0; iNdEx-- { + size, err := m.LimiterDecisions[iNdEx].MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x62 + } + } + if len(m.FluxMeterInfos) > 0 { + for iNdEx := len(m.FluxMeterInfos) - 1; iNdEx >= 0; iNdEx-- { + size, err := m.FluxMeterInfos[iNdEx].MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x5a + } + } + if len(m.ClassifierInfos) > 0 { + for iNdEx := len(m.ClassifierInfos) - 1; iNdEx >= 0; iNdEx-- { + size, err := m.ClassifierInfos[iNdEx].MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x52 + } + } + if m.RejectReason != 0 { + i = encodeVarint(dAtA, i, uint64(m.RejectReason)) + i-- + dAtA[i] = 0x48 + } + if m.DecisionType != 0 { + i = encodeVarint(dAtA, i, uint64(m.DecisionType)) + i-- + dAtA[i] = 0x40 + } + if len(m.TelemetryFlowLabels) > 0 { + for k := range m.TelemetryFlowLabels { + v := m.TelemetryFlowLabels[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarint(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarint(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarint(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x3a + } + } + if len(m.FlowLabelKeys) > 0 { + for iNdEx := len(m.FlowLabelKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.FlowLabelKeys[iNdEx]) + copy(dAtA[i:], m.FlowLabelKeys[iNdEx]) + i = encodeVarint(dAtA, i, uint64(len(m.FlowLabelKeys[iNdEx]))) + i-- + dAtA[i] = 0x32 + } + } + if len(m.ControlPoint) > 0 { + i -= len(m.ControlPoint) + copy(dAtA[i:], m.ControlPoint) + i = encodeVarint(dAtA, i, uint64(len(m.ControlPoint))) + i-- + dAtA[i] = 0x2a + } + if len(m.Services) > 0 { + for iNdEx := len(m.Services) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Services[iNdEx]) + copy(dAtA[i:], m.Services[iNdEx]) + i = encodeVarint(dAtA, i, uint64(len(m.Services[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if m.End != nil { + if vtmsg, ok := interface{}(m.End).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.End) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x12 + } + if m.Start != nil { + if vtmsg, ok := interface{}(m.Start).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.Start) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CachedValue) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CachedValue) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CachedValue) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarint(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x22 + } + if m.OperationStatus != 0 { + i = encodeVarint(dAtA, i, uint64(m.OperationStatus)) + i-- + dAtA[i] = 0x18 + } + if m.LookupStatus != 0 { + i = encodeVarint(dAtA, i, uint64(m.LookupStatus)) + i-- + dAtA[i] = 0x10 + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarint(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CacheUpsertRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CacheUpsertRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CacheUpsertRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Ttl != nil { + if vtmsg, ok := interface{}(m.Ttl).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.Ttl) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x22 + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarint(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x1a + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarint(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0x12 + } + if len(m.ControlPoint) > 0 { + i -= len(m.ControlPoint) + copy(dAtA[i:], m.ControlPoint) + i = encodeVarint(dAtA, i, uint64(len(m.ControlPoint))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CacheUpsertResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CacheUpsertResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CacheUpsertResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarint(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x12 + } + if m.OperationStatus != 0 { + i = encodeVarint(dAtA, i, uint64(m.OperationStatus)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *CacheDeleteRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CacheDeleteRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CacheDeleteRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarint(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0x12 + } + if len(m.ControlPoint) > 0 { + i -= len(m.ControlPoint) + copy(dAtA[i:], m.ControlPoint) + i = encodeVarint(dAtA, i, uint64(len(m.ControlPoint))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CacheDeleteResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CacheDeleteResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CacheDeleteResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarint(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x12 + } + if m.OperationStatus != 0 { + i = encodeVarint(dAtA, i, uint64(m.OperationStatus)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *ClassifierInfo) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClassifierInfo) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *ClassifierInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Error != 0 { + i = encodeVarint(dAtA, i, uint64(m.Error)) + i-- + dAtA[i] = 0x28 + } + if m.ClassifierIndex != 0 { + i = encodeVarint(dAtA, i, uint64(m.ClassifierIndex)) + i-- + dAtA[i] = 0x18 + } + if len(m.PolicyHash) > 0 { + i -= len(m.PolicyHash) + copy(dAtA[i:], m.PolicyHash) + i = encodeVarint(dAtA, i, uint64(len(m.PolicyHash))) + i-- + dAtA[i] = 0x12 + } + if len(m.PolicyName) > 0 { + i -= len(m.PolicyName) + copy(dAtA[i:], m.PolicyName) + i = encodeVarint(dAtA, i, uint64(len(m.PolicyName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LimiterDecision_TokensInfo) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimiterDecision_TokensInfo) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_TokensInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Consumed != 0 { + i -= 8 + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Consumed)))) + i-- + dAtA[i] = 0x19 + } + if m.Current != 0 { + i -= 8 + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Current)))) + i-- + dAtA[i] = 0x11 + } + if m.Remaining != 0 { + i -= 8 + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Remaining)))) + i-- + dAtA[i] = 0x9 + } + return len(dAtA) - i, nil +} + +func (m *LimiterDecision_RateLimiterInfo) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimiterDecision_RateLimiterInfo) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_RateLimiterInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.TokensInfo != nil { + size, err := m.TokensInfo.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + } + if len(m.Label) > 0 { + i -= len(m.Label) + copy(dAtA[i:], m.Label) + i = encodeVarint(dAtA, i, uint64(len(m.Label))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LimiterDecision_SchedulerInfo) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimiterDecision_SchedulerInfo) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_SchedulerInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Priority != 0 { + i -= 8 + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Priority)))) + i-- + dAtA[i] = 0x19 + } + if m.TokensInfo != nil { + size, err := m.TokensInfo.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + } + if len(m.WorkloadIndex) > 0 { + i -= len(m.WorkloadIndex) + copy(dAtA[i:], m.WorkloadIndex) + i = encodeVarint(dAtA, i, uint64(len(m.WorkloadIndex))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LimiterDecision_SamplerInfo) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimiterDecision_SamplerInfo) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_SamplerInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Label) > 0 { + i -= len(m.Label) + copy(dAtA[i:], m.Label) + i = encodeVarint(dAtA, i, uint64(len(m.Label))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LimiterDecision_QuotaSchedulerInfo) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimiterDecision_QuotaSchedulerInfo) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_QuotaSchedulerInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Priority != 0 { + i -= 8 + binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Priority)))) + i-- + dAtA[i] = 0x21 + } + if m.TokensInfo != nil { + size, err := m.TokensInfo.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x1a + } + if len(m.WorkloadIndex) > 0 { + i -= len(m.WorkloadIndex) + copy(dAtA[i:], m.WorkloadIndex) + i = encodeVarint(dAtA, i, uint64(len(m.WorkloadIndex))) + i-- + dAtA[i] = 0x12 + } + if len(m.Label) > 0 { + i -= len(m.Label) + copy(dAtA[i:], m.Label) + i = encodeVarint(dAtA, i, uint64(len(m.Label))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LimiterDecision) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LimiterDecision) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if vtmsg, ok := m.Details.(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + } + if m.WaitTime != nil { + if vtmsg, ok := interface{}(m.WaitTime).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.WaitTime) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x5a + } + if m.DeniedResponseStatusCode != 0 { + i = encodeVarint(dAtA, i, uint64(m.DeniedResponseStatusCode)) + i-- + dAtA[i] = 0x50 + } + if m.Reason != 0 { + i = encodeVarint(dAtA, i, uint64(m.Reason)) + i-- + dAtA[i] = 0x28 + } + if m.Dropped { + i-- + if m.Dropped { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if len(m.ComponentId) > 0 { + i -= len(m.ComponentId) + copy(dAtA[i:], m.ComponentId) + i = encodeVarint(dAtA, i, uint64(len(m.ComponentId))) + i-- + dAtA[i] = 0x1a + } + if len(m.PolicyHash) > 0 { + i -= len(m.PolicyHash) + copy(dAtA[i:], m.PolicyHash) + i = encodeVarint(dAtA, i, uint64(len(m.PolicyHash))) + i-- + dAtA[i] = 0x12 + } + if len(m.PolicyName) > 0 { + i -= len(m.PolicyName) + copy(dAtA[i:], m.PolicyName) + i = encodeVarint(dAtA, i, uint64(len(m.PolicyName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LimiterDecision_RateLimiterInfo_) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_RateLimiterInfo_) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.RateLimiterInfo != nil { + size, err := m.RateLimiterInfo.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + return len(dAtA) - i, nil +} +func (m *LimiterDecision_LoadSchedulerInfo) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_LoadSchedulerInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.LoadSchedulerInfo != nil { + size, err := m.LoadSchedulerInfo.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xaa + } + return len(dAtA) - i, nil +} +func (m *LimiterDecision_SamplerInfo_) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_SamplerInfo_) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.SamplerInfo != nil { + size, err := m.SamplerInfo.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb2 + } + return len(dAtA) - i, nil +} +func (m *LimiterDecision_QuotaSchedulerInfo_) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *LimiterDecision_QuotaSchedulerInfo_) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.QuotaSchedulerInfo != nil { + size, err := m.QuotaSchedulerInfo.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } + return len(dAtA) - i, nil +} +func (m *FluxMeterInfo) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *FluxMeterInfo) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *FluxMeterInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.FluxMeterName) > 0 { + i -= len(m.FluxMeterName) + copy(dAtA[i:], m.FluxMeterName) + i = encodeVarint(dAtA, i, uint64(len(m.FluxMeterName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarint(dAtA []byte, offset int, v uint64) int { + offset -= sov(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} + +var vtprotoPool_CheckResponse = sync.Pool{ + New: func() interface{} { + return &CheckResponse{} + }, +} + +func (m *CheckResponse) ResetVT() { + f0 := m.Services[:0] + f1 := m.FlowLabelKeys[:0] + for _, mm := range m.ClassifierInfos { + mm.Reset() + } + f2 := m.ClassifierInfos[:0] + for _, mm := range m.FluxMeterInfos { + mm.Reset() + } + f3 := m.FluxMeterInfos[:0] + for _, mm := range m.LimiterDecisions { + mm.Reset() + } + f4 := m.LimiterDecisions[:0] + m.Reset() + m.Services = f0 + m.FlowLabelKeys = f1 + m.ClassifierInfos = f2 + m.FluxMeterInfos = f3 + m.LimiterDecisions = f4 +} +func (m *CheckResponse) ReturnToVTPool() { + if m != nil { + m.ResetVT() + vtprotoPool_CheckResponse.Put(m) + } +} +func CheckResponseFromVTPool() *CheckResponse { + return vtprotoPool_CheckResponse.Get().(*CheckResponse) +} + +var vtprotoPool_LimiterDecision_SchedulerInfo = sync.Pool{ + New: func() interface{} { + return &LimiterDecision_SchedulerInfo{} + }, +} + +func (m *LimiterDecision_SchedulerInfo) ResetVT() { + m.Reset() +} +func (m *LimiterDecision_SchedulerInfo) ReturnToVTPool() { + if m != nil { + m.ResetVT() + vtprotoPool_LimiterDecision_SchedulerInfo.Put(m) + } +} +func LimiterDecision_SchedulerInfoFromVTPool() *LimiterDecision_SchedulerInfo { + return vtprotoPool_LimiterDecision_SchedulerInfo.Get().(*LimiterDecision_SchedulerInfo) +} +func (m *CheckRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ControlPoint) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if len(m.Labels) > 0 { + for k, v := range m.Labels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v))) + n += mapEntrySize + 1 + sov(uint64(mapEntrySize)) + } + } + if m.RampMode { + n += 2 + } + l = len(m.CacheKey) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CheckResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Start != nil { + if size, ok := interface{}(m.Start).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.Start) + } + n += 1 + l + sov(uint64(l)) + } + if m.End != nil { + if size, ok := interface{}(m.End).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.End) + } + n += 1 + l + sov(uint64(l)) + } + if len(m.Services) > 0 { + for _, s := range m.Services { + l = len(s) + n += 1 + l + sov(uint64(l)) + } + } + l = len(m.ControlPoint) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if len(m.FlowLabelKeys) > 0 { + for _, s := range m.FlowLabelKeys { + l = len(s) + n += 1 + l + sov(uint64(l)) + } + } + if len(m.TelemetryFlowLabels) > 0 { + for k, v := range m.TelemetryFlowLabels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v))) + n += mapEntrySize + 1 + sov(uint64(mapEntrySize)) + } + } + if m.DecisionType != 0 { + n += 1 + sov(uint64(m.DecisionType)) + } + if m.RejectReason != 0 { + n += 1 + sov(uint64(m.RejectReason)) + } + if len(m.ClassifierInfos) > 0 { + for _, e := range m.ClassifierInfos { + l = e.SizeVT() + n += 1 + l + sov(uint64(l)) + } + } + if len(m.FluxMeterInfos) > 0 { + for _, e := range m.FluxMeterInfos { + l = e.SizeVT() + n += 1 + l + sov(uint64(l)) + } + } + if len(m.LimiterDecisions) > 0 { + for _, e := range m.LimiterDecisions { + l = e.SizeVT() + n += 1 + l + sov(uint64(l)) + } + } + if m.WaitTime != nil { + if size, ok := interface{}(m.WaitTime).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.WaitTime) + } + n += 1 + l + sov(uint64(l)) + } + if m.DeniedResponseStatusCode != 0 { + n += 1 + sov(uint64(m.DeniedResponseStatusCode)) + } + if m.CachedValue != nil { + l = m.CachedValue.SizeVT() + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CachedValue) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Value) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.LookupStatus != 0 { + n += 1 + sov(uint64(m.LookupStatus)) + } + if m.OperationStatus != 0 { + n += 1 + sov(uint64(m.OperationStatus)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CacheUpsertRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ControlPoint) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.Key) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.Ttl != nil { + if size, ok := interface{}(m.Ttl).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.Ttl) + } + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CacheUpsertResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.OperationStatus != 0 { + n += 1 + sov(uint64(m.OperationStatus)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CacheDeleteRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ControlPoint) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.Key) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CacheDeleteResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.OperationStatus != 0 { + n += 1 + sov(uint64(m.OperationStatus)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *ClassifierInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.PolicyName) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.PolicyHash) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.ClassifierIndex != 0 { + n += 1 + sov(uint64(m.ClassifierIndex)) + } + if m.Error != 0 { + n += 1 + sov(uint64(m.Error)) + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision_TokensInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Remaining != 0 { + n += 9 + } + if m.Current != 0 { + n += 9 + } + if m.Consumed != 0 { + n += 9 + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision_RateLimiterInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Label) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.TokensInfo != nil { + l = m.TokensInfo.SizeVT() + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision_SchedulerInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.WorkloadIndex) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.TokensInfo != nil { + l = m.TokensInfo.SizeVT() + n += 1 + l + sov(uint64(l)) + } + if m.Priority != 0 { + n += 9 + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision_SamplerInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Label) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision_QuotaSchedulerInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Label) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.WorkloadIndex) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.TokensInfo != nil { + l = m.TokensInfo.SizeVT() + n += 1 + l + sov(uint64(l)) + } + if m.Priority != 0 { + n += 9 + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.PolicyName) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.PolicyHash) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.ComponentId) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.Dropped { + n += 2 + } + if m.Reason != 0 { + n += 1 + sov(uint64(m.Reason)) + } + if m.DeniedResponseStatusCode != 0 { + n += 1 + sov(uint64(m.DeniedResponseStatusCode)) + } + if m.WaitTime != nil { + if size, ok := interface{}(m.WaitTime).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.WaitTime) + } + n += 1 + l + sov(uint64(l)) + } + if vtmsg, ok := m.Details.(interface{ SizeVT() int }); ok { + n += vtmsg.SizeVT() + } + n += len(m.unknownFields) + return n +} + +func (m *LimiterDecision_RateLimiterInfo_) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.RateLimiterInfo != nil { + l = m.RateLimiterInfo.SizeVT() + n += 2 + l + sov(uint64(l)) + } + return n +} +func (m *LimiterDecision_LoadSchedulerInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.LoadSchedulerInfo != nil { + l = m.LoadSchedulerInfo.SizeVT() + n += 2 + l + sov(uint64(l)) + } + return n +} +func (m *LimiterDecision_SamplerInfo_) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.SamplerInfo != nil { + l = m.SamplerInfo.SizeVT() + n += 2 + l + sov(uint64(l)) + } + return n +} +func (m *LimiterDecision_QuotaSchedulerInfo_) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.QuotaSchedulerInfo != nil { + l = m.QuotaSchedulerInfo.SizeVT() + n += 2 + l + sov(uint64(l)) + } + return n +} +func (m *FluxMeterInfo) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.FluxMeterName) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func sov(x uint64) (n int) { + return (bits.Len64(x|1) + 6) / 7 +} +func soz(x uint64) (n int) { + return sov(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *CheckRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CheckRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ControlPoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ControlPoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Labels == nil { + m.Labels = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLength + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLength + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLength + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLength + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Labels[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RampMode", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RampMode = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CacheKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CacheKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CheckResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CheckResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Start", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Start == nil { + m.Start = ×tamppb.Timestamp{} + } + if unmarshal, ok := interface{}(m.Start).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Start); err != nil { + return err + } + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field End", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.End == nil { + m.End = ×tamppb.Timestamp{} + } + if unmarshal, ok := interface{}(m.End).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.End); err != nil { + return err + } + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Services", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Services = append(m.Services, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ControlPoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ControlPoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FlowLabelKeys", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FlowLabelKeys = append(m.FlowLabelKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TelemetryFlowLabels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TelemetryFlowLabels == nil { + m.TelemetryFlowLabels = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLength + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLength + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLength + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLength + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.TelemetryFlowLabels[mapkey] = mapvalue + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DecisionType", wireType) + } + m.DecisionType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DecisionType |= CheckResponse_DecisionType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RejectReason", wireType) + } + m.RejectReason = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RejectReason |= CheckResponse_RejectReason(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClassifierInfos", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if len(m.ClassifierInfos) == cap(m.ClassifierInfos) { + m.ClassifierInfos = append(m.ClassifierInfos, &ClassifierInfo{}) + } else { + m.ClassifierInfos = m.ClassifierInfos[:len(m.ClassifierInfos)+1] + if m.ClassifierInfos[len(m.ClassifierInfos)-1] == nil { + m.ClassifierInfos[len(m.ClassifierInfos)-1] = &ClassifierInfo{} + } + } + if err := m.ClassifierInfos[len(m.ClassifierInfos)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FluxMeterInfos", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if len(m.FluxMeterInfos) == cap(m.FluxMeterInfos) { + m.FluxMeterInfos = append(m.FluxMeterInfos, &FluxMeterInfo{}) + } else { + m.FluxMeterInfos = m.FluxMeterInfos[:len(m.FluxMeterInfos)+1] + if m.FluxMeterInfos[len(m.FluxMeterInfos)-1] == nil { + m.FluxMeterInfos[len(m.FluxMeterInfos)-1] = &FluxMeterInfo{} + } + } + if err := m.FluxMeterInfos[len(m.FluxMeterInfos)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LimiterDecisions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if len(m.LimiterDecisions) == cap(m.LimiterDecisions) { + m.LimiterDecisions = append(m.LimiterDecisions, &LimiterDecision{}) + } else { + m.LimiterDecisions = m.LimiterDecisions[:len(m.LimiterDecisions)+1] + if m.LimiterDecisions[len(m.LimiterDecisions)-1] == nil { + m.LimiterDecisions[len(m.LimiterDecisions)-1] = &LimiterDecision{} + } + } + if err := m.LimiterDecisions[len(m.LimiterDecisions)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WaitTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.WaitTime == nil { + m.WaitTime = &durationpb.Duration{} + } + if unmarshal, ok := interface{}(m.WaitTime).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.WaitTime); err != nil { + return err + } + } + iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DeniedResponseStatusCode", wireType) + } + m.DeniedResponseStatusCode = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DeniedResponseStatusCode |= StatusCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CachedValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CachedValue == nil { + m.CachedValue = &CachedValue{} + } + if err := m.CachedValue.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CachedValue) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CachedValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CachedValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) + if m.Value == nil { + m.Value = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LookupStatus", wireType) + } + m.LookupStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LookupStatus |= CacheLookupStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OperationStatus", wireType) + } + m.OperationStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OperationStatus |= CacheOperationStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CacheUpsertRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CacheUpsertRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CacheUpsertRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ControlPoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ControlPoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...) + if m.Value == nil { + m.Value = []byte{} + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ttl", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Ttl == nil { + m.Ttl = &durationpb.Duration{} + } + if unmarshal, ok := interface{}(m.Ttl).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Ttl); err != nil { + return err + } + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CacheUpsertResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CacheUpsertResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CacheUpsertResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OperationStatus", wireType) + } + m.OperationStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OperationStatus |= CacheOperationStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CacheDeleteRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CacheDeleteRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CacheDeleteRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ControlPoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ControlPoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CacheDeleteResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CacheDeleteResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CacheDeleteResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OperationStatus", wireType) + } + m.OperationStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OperationStatus |= CacheOperationStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClassifierInfo) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClassifierInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClassifierInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyHash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ClassifierIndex", wireType) + } + m.ClassifierIndex = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ClassifierIndex |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + m.Error = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Error |= ClassifierInfo_Error(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimiterDecision_TokensInfo) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimiterDecision_TokensInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimiterDecision_TokensInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Remaining", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.Remaining = float64(math.Float64frombits(v)) + case 2: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Current", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.Current = float64(math.Float64frombits(v)) + case 3: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Consumed", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.Consumed = float64(math.Float64frombits(v)) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimiterDecision_RateLimiterInfo) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimiterDecision_RateLimiterInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimiterDecision_RateLimiterInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Label", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Label = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokensInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TokensInfo == nil { + m.TokensInfo = &LimiterDecision_TokensInfo{} + } + if err := m.TokensInfo.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimiterDecision_SchedulerInfo) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimiterDecision_SchedulerInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimiterDecision_SchedulerInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WorkloadIndex", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WorkloadIndex = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokensInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TokensInfo == nil { + m.TokensInfo = &LimiterDecision_TokensInfo{} + } + if err := m.TokensInfo.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Priority", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.Priority = float64(math.Float64frombits(v)) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimiterDecision_SamplerInfo) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimiterDecision_SamplerInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimiterDecision_SamplerInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Label", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Label = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimiterDecision_QuotaSchedulerInfo) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimiterDecision_QuotaSchedulerInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimiterDecision_QuotaSchedulerInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Label", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Label = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WorkloadIndex", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WorkloadIndex = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokensInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TokensInfo == nil { + m.TokensInfo = &LimiterDecision_TokensInfo{} + } + if err := m.TokensInfo.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 1 { + return fmt.Errorf("proto: wrong wireType = %d for field Priority", wireType) + } + var v uint64 + if (iNdEx + 8) > l { + return io.ErrUnexpectedEOF + } + v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + iNdEx += 8 + m.Priority = float64(math.Float64frombits(v)) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimiterDecision) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimiterDecision: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimiterDecision: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyHash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PolicyHash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ComponentId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ComponentId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Dropped", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Dropped = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + m.Reason = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Reason |= LimiterDecision_LimiterReason(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DeniedResponseStatusCode", wireType) + } + m.DeniedResponseStatusCode = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DeniedResponseStatusCode |= StatusCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WaitTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.WaitTime == nil { + m.WaitTime = &durationpb.Duration{} + } + if unmarshal, ok := interface{}(m.WaitTime).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.WaitTime); err != nil { + return err + } + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RateLimiterInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.Details.(*LimiterDecision_RateLimiterInfo_); ok { + if err := oneof.RateLimiterInfo.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + v := &LimiterDecision_RateLimiterInfo{} + if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Details = &LimiterDecision_RateLimiterInfo_{RateLimiterInfo: v} + } + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadSchedulerInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.Details.(*LimiterDecision_LoadSchedulerInfo); ok { + if err := oneof.LoadSchedulerInfo.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + v := &LimiterDecision_SchedulerInfo{} + if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Details = &LimiterDecision_LoadSchedulerInfo{LoadSchedulerInfo: v} + } + iNdEx = postIndex + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SamplerInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.Details.(*LimiterDecision_SamplerInfo_); ok { + if err := oneof.SamplerInfo.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + v := &LimiterDecision_SamplerInfo{} + if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Details = &LimiterDecision_SamplerInfo_{SamplerInfo: v} + } + iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QuotaSchedulerInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.Details.(*LimiterDecision_QuotaSchedulerInfo_); ok { + if err := oneof.QuotaSchedulerInfo.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + v := &LimiterDecision_QuotaSchedulerInfo{} + if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Details = &LimiterDecision_QuotaSchedulerInfo_{QuotaSchedulerInfo: v} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FluxMeterInfo) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FluxMeterInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FluxMeterInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FluxMeterName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FluxMeterName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + +func skip(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflow + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflow + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflow + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLength + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroup + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLength + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLength = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflow = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroup = fmt.Errorf("proto: unexpected end of group") +) diff --git a/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.go b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.go new file mode 100644 index 0000000000..5f01a4670d --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.go @@ -0,0 +1,885 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: aperture/flowcontrol/checkhttp/v1/checkhttp.proto + +package checkhttpv1 + +import ( + _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" + _ "google.golang.org/genproto/googleapis/api/annotations" + status "google.golang.org/genproto/googleapis/rpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" +) + +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 SocketAddress_Protocol int32 + +const ( + SocketAddress_TCP SocketAddress_Protocol = 0 + SocketAddress_UDP SocketAddress_Protocol = 1 +) + +// Enum value maps for SocketAddress_Protocol. +var ( + SocketAddress_Protocol_name = map[int32]string{ + 0: "TCP", + 1: "UDP", + } + SocketAddress_Protocol_value = map[string]int32{ + "TCP": 0, + "UDP": 1, + } +) + +func (x SocketAddress_Protocol) Enum() *SocketAddress_Protocol { + p := new(SocketAddress_Protocol) + *p = x + return p +} + +func (x SocketAddress_Protocol) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SocketAddress_Protocol) Descriptor() protoreflect.EnumDescriptor { + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_enumTypes[0].Descriptor() +} + +func (SocketAddress_Protocol) Type() protoreflect.EnumType { + return &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_enumTypes[0] +} + +func (x SocketAddress_Protocol) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SocketAddress_Protocol.Descriptor instead. +func (SocketAddress_Protocol) EnumDescriptor() ([]byte, []int) { + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescGZIP(), []int{4, 0} +} + +type CheckHTTPRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The source of a network activity, such as starting a TCP connection. + // In a multi hop network activity, the source represents the sender of the + // last hop. + Source *SocketAddress `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // The destination of a network activity, such as accepting a TCP connection. + // In a multi hop network activity, the destination represents the receiver of + // the last hop. + Destination *SocketAddress `protobuf:"bytes,2,opt,name=destination,proto3" json:"destination,omitempty"` + // Represents a network request, such as an HTTP request. + Request *CheckHTTPRequest_HttpRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + // For an SDK based insertion, a Control Point can represent a particular feature or execution block within a Service. + // In case of Service Mesh or Middleware insertion, a Control Point can identify ingress vs egress calls or distinct listeners or filter chains. + ControlPoint string `protobuf:"bytes,4,opt,name=control_point,json=controlPoint,proto3" json:"control_point,omitempty"` + // A flow with ramp_mode flag will only be accepted if at least one ramp component matches and accepts the flow. + RampMode bool `protobuf:"varint,5,opt,name=ramp_mode,json=rampMode,proto3" json:"ramp_mode,omitempty"` +} + +func (x *CheckHTTPRequest) Reset() { + *x = CheckHTTPRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckHTTPRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckHTTPRequest) ProtoMessage() {} + +func (x *CheckHTTPRequest) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_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 CheckHTTPRequest.ProtoReflect.Descriptor instead. +func (*CheckHTTPRequest) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescGZIP(), []int{0} +} + +func (x *CheckHTTPRequest) GetSource() *SocketAddress { + if x != nil { + return x.Source + } + return nil +} + +func (x *CheckHTTPRequest) GetDestination() *SocketAddress { + if x != nil { + return x.Destination + } + return nil +} + +func (x *CheckHTTPRequest) GetRequest() *CheckHTTPRequest_HttpRequest { + if x != nil { + return x.Request + } + return nil +} + +func (x *CheckHTTPRequest) GetControlPoint() string { + if x != nil { + return x.ControlPoint + } + return "" +} + +func (x *CheckHTTPRequest) GetRampMode() bool { + if x != nil { + return x.RampMode + } + return false +} + +// HTTP attributes for a denied response. +type DeniedHttpResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This field allows the authorization service to send an HTTP response status code to the + // downstream client. If not set, Envoy sends `403 Forbidden` HTTP status code by default. + Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` + // This field allows the authorization service to send HTTP response headers + // to the downstream client. + Headers map[string]string `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // This field allows the authorization service to send a response body data + // to the downstream client. + Body string `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"` +} + +func (x *DeniedHttpResponse) Reset() { + *x = DeniedHttpResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeniedHttpResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeniedHttpResponse) ProtoMessage() {} + +func (x *DeniedHttpResponse) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[1] + 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 DeniedHttpResponse.ProtoReflect.Descriptor instead. +func (*DeniedHttpResponse) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescGZIP(), []int{1} +} + +func (x *DeniedHttpResponse) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *DeniedHttpResponse) GetHeaders() map[string]string { + if x != nil { + return x.Headers + } + return nil +} + +func (x *DeniedHttpResponse) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +// HTTP attributes for an OK response. +type OkHttpResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // HTTP entity headers in addition to the original request headers. + Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + DynamicMetadata *structpb.Struct `protobuf:"bytes,2,opt,name=dynamic_metadata,json=dynamicMetadata,proto3" json:"dynamic_metadata,omitempty"` +} + +func (x *OkHttpResponse) Reset() { + *x = OkHttpResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OkHttpResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OkHttpResponse) ProtoMessage() {} + +func (x *OkHttpResponse) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[2] + 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 OkHttpResponse.ProtoReflect.Descriptor instead. +func (*OkHttpResponse) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescGZIP(), []int{2} +} + +func (x *OkHttpResponse) GetHeaders() map[string]string { + if x != nil { + return x.Headers + } + return nil +} + +func (x *OkHttpResponse) GetDynamicMetadata() *structpb.Struct { + if x != nil { + return x.DynamicMetadata + } + return nil +} + +type CheckHTTPResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Status `OK` allows the request. Any other status indicates the request should be denied + Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + // An message that contains HTTP response attributes. + // + // Types that are assignable to HttpResponse: + // + // *CheckHTTPResponse_DeniedResponse + // *CheckHTTPResponse_OkResponse + HttpResponse isCheckHTTPResponse_HttpResponse `protobuf_oneof:"http_response"` + // Optional response metadata that will be emitted as dynamic metadata to be consumed by the next + // filter. + DynamicMetadata *structpb.Struct `protobuf:"bytes,4,opt,name=dynamic_metadata,json=dynamicMetadata,proto3" json:"dynamic_metadata,omitempty"` +} + +func (x *CheckHTTPResponse) Reset() { + *x = CheckHTTPResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckHTTPResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckHTTPResponse) ProtoMessage() {} + +func (x *CheckHTTPResponse) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[3] + 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 CheckHTTPResponse.ProtoReflect.Descriptor instead. +func (*CheckHTTPResponse) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescGZIP(), []int{3} +} + +func (x *CheckHTTPResponse) GetStatus() *status.Status { + if x != nil { + return x.Status + } + return nil +} + +func (m *CheckHTTPResponse) GetHttpResponse() isCheckHTTPResponse_HttpResponse { + if m != nil { + return m.HttpResponse + } + return nil +} + +func (x *CheckHTTPResponse) GetDeniedResponse() *DeniedHttpResponse { + if x, ok := x.GetHttpResponse().(*CheckHTTPResponse_DeniedResponse); ok { + return x.DeniedResponse + } + return nil +} + +func (x *CheckHTTPResponse) GetOkResponse() *OkHttpResponse { + if x, ok := x.GetHttpResponse().(*CheckHTTPResponse_OkResponse); ok { + return x.OkResponse + } + return nil +} + +func (x *CheckHTTPResponse) GetDynamicMetadata() *structpb.Struct { + if x != nil { + return x.DynamicMetadata + } + return nil +} + +type isCheckHTTPResponse_HttpResponse interface { + isCheckHTTPResponse_HttpResponse() +} + +type CheckHTTPResponse_DeniedResponse struct { + // Supplies http attributes for a denied response. + DeniedResponse *DeniedHttpResponse `protobuf:"bytes,2,opt,name=denied_response,json=deniedResponse,proto3,oneof"` +} + +type CheckHTTPResponse_OkResponse struct { + // Supplies http attributes for an ok response. + OkResponse *OkHttpResponse `protobuf:"bytes,3,opt,name=ok_response,json=okResponse,proto3,oneof"` +} + +func (*CheckHTTPResponse_DeniedResponse) isCheckHTTPResponse_HttpResponse() {} + +func (*CheckHTTPResponse_OkResponse) isCheckHTTPResponse_HttpResponse() {} + +type SocketAddress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Protocol SocketAddress_Protocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=aperture.flowcontrol.checkhttp.v1.SocketAddress_Protocol" json:"protocol,omitempty"` + // The address for this socket. + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // The port for this socket. + Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"` +} + +func (x *SocketAddress) Reset() { + *x = SocketAddress{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SocketAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SocketAddress) ProtoMessage() {} + +func (x *SocketAddress) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[4] + 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 SocketAddress.ProtoReflect.Descriptor instead. +func (*SocketAddress) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescGZIP(), []int{4} +} + +func (x *SocketAddress) GetProtocol() SocketAddress_Protocol { + if x != nil { + return x.Protocol + } + return SocketAddress_TCP +} + +func (x *SocketAddress) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *SocketAddress) GetPort() uint32 { + if x != nil { + return x.Port + } + return 0 +} + +// This message defines attributes for an HTTP request. +// HTTP/1.x, HTTP/2, gRPC are all considered as HTTP requests. +type CheckHTTPRequest_HttpRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The HTTP request method, such as `GET`, `POST`. + Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"` + // The HTTP request headers. + Headers map[string]string `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // The request target, as it appears in the first line of the HTTP request. This includes + // the URL path and query-string. No decoding is performed. + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + // The HTTP request `Host` header value. + Host string `protobuf:"bytes,4,opt,name=host,proto3" json:"host,omitempty"` + // The HTTP URL scheme, such as `http` and `https`. + Scheme string `protobuf:"bytes,5,opt,name=scheme,proto3" json:"scheme,omitempty"` + // The HTTP request size in bytes. If unknown, it must be -1. + Size int64 `protobuf:"varint,6,opt,name=size,proto3" json:"size,omitempty"` + // The network protocol used with the request, such as "HTTP/1.0", "HTTP/1.1", or "HTTP/2". + Protocol string `protobuf:"bytes,7,opt,name=protocol,proto3" json:"protocol,omitempty"` + // The HTTP request body. + Body string `protobuf:"bytes,8,opt,name=body,proto3" json:"body,omitempty"` +} + +func (x *CheckHTTPRequest_HttpRequest) Reset() { + *x = CheckHTTPRequest_HttpRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckHTTPRequest_HttpRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckHTTPRequest_HttpRequest) ProtoMessage() {} + +func (x *CheckHTTPRequest_HttpRequest) ProtoReflect() protoreflect.Message { + mi := &file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[5] + 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 CheckHTTPRequest_HttpRequest.ProtoReflect.Descriptor instead. +func (*CheckHTTPRequest_HttpRequest) Descriptor() ([]byte, []int) { + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *CheckHTTPRequest_HttpRequest) GetMethod() string { + if x != nil { + return x.Method + } + return "" +} + +func (x *CheckHTTPRequest_HttpRequest) GetHeaders() map[string]string { + if x != nil { + return x.Headers + } + return nil +} + +func (x *CheckHTTPRequest_HttpRequest) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *CheckHTTPRequest_HttpRequest) GetHost() string { + if x != nil { + return x.Host + } + return "" +} + +func (x *CheckHTTPRequest_HttpRequest) GetScheme() string { + if x != nil { + return x.Scheme + } + return "" +} + +func (x *CheckHTTPRequest_HttpRequest) GetSize() int64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *CheckHTTPRequest_HttpRequest) GetProtocol() string { + if x != nil { + return x.Protocol + } + return "" +} + +func (x *CheckHTTPRequest_HttpRequest) GetBody() string { + if x != nil { + return x.Body + } + return "" +} + +var File_aperture_flowcontrol_checkhttp_v1_checkhttp_proto protoreflect.FileDescriptor + +var file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDesc = []byte{ + 0x0a, 0x31, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x66, 0x6c, 0x6f, 0x77, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, + 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, + 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, + 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x05, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, + 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, + 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, + 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x74, + 0x74, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x61, 0x6d, 0x70, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x61, 0x6d, 0x70, + 0x4d, 0x6f, 0x64, 0x65, 0x1a, 0xcd, 0x02, 0x0a, 0x0b, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x66, 0x0a, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, + 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xda, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x48, + 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x5c, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x48, + 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xea, 0x01, 0x0a, 0x0e, 0x4f, 0x6b, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6b, 0x48, 0x74, 0x74, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x42, + 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc, + 0x02, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x60, 0x0a, 0x0f, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6e, 0x69, 0x65, 0x64, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6b, 0x48, 0x74, + 0x74, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, + 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0f, 0x64, 0x79, 0x6e, + 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0f, 0x0a, 0x0d, + 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd0, 0x01, + 0x0a, 0x0d, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x5f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x39, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, + 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, + 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x08, 0xfa, 0x42, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x12, 0x21, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x2a, 0x04, 0x18, 0xff, 0xff, 0x03, 0x52, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x22, 0x1c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, + 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x01, + 0x32, 0xca, 0x01, 0x0a, 0x16, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x54, 0x54, 0x50, 0x12, 0xaf, 0x01, 0x0a, 0x09, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x12, 0x33, 0x2e, 0x61, 0x70, 0x65, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, + 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x54, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x10, 0x0a, 0x0e, 0x61, 0x70, 0x65, 0x72, 0x74, + 0x75, 0x72, 0x65, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, + 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x42, 0xd3, 0x02, + 0x0a, 0x39, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x75, 0x78, 0x6e, 0x69, 0x6e, 0x6a, 0x61, 0x2e, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, + 0x72, 0x65, 0x2e, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x75, 0x78, 0x6e, 0x69, + 0x6e, 0x6a, 0x61, 0x2f, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x76, 0x32, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x2f, 0x61, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2f, 0x66, 0x6c, 0x6f, 0x77, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2f, + 0x76, 0x31, 0x3b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x41, 0x46, 0x43, 0xaa, 0x02, 0x21, 0x41, 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x21, 0x41, 0x70, 0x65, 0x72, 0x74, + 0x75, 0x72, 0x65, 0x5c, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5c, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x2d, 0x41, + 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x5c, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x5c, 0x56, 0x31, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, + 0x70, 0x65, 0x72, 0x74, 0x75, 0x72, 0x65, 0x3a, 0x3a, 0x46, 0x6c, 0x6f, 0x77, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescOnce sync.Once + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescData = file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDesc +) + +func file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescGZIP() []byte { + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescOnce.Do(func() { + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescData = protoimpl.X.CompressGZIP(file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescData) + }) + return file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDescData +} + +var file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_goTypes = []interface{}{ + (SocketAddress_Protocol)(0), // 0: aperture.flowcontrol.checkhttp.v1.SocketAddress.Protocol + (*CheckHTTPRequest)(nil), // 1: aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest + (*DeniedHttpResponse)(nil), // 2: aperture.flowcontrol.checkhttp.v1.DeniedHttpResponse + (*OkHttpResponse)(nil), // 3: aperture.flowcontrol.checkhttp.v1.OkHttpResponse + (*CheckHTTPResponse)(nil), // 4: aperture.flowcontrol.checkhttp.v1.CheckHTTPResponse + (*SocketAddress)(nil), // 5: aperture.flowcontrol.checkhttp.v1.SocketAddress + (*CheckHTTPRequest_HttpRequest)(nil), // 6: aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest.HttpRequest + nil, // 7: aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest.HttpRequest.HeadersEntry + nil, // 8: aperture.flowcontrol.checkhttp.v1.DeniedHttpResponse.HeadersEntry + nil, // 9: aperture.flowcontrol.checkhttp.v1.OkHttpResponse.HeadersEntry + (*structpb.Struct)(nil), // 10: google.protobuf.Struct + (*status.Status)(nil), // 11: google.rpc.Status +} +var file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_depIdxs = []int32{ + 5, // 0: aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest.source:type_name -> aperture.flowcontrol.checkhttp.v1.SocketAddress + 5, // 1: aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest.destination:type_name -> aperture.flowcontrol.checkhttp.v1.SocketAddress + 6, // 2: aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest.request:type_name -> aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest.HttpRequest + 8, // 3: aperture.flowcontrol.checkhttp.v1.DeniedHttpResponse.headers:type_name -> aperture.flowcontrol.checkhttp.v1.DeniedHttpResponse.HeadersEntry + 9, // 4: aperture.flowcontrol.checkhttp.v1.OkHttpResponse.headers:type_name -> aperture.flowcontrol.checkhttp.v1.OkHttpResponse.HeadersEntry + 10, // 5: aperture.flowcontrol.checkhttp.v1.OkHttpResponse.dynamic_metadata:type_name -> google.protobuf.Struct + 11, // 6: aperture.flowcontrol.checkhttp.v1.CheckHTTPResponse.status:type_name -> google.rpc.Status + 2, // 7: aperture.flowcontrol.checkhttp.v1.CheckHTTPResponse.denied_response:type_name -> aperture.flowcontrol.checkhttp.v1.DeniedHttpResponse + 3, // 8: aperture.flowcontrol.checkhttp.v1.CheckHTTPResponse.ok_response:type_name -> aperture.flowcontrol.checkhttp.v1.OkHttpResponse + 10, // 9: aperture.flowcontrol.checkhttp.v1.CheckHTTPResponse.dynamic_metadata:type_name -> google.protobuf.Struct + 0, // 10: aperture.flowcontrol.checkhttp.v1.SocketAddress.protocol:type_name -> aperture.flowcontrol.checkhttp.v1.SocketAddress.Protocol + 7, // 11: aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest.HttpRequest.headers:type_name -> aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest.HttpRequest.HeadersEntry + 1, // 12: aperture.flowcontrol.checkhttp.v1.FlowControlServiceHTTP.CheckHTTP:input_type -> aperture.flowcontrol.checkhttp.v1.CheckHTTPRequest + 4, // 13: aperture.flowcontrol.checkhttp.v1.FlowControlServiceHTTP.CheckHTTP:output_type -> aperture.flowcontrol.checkhttp.v1.CheckHTTPResponse + 13, // [13:14] is the sub-list for method output_type + 12, // [12:13] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name +} + +func init() { file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_init() } +func file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_init() { + if File_aperture_flowcontrol_checkhttp_v1_checkhttp_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckHTTPRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeniedHttpResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OkHttpResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckHTTPResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SocketAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CheckHTTPRequest_HttpRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes[3].OneofWrappers = []interface{}{ + (*CheckHTTPResponse_DeniedResponse)(nil), + (*CheckHTTPResponse_OkResponse)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDesc, + NumEnums: 1, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_goTypes, + DependencyIndexes: file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_depIdxs, + EnumInfos: file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_enumTypes, + MessageInfos: file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_msgTypes, + }.Build() + File_aperture_flowcontrol_checkhttp_v1_checkhttp_proto = out.File + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_rawDesc = nil + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_goTypes = nil + file_aperture_flowcontrol_checkhttp_v1_checkhttp_proto_depIdxs = nil +} diff --git a/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.gw.go b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.gw.go new file mode 100644 index 0000000000..6401904c84 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.gw.go @@ -0,0 +1,171 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: aperture/flowcontrol/checkhttp/v1/checkhttp.proto + +/* +Package checkhttpv1 is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package checkhttpv1 + +import ( + "context" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = metadata.Join + +func request_FlowControlServiceHTTP_CheckHTTP_0(ctx context.Context, marshaler runtime.Marshaler, client FlowControlServiceHTTPClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CheckHTTPRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.CheckHTTP(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_FlowControlServiceHTTP_CheckHTTP_0(ctx context.Context, marshaler runtime.Marshaler, server FlowControlServiceHTTPServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CheckHTTPRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.CheckHTTP(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterFlowControlServiceHTTPHandlerServer registers the http handlers for service FlowControlServiceHTTP to "mux". +// UnaryRPC :call FlowControlServiceHTTPServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterFlowControlServiceHTTPHandlerFromEndpoint instead. +func RegisterFlowControlServiceHTTPHandlerServer(ctx context.Context, mux *runtime.ServeMux, server FlowControlServiceHTTPServer) error { + + mux.Handle("POST", pattern_FlowControlServiceHTTP_CheckHTTP_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/aperture.flowcontrol.checkhttp.v1.FlowControlServiceHTTP/CheckHTTP", runtime.WithHTTPPathPattern("/v1/flowcontrol/checkhttp")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_FlowControlServiceHTTP_CheckHTTP_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_FlowControlServiceHTTP_CheckHTTP_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterFlowControlServiceHTTPHandlerFromEndpoint is same as RegisterFlowControlServiceHTTPHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterFlowControlServiceHTTPHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.DialContext(ctx, endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterFlowControlServiceHTTPHandler(ctx, mux, conn) +} + +// RegisterFlowControlServiceHTTPHandler registers the http handlers for service FlowControlServiceHTTP to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterFlowControlServiceHTTPHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterFlowControlServiceHTTPHandlerClient(ctx, mux, NewFlowControlServiceHTTPClient(conn)) +} + +// RegisterFlowControlServiceHTTPHandlerClient registers the http handlers for service FlowControlServiceHTTP +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "FlowControlServiceHTTPClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "FlowControlServiceHTTPClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "FlowControlServiceHTTPClient" to call the correct interceptors. +func RegisterFlowControlServiceHTTPHandlerClient(ctx context.Context, mux *runtime.ServeMux, client FlowControlServiceHTTPClient) error { + + mux.Handle("POST", pattern_FlowControlServiceHTTP_CheckHTTP_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/aperture.flowcontrol.checkhttp.v1.FlowControlServiceHTTP/CheckHTTP", runtime.WithHTTPPathPattern("/v1/flowcontrol/checkhttp")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_FlowControlServiceHTTP_CheckHTTP_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_FlowControlServiceHTTP_CheckHTTP_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_FlowControlServiceHTTP_CheckHTTP_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "flowcontrol", "checkhttp"}, "")) +) + +var ( + forward_FlowControlServiceHTTP_CheckHTTP_0 = runtime.ForwardResponseMessage +) diff --git a/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.json.go b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.json.go new file mode 100644 index 0000000000..7535bb53f1 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.json.go @@ -0,0 +1,104 @@ +// Code generated by protoc-gen-go-json. DO NOT EDIT. +// source: aperture/flowcontrol/checkhttp/v1/checkhttp.proto + +package checkhttpv1 + +import ( + "google.golang.org/protobuf/encoding/protojson" +) + +// MarshalJSON implements json.Marshaler +func (msg *CheckHTTPRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CheckHTTPRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CheckHTTPRequest_HttpRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CheckHTTPRequest_HttpRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *DeniedHttpResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *DeniedHttpResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *OkHttpResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *OkHttpResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *CheckHTTPResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *CheckHTTPResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *SocketAddress) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseEnumNumbers: false, + EmitUnpopulated: true, + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *SocketAddress) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{ + DiscardUnknown: true, + }.Unmarshal(b, msg) +} diff --git a/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.validate.go b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.validate.go new file mode 100644 index 0000000000..8adc66f3d8 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp.pb.validate.go @@ -0,0 +1,965 @@ +// Code generated by protoc-gen-validate. DO NOT EDIT. +// source: aperture/flowcontrol/checkhttp/v1/checkhttp.proto + +package checkhttpv1 + +import ( + "bytes" + "errors" + "fmt" + "net" + "net/mail" + "net/url" + "regexp" + "sort" + "strings" + "time" + "unicode/utf8" + + "google.golang.org/protobuf/types/known/anypb" +) + +// ensure the imports are used +var ( + _ = bytes.MinRead + _ = errors.New("") + _ = fmt.Print + _ = utf8.UTFMax + _ = (*regexp.Regexp)(nil) + _ = (*strings.Reader)(nil) + _ = net.IPv4len + _ = time.Duration(0) + _ = (*url.URL)(nil) + _ = (*mail.Address)(nil) + _ = anypb.Any{} + _ = sort.Sort +) + +// Validate checks the field values on CheckHTTPRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *CheckHTTPRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckHTTPRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CheckHTTPRequestMultiError, or nil if none found. +func (m *CheckHTTPRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckHTTPRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetSource()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckHTTPRequestValidationError{ + field: "Source", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckHTTPRequestValidationError{ + field: "Source", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSource()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckHTTPRequestValidationError{ + field: "Source", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetDestination()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckHTTPRequestValidationError{ + field: "Destination", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckHTTPRequestValidationError{ + field: "Destination", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDestination()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckHTTPRequestValidationError{ + field: "Destination", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetRequest()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckHTTPRequestValidationError{ + field: "Request", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckHTTPRequestValidationError{ + field: "Request", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRequest()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckHTTPRequestValidationError{ + field: "Request", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for ControlPoint + + // no validation rules for RampMode + + if len(errors) > 0 { + return CheckHTTPRequestMultiError(errors) + } + + return nil +} + +// CheckHTTPRequestMultiError is an error wrapping multiple validation errors +// returned by CheckHTTPRequest.ValidateAll() if the designated constraints +// aren't met. +type CheckHTTPRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckHTTPRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckHTTPRequestMultiError) AllErrors() []error { return m } + +// CheckHTTPRequestValidationError is the validation error returned by +// CheckHTTPRequest.Validate if the designated constraints aren't met. +type CheckHTTPRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CheckHTTPRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CheckHTTPRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CheckHTTPRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CheckHTTPRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CheckHTTPRequestValidationError) ErrorName() string { return "CheckHTTPRequestValidationError" } + +// Error satisfies the builtin error interface +func (e CheckHTTPRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCheckHTTPRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CheckHTTPRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CheckHTTPRequestValidationError{} + +// Validate checks the field values on DeniedHttpResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *DeniedHttpResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeniedHttpResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeniedHttpResponseMultiError, or nil if none found. +func (m *DeniedHttpResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeniedHttpResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Status + + // no validation rules for Headers + + // no validation rules for Body + + if len(errors) > 0 { + return DeniedHttpResponseMultiError(errors) + } + + return nil +} + +// DeniedHttpResponseMultiError is an error wrapping multiple validation errors +// returned by DeniedHttpResponse.ValidateAll() if the designated constraints +// aren't met. +type DeniedHttpResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeniedHttpResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeniedHttpResponseMultiError) AllErrors() []error { return m } + +// DeniedHttpResponseValidationError is the validation error returned by +// DeniedHttpResponse.Validate if the designated constraints aren't met. +type DeniedHttpResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeniedHttpResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeniedHttpResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeniedHttpResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeniedHttpResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeniedHttpResponseValidationError) ErrorName() string { + return "DeniedHttpResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e DeniedHttpResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sDeniedHttpResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeniedHttpResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeniedHttpResponseValidationError{} + +// Validate checks the field values on OkHttpResponse with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *OkHttpResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OkHttpResponse with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in OkHttpResponseMultiError, +// or nil if none found. +func (m *OkHttpResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *OkHttpResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Headers + + if all { + switch v := interface{}(m.GetDynamicMetadata()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, OkHttpResponseValidationError{ + field: "DynamicMetadata", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, OkHttpResponseValidationError{ + field: "DynamicMetadata", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDynamicMetadata()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return OkHttpResponseValidationError{ + field: "DynamicMetadata", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return OkHttpResponseMultiError(errors) + } + + return nil +} + +// OkHttpResponseMultiError is an error wrapping multiple validation errors +// returned by OkHttpResponse.ValidateAll() if the designated constraints +// aren't met. +type OkHttpResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OkHttpResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OkHttpResponseMultiError) AllErrors() []error { return m } + +// OkHttpResponseValidationError is the validation error returned by +// OkHttpResponse.Validate if the designated constraints aren't met. +type OkHttpResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e OkHttpResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e OkHttpResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e OkHttpResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e OkHttpResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e OkHttpResponseValidationError) ErrorName() string { return "OkHttpResponseValidationError" } + +// Error satisfies the builtin error interface +func (e OkHttpResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sOkHttpResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = OkHttpResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = OkHttpResponseValidationError{} + +// Validate checks the field values on CheckHTTPResponse with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *CheckHTTPResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckHTTPResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CheckHTTPResponseMultiError, or nil if none found. +func (m *CheckHTTPResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckHTTPResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if all { + switch v := interface{}(m.GetStatus()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckHTTPResponseValidationError{ + field: "Status", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckHTTPResponseValidationError{ + field: "Status", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetStatus()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckHTTPResponseValidationError{ + field: "Status", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetDynamicMetadata()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckHTTPResponseValidationError{ + field: "DynamicMetadata", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckHTTPResponseValidationError{ + field: "DynamicMetadata", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDynamicMetadata()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckHTTPResponseValidationError{ + field: "DynamicMetadata", + reason: "embedded message failed validation", + cause: err, + } + } + } + + switch v := m.HttpResponse.(type) { + case *CheckHTTPResponse_DeniedResponse: + if v == nil { + err := CheckHTTPResponseValidationError{ + field: "HttpResponse", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetDeniedResponse()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckHTTPResponseValidationError{ + field: "DeniedResponse", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckHTTPResponseValidationError{ + field: "DeniedResponse", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeniedResponse()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckHTTPResponseValidationError{ + field: "DeniedResponse", + reason: "embedded message failed validation", + cause: err, + } + } + } + + case *CheckHTTPResponse_OkResponse: + if v == nil { + err := CheckHTTPResponseValidationError{ + field: "HttpResponse", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetOkResponse()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckHTTPResponseValidationError{ + field: "OkResponse", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckHTTPResponseValidationError{ + field: "OkResponse", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOkResponse()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckHTTPResponseValidationError{ + field: "OkResponse", + reason: "embedded message failed validation", + cause: err, + } + } + } + + default: + _ = v // ensures v is used + } + + if len(errors) > 0 { + return CheckHTTPResponseMultiError(errors) + } + + return nil +} + +// CheckHTTPResponseMultiError is an error wrapping multiple validation errors +// returned by CheckHTTPResponse.ValidateAll() if the designated constraints +// aren't met. +type CheckHTTPResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckHTTPResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckHTTPResponseMultiError) AllErrors() []error { return m } + +// CheckHTTPResponseValidationError is the validation error returned by +// CheckHTTPResponse.Validate if the designated constraints aren't met. +type CheckHTTPResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CheckHTTPResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CheckHTTPResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CheckHTTPResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CheckHTTPResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CheckHTTPResponseValidationError) ErrorName() string { + return "CheckHTTPResponseValidationError" +} + +// Error satisfies the builtin error interface +func (e CheckHTTPResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCheckHTTPResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CheckHTTPResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CheckHTTPResponseValidationError{} + +// Validate checks the field values on SocketAddress with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *SocketAddress) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SocketAddress with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in SocketAddressMultiError, or +// nil if none found. +func (m *SocketAddress) ValidateAll() error { + return m.validate(true) +} + +func (m *SocketAddress) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if _, ok := SocketAddress_Protocol_name[int32(m.GetProtocol())]; !ok { + err := SocketAddressValidationError{ + field: "Protocol", + reason: "value must be one of the defined enum values", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetAddress()) < 1 { + err := SocketAddressValidationError{ + field: "Address", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if m.GetPort() > 65535 { + err := SocketAddressValidationError{ + field: "Port", + reason: "value must be less than or equal to 65535", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return SocketAddressMultiError(errors) + } + + return nil +} + +// SocketAddressMultiError is an error wrapping multiple validation errors +// returned by SocketAddress.ValidateAll() if the designated constraints +// aren't met. +type SocketAddressMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SocketAddressMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SocketAddressMultiError) AllErrors() []error { return m } + +// SocketAddressValidationError is the validation error returned by +// SocketAddress.Validate if the designated constraints aren't met. +type SocketAddressValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e SocketAddressValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e SocketAddressValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e SocketAddressValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e SocketAddressValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e SocketAddressValidationError) ErrorName() string { return "SocketAddressValidationError" } + +// Error satisfies the builtin error interface +func (e SocketAddressValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sSocketAddress.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = SocketAddressValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = SocketAddressValidationError{} + +// Validate checks the field values on CheckHTTPRequest_HttpRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *CheckHTTPRequest_HttpRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckHTTPRequest_HttpRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CheckHTTPRequest_HttpRequestMultiError, or nil if none found. +func (m *CheckHTTPRequest_HttpRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckHTTPRequest_HttpRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Method + + // no validation rules for Headers + + // no validation rules for Path + + // no validation rules for Host + + // no validation rules for Scheme + + // no validation rules for Size + + // no validation rules for Protocol + + // no validation rules for Body + + if len(errors) > 0 { + return CheckHTTPRequest_HttpRequestMultiError(errors) + } + + return nil +} + +// CheckHTTPRequest_HttpRequestMultiError is an error wrapping multiple +// validation errors returned by CheckHTTPRequest_HttpRequest.ValidateAll() if +// the designated constraints aren't met. +type CheckHTTPRequest_HttpRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckHTTPRequest_HttpRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckHTTPRequest_HttpRequestMultiError) AllErrors() []error { return m } + +// CheckHTTPRequest_HttpRequestValidationError is the validation error returned +// by CheckHTTPRequest_HttpRequest.Validate if the designated constraints +// aren't met. +type CheckHTTPRequest_HttpRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CheckHTTPRequest_HttpRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CheckHTTPRequest_HttpRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CheckHTTPRequest_HttpRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CheckHTTPRequest_HttpRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CheckHTTPRequest_HttpRequestValidationError) ErrorName() string { + return "CheckHTTPRequest_HttpRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e CheckHTTPRequest_HttpRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sCheckHTTPRequest_HttpRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CheckHTTPRequest_HttpRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CheckHTTPRequest_HttpRequestValidationError{} diff --git a/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp_grpc.pb.go b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp_grpc.pb.go new file mode 100644 index 0000000000..c8f8c99ff6 --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp_grpc.pb.go @@ -0,0 +1,107 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: aperture/flowcontrol/checkhttp/v1/checkhttp.proto + +package checkhttpv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + FlowControlServiceHTTP_CheckHTTP_FullMethodName = "/aperture.flowcontrol.checkhttp.v1.FlowControlServiceHTTP/CheckHTTP" +) + +// FlowControlServiceHTTPClient is the client API for FlowControlServiceHTTP service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type FlowControlServiceHTTPClient interface { + CheckHTTP(ctx context.Context, in *CheckHTTPRequest, opts ...grpc.CallOption) (*CheckHTTPResponse, error) +} + +type flowControlServiceHTTPClient struct { + cc grpc.ClientConnInterface +} + +func NewFlowControlServiceHTTPClient(cc grpc.ClientConnInterface) FlowControlServiceHTTPClient { + return &flowControlServiceHTTPClient{cc} +} + +func (c *flowControlServiceHTTPClient) CheckHTTP(ctx context.Context, in *CheckHTTPRequest, opts ...grpc.CallOption) (*CheckHTTPResponse, error) { + out := new(CheckHTTPResponse) + err := c.cc.Invoke(ctx, FlowControlServiceHTTP_CheckHTTP_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// FlowControlServiceHTTPServer is the server API for FlowControlServiceHTTP service. +// All implementations should embed UnimplementedFlowControlServiceHTTPServer +// for forward compatibility +type FlowControlServiceHTTPServer interface { + CheckHTTP(context.Context, *CheckHTTPRequest) (*CheckHTTPResponse, error) +} + +// UnimplementedFlowControlServiceHTTPServer should be embedded to have forward compatible implementations. +type UnimplementedFlowControlServiceHTTPServer struct { +} + +func (UnimplementedFlowControlServiceHTTPServer) CheckHTTP(context.Context, *CheckHTTPRequest) (*CheckHTTPResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CheckHTTP not implemented") +} + +// UnsafeFlowControlServiceHTTPServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to FlowControlServiceHTTPServer will +// result in compilation errors. +type UnsafeFlowControlServiceHTTPServer interface { + mustEmbedUnimplementedFlowControlServiceHTTPServer() +} + +func RegisterFlowControlServiceHTTPServer(s grpc.ServiceRegistrar, srv FlowControlServiceHTTPServer) { + s.RegisterService(&FlowControlServiceHTTP_ServiceDesc, srv) +} + +func _FlowControlServiceHTTP_CheckHTTP_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CheckHTTPRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FlowControlServiceHTTPServer).CheckHTTP(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FlowControlServiceHTTP_CheckHTTP_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FlowControlServiceHTTPServer).CheckHTTP(ctx, req.(*CheckHTTPRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// FlowControlServiceHTTP_ServiceDesc is the grpc.ServiceDesc for FlowControlServiceHTTP service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var FlowControlServiceHTTP_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "aperture.flowcontrol.checkhttp.v1.FlowControlServiceHTTP", + HandlerType: (*FlowControlServiceHTTPServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CheckHTTP", + Handler: _FlowControlServiceHTTP_CheckHTTP_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "aperture/flowcontrol/checkhttp/v1/checkhttp.proto", +} diff --git a/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp_vtproto.pb.go b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp_vtproto.pb.go new file mode 100644 index 0000000000..782fcae71d --- /dev/null +++ b/sdks/aperture-go/gen/proto/flowcontrol/checkhttp/v1/checkhttp_vtproto.pb.go @@ -0,0 +1,2274 @@ +// Code generated by protoc-gen-go-vtproto. DO NOT EDIT. +// protoc-gen-go-vtproto version: v0.5.0 +// source: aperture/flowcontrol/checkhttp/v1/checkhttp.proto + +package checkhttpv1 + +import ( + fmt "fmt" + status "google.golang.org/genproto/googleapis/rpc/status" + proto "google.golang.org/protobuf/proto" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + io "io" + bits "math/bits" + sync "sync" +) + +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) +) + +func (m *CheckHTTPRequest_HttpRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CheckHTTPRequest_HttpRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CheckHTTPRequest_HttpRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Body) > 0 { + i -= len(m.Body) + copy(dAtA[i:], m.Body) + i = encodeVarint(dAtA, i, uint64(len(m.Body))) + i-- + dAtA[i] = 0x42 + } + if len(m.Protocol) > 0 { + i -= len(m.Protocol) + copy(dAtA[i:], m.Protocol) + i = encodeVarint(dAtA, i, uint64(len(m.Protocol))) + i-- + dAtA[i] = 0x3a + } + if m.Size != 0 { + i = encodeVarint(dAtA, i, uint64(m.Size)) + i-- + dAtA[i] = 0x30 + } + if len(m.Scheme) > 0 { + i -= len(m.Scheme) + copy(dAtA[i:], m.Scheme) + i = encodeVarint(dAtA, i, uint64(len(m.Scheme))) + i-- + dAtA[i] = 0x2a + } + if len(m.Host) > 0 { + i -= len(m.Host) + copy(dAtA[i:], m.Host) + i = encodeVarint(dAtA, i, uint64(len(m.Host))) + i-- + dAtA[i] = 0x22 + } + if len(m.Path) > 0 { + i -= len(m.Path) + copy(dAtA[i:], m.Path) + i = encodeVarint(dAtA, i, uint64(len(m.Path))) + i-- + dAtA[i] = 0x1a + } + if len(m.Headers) > 0 { + for k := range m.Headers { + v := m.Headers[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarint(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarint(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarint(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Method) > 0 { + i -= len(m.Method) + copy(dAtA[i:], m.Method) + i = encodeVarint(dAtA, i, uint64(len(m.Method))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CheckHTTPRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CheckHTTPRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CheckHTTPRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.RampMode { + i-- + if m.RampMode { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.ControlPoint) > 0 { + i -= len(m.ControlPoint) + copy(dAtA[i:], m.ControlPoint) + i = encodeVarint(dAtA, i, uint64(len(m.ControlPoint))) + i-- + dAtA[i] = 0x22 + } + if m.Request != nil { + size, err := m.Request.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x1a + } + if m.Destination != nil { + size, err := m.Destination.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + } + if m.Source != nil { + size, err := m.Source.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DeniedHttpResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DeniedHttpResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *DeniedHttpResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Body) > 0 { + i -= len(m.Body) + copy(dAtA[i:], m.Body) + i = encodeVarint(dAtA, i, uint64(len(m.Body))) + i-- + dAtA[i] = 0x1a + } + if len(m.Headers) > 0 { + for k := range m.Headers { + v := m.Headers[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarint(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarint(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarint(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x12 + } + } + if m.Status != 0 { + i = encodeVarint(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *OkHttpResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *OkHttpResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *OkHttpResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.DynamicMetadata != nil { + if vtmsg, ok := interface{}(m.DynamicMetadata).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.DynamicMetadata) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Headers) > 0 { + for k := range m.Headers { + v := m.Headers[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarint(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarint(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarint(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *CheckHTTPResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CheckHTTPResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CheckHTTPResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if vtmsg, ok := m.HttpResponse.(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + } + if m.DynamicMetadata != nil { + if vtmsg, ok := interface{}(m.DynamicMetadata).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.DynamicMetadata) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x22 + } + if m.Status != nil { + if vtmsg, ok := interface{}(m.Status).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.Status) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CheckHTTPResponse_DeniedResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CheckHTTPResponse_DeniedResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.DeniedResponse != nil { + size, err := m.DeniedResponse.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} +func (m *CheckHTTPResponse_OkResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *CheckHTTPResponse_OkResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.OkResponse != nil { + size, err := m.OkResponse.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x1a + } + return len(dAtA) - i, nil +} +func (m *SocketAddress) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SocketAddress) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *SocketAddress) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Port != 0 { + i = encodeVarint(dAtA, i, uint64(m.Port)) + i-- + dAtA[i] = 0x18 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarint(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + if m.Protocol != 0 { + i = encodeVarint(dAtA, i, uint64(m.Protocol)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarint(dAtA []byte, offset int, v uint64) int { + offset -= sov(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} + +var vtprotoPool_CheckHTTPRequest_HttpRequest = sync.Pool{ + New: func() interface{} { + return &CheckHTTPRequest_HttpRequest{} + }, +} + +func (m *CheckHTTPRequest_HttpRequest) ResetVT() { + m.Reset() +} +func (m *CheckHTTPRequest_HttpRequest) ReturnToVTPool() { + if m != nil { + m.ResetVT() + vtprotoPool_CheckHTTPRequest_HttpRequest.Put(m) + } +} +func CheckHTTPRequest_HttpRequestFromVTPool() *CheckHTTPRequest_HttpRequest { + return vtprotoPool_CheckHTTPRequest_HttpRequest.Get().(*CheckHTTPRequest_HttpRequest) +} + +var vtprotoPool_CheckHTTPRequest = sync.Pool{ + New: func() interface{} { + return &CheckHTTPRequest{} + }, +} + +func (m *CheckHTTPRequest) ResetVT() { + m.Source.ReturnToVTPool() + m.Destination.ReturnToVTPool() + m.Request.ReturnToVTPool() + m.Reset() +} +func (m *CheckHTTPRequest) ReturnToVTPool() { + if m != nil { + m.ResetVT() + vtprotoPool_CheckHTTPRequest.Put(m) + } +} +func CheckHTTPRequestFromVTPool() *CheckHTTPRequest { + return vtprotoPool_CheckHTTPRequest.Get().(*CheckHTTPRequest) +} + +var vtprotoPool_SocketAddress = sync.Pool{ + New: func() interface{} { + return &SocketAddress{} + }, +} + +func (m *SocketAddress) ResetVT() { + m.Reset() +} +func (m *SocketAddress) ReturnToVTPool() { + if m != nil { + m.ResetVT() + vtprotoPool_SocketAddress.Put(m) + } +} +func SocketAddressFromVTPool() *SocketAddress { + return vtprotoPool_SocketAddress.Get().(*SocketAddress) +} +func (m *CheckHTTPRequest_HttpRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Method) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if len(m.Headers) > 0 { + for k, v := range m.Headers { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v))) + n += mapEntrySize + 1 + sov(uint64(mapEntrySize)) + } + } + l = len(m.Path) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.Host) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.Scheme) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.Size != 0 { + n += 1 + sov(uint64(m.Size)) + } + l = len(m.Protocol) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.Body) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CheckHTTPRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Source != nil { + l = m.Source.SizeVT() + n += 1 + l + sov(uint64(l)) + } + if m.Destination != nil { + l = m.Destination.SizeVT() + n += 1 + l + sov(uint64(l)) + } + if m.Request != nil { + l = m.Request.SizeVT() + n += 1 + l + sov(uint64(l)) + } + l = len(m.ControlPoint) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.RampMode { + n += 2 + } + n += len(m.unknownFields) + return n +} + +func (m *DeniedHttpResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Status != 0 { + n += 1 + sov(uint64(m.Status)) + } + if len(m.Headers) > 0 { + for k, v := range m.Headers { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v))) + n += mapEntrySize + 1 + sov(uint64(mapEntrySize)) + } + } + l = len(m.Body) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *OkHttpResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Headers) > 0 { + for k, v := range m.Headers { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sov(uint64(len(k))) + 1 + len(v) + sov(uint64(len(v))) + n += mapEntrySize + 1 + sov(uint64(mapEntrySize)) + } + } + if m.DynamicMetadata != nil { + if size, ok := interface{}(m.DynamicMetadata).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.DynamicMetadata) + } + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CheckHTTPResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Status != nil { + if size, ok := interface{}(m.Status).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.Status) + } + n += 1 + l + sov(uint64(l)) + } + if vtmsg, ok := m.HttpResponse.(interface{ SizeVT() int }); ok { + n += vtmsg.SizeVT() + } + if m.DynamicMetadata != nil { + if size, ok := interface{}(m.DynamicMetadata).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.DynamicMetadata) + } + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *CheckHTTPResponse_DeniedResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.DeniedResponse != nil { + l = m.DeniedResponse.SizeVT() + n += 1 + l + sov(uint64(l)) + } + return n +} +func (m *CheckHTTPResponse_OkResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.OkResponse != nil { + l = m.OkResponse.SizeVT() + n += 1 + l + sov(uint64(l)) + } + return n +} +func (m *SocketAddress) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Protocol != 0 { + n += 1 + sov(uint64(m.Protocol)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.Port != 0 { + n += 1 + sov(uint64(m.Port)) + } + n += len(m.unknownFields) + return n +} + +func sov(x uint64) (n int) { + return (bits.Len64(x|1) + 6) / 7 +} +func soz(x uint64) (n int) { + return sov(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *CheckHTTPRequest_HttpRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CheckHTTPRequest_HttpRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckHTTPRequest_HttpRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Method = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Headers == nil { + m.Headers = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLength + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLength + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLength + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLength + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Headers[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scheme", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Scheme = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Size", wireType) + } + m.Size = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Size |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Protocol = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Body", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Body = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CheckHTTPRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CheckHTTPRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckHTTPRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Source == nil { + m.Source = SocketAddressFromVTPool() + } + if err := m.Source.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Destination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Destination == nil { + m.Destination = SocketAddressFromVTPool() + } + if err := m.Destination.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Request == nil { + m.Request = CheckHTTPRequest_HttpRequestFromVTPool() + } + if err := m.Request.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ControlPoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ControlPoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RampMode", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RampMode = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeniedHttpResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeniedHttpResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeniedHttpResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Headers == nil { + m.Headers = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLength + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLength + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLength + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLength + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Headers[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Body", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Body = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OkHttpResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: OkHttpResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OkHttpResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Headers == nil { + m.Headers = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLength + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLength + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLength + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLength + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Headers[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DynamicMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DynamicMetadata == nil { + m.DynamicMetadata = &structpb.Struct{} + } + if unmarshal, ok := interface{}(m.DynamicMetadata).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.DynamicMetadata); err != nil { + return err + } + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CheckHTTPResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CheckHTTPResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckHTTPResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Status == nil { + m.Status = &status.Status{} + } + if unmarshal, ok := interface{}(m.Status).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Status); err != nil { + return err + } + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeniedResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.HttpResponse.(*CheckHTTPResponse_DeniedResponse); ok { + if err := oneof.DeniedResponse.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + v := &DeniedHttpResponse{} + if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.HttpResponse = &CheckHTTPResponse_DeniedResponse{DeniedResponse: v} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OkResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.HttpResponse.(*CheckHTTPResponse_OkResponse); ok { + if err := oneof.OkResponse.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + v := &OkHttpResponse{} + if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.HttpResponse = &CheckHTTPResponse_OkResponse{OkResponse: v} + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DynamicMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DynamicMetadata == nil { + m.DynamicMetadata = &structpb.Struct{} + } + if unmarshal, ok := interface{}(m.DynamicMetadata).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.DynamicMetadata); err != nil { + return err + } + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SocketAddress) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SocketAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SocketAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + m.Protocol = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Protocol |= SocketAddress_Protocol(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + m.Port = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Port |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + +func skip(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflow + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflow + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflow + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLength + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroup + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLength + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLength = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflow = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroup = fmt.Errorf("proto: unexpected end of group") +) diff --git a/sdks/aperture-go/go.mod b/sdks/aperture-go/go.mod index c8dd28d0cb..d332baa720 100644 --- a/sdks/aperture-go/go.mod +++ b/sdks/aperture-go/go.mod @@ -3,29 +3,26 @@ module github.com/fluxninja/aperture-go/v2 go 1.21 require ( - buf.build/gen/go/fluxninja/aperture/grpc/go v1.3.0-20230922113103-98fe61af5f4b.1 - buf.build/gen/go/fluxninja/aperture/protocolbuffers/go v1.31.0-20230922113103-98fe61af5f4b.1 - github.com/go-logr/logr v1.2.4 - github.com/go-logr/stdr v1.2.2 - github.com/gorilla/mux v1.8.0 - github.com/spf13/cast v1.5.1 + github.com/envoyproxy/protoc-gen-validate v1.0.2 + github.com/gorilla/mux v1.8.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 go.opentelemetry.io/otel v1.17.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.17.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.17.0 go.opentelemetry.io/otel/sdk v1.17.0 go.opentelemetry.io/otel/trace v1.17.0 + google.golang.org/genproto/googleapis/api v0.0.0-20230911183012-2d3300fd4832 google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 google.golang.org/grpc v1.58.3 google.golang.org/protobuf v1.31.0 ) require ( - buf.build/gen/go/envoyproxy/protoc-gen-validate/protocolbuffers/go v1.31.0-20230814203303-eac44469a7af.1 // indirect - buf.build/gen/go/grpc-ecosystem/grpc-gateway/protocolbuffers/go v1.31.0-20230822184712-f460f71081c1.1 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.opentelemetry.io/otel/metric v1.17.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect @@ -33,5 +30,4 @@ require ( golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect google.golang.org/genproto v0.0.0-20230911183012-2d3300fd4832 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230911183012-2d3300fd4832 // indirect ) diff --git a/sdks/aperture-go/go.sum b/sdks/aperture-go/go.sum index 7c937502f1..0cde31d976 100644 --- a/sdks/aperture-go/go.sum +++ b/sdks/aperture-go/go.sum @@ -1,638 +1,30 @@ -buf.build/gen/go/cncf/xds/grpc/go v1.3.0-20230607214312-0d869d8e763c.1/go.mod h1:phXvVFto6LMbVlpWjCoongEOyc1lJcumCn0muIOq0ow= -buf.build/gen/go/cncf/xds/protocolbuffers/go v1.28.1-20230607214312-0d869d8e763c.4/go.mod h1:wCh59Lt7cBRTaHywjACypKSOGhKco59H7VY+Xbdq9aU= -buf.build/gen/go/cncf/xds/protocolbuffers/go v1.31.0-20230607214312-0d869d8e763c.1/go.mod h1:UmNsX/9X7uCdAHlus9dv+pEV65jvhDP9IIECLXbgOtA= -buf.build/gen/go/envoyproxy/envoy/grpc/go v1.3.0-20230919202939-9a74a145c4b1.1/go.mod h1:EUEFYIkl79uOxjwb5Zceg5++JhTmY/+kDU0/0t0gD54= -buf.build/gen/go/envoyproxy/envoy/protocolbuffers/go v1.28.1-20230919202939-9a74a145c4b1.4/go.mod h1:4QStbiaQXO4sOJvKGMTSAvRO3dAcXfX0UIqiNjC5zXY= -buf.build/gen/go/envoyproxy/envoy/protocolbuffers/go v1.31.0-20230919202939-9a74a145c4b1.1/go.mod h1:SH2oB+rlPMtdrRgOzPBbluVnDRIXn42xgDF9+zSMeJw= -buf.build/gen/go/envoyproxy/protoc-gen-validate/grpc/go v1.3.0-20221025150516-6607b10f00ed.1/go.mod h1:MXDeCqkWokyKr7Un47xgsescbG8zqS9s8T9x3dXb4PY= -buf.build/gen/go/envoyproxy/protoc-gen-validate/grpc/go v1.3.0-20230814203303-eac44469a7af.1/go.mod h1:4jk+6c1BVnV1zpo4mIBMAAcQSopdsjsqEKaSM9byVyc= -buf.build/gen/go/envoyproxy/protoc-gen-validate/protocolbuffers/go v1.28.1-20221025150516-6607b10f00ed.4/go.mod h1:hY+2q+FbjbfelDKYRqA/RnrnBrAiTYatnPLx6JFklXI= -buf.build/gen/go/envoyproxy/protoc-gen-validate/protocolbuffers/go v1.28.1-20230814203303-eac44469a7af.4/go.mod h1:hY+2q+FbjbfelDKYRqA/RnrnBrAiTYatnPLx6JFklXI= -buf.build/gen/go/envoyproxy/protoc-gen-validate/protocolbuffers/go v1.31.0-20221025150516-6607b10f00ed.1/go.mod h1:Piak8t898VnXArmyLTXHwiVis+pdk9Yxsu5TwwmFnsA= -buf.build/gen/go/envoyproxy/protoc-gen-validate/protocolbuffers/go v1.31.0-20230814203303-eac44469a7af.1 h1:7FXAXN5D3r+NASO85p/Up1PGPQBolRStAYGkLUpI8Cw= -buf.build/gen/go/envoyproxy/protoc-gen-validate/protocolbuffers/go v1.31.0-20230814203303-eac44469a7af.1/go.mod h1:Piak8t898VnXArmyLTXHwiVis+pdk9Yxsu5TwwmFnsA= -buf.build/gen/go/fluxninja/aperture/grpc/go v1.3.0-20230922113103-98fe61af5f4b.1 h1:W62j0hOWlF/mnEcKEBlc473f6hM+bLpMt0qAGMheXdE= -buf.build/gen/go/fluxninja/aperture/grpc/go v1.3.0-20230922113103-98fe61af5f4b.1/go.mod h1:9gSbv5Q3w5Orf2KepJAe1nP4ldXTp+hSAiV+8atwJ6Y= -buf.build/gen/go/fluxninja/aperture/protocolbuffers/go v1.28.1-20230922113103-98fe61af5f4b.4/go.mod h1:2/EFmTddQl7UmEQ39vJMGpps7CFq8gMrlufow0Hr8RA= -buf.build/gen/go/fluxninja/aperture/protocolbuffers/go v1.31.0-20230922113103-98fe61af5f4b.1 h1:Az4UjU3GXDHELklOstcWs4wVcu1gM0JeJhqaqpllcGo= -buf.build/gen/go/fluxninja/aperture/protocolbuffers/go v1.31.0-20230922113103-98fe61af5f4b.1/go.mod h1:88QHvx6jCv2Xg8WWl8P5j1cGVMOBjE3IJoW7zrltVJw= -buf.build/gen/go/grpc-ecosystem/grpc-gateway/grpc/go v1.3.0-20230822184712-f460f71081c1.1/go.mod h1:/Oq2S30H5mz3BxqM1ecKMr7bkpPXhB1jN+DqTCfIznk= -buf.build/gen/go/grpc-ecosystem/grpc-gateway/protocolbuffers/go v1.28.1-20230822184712-f460f71081c1.4/go.mod h1:92ejKVTiuvnKoAtRlpJpIxKfloI935DDqhs0NCRx+KM= -buf.build/gen/go/grpc-ecosystem/grpc-gateway/protocolbuffers/go v1.31.0-20230822184712-f460f71081c1.1 h1:yVlbuBSEVaSMZYB2DFo1I5eEIjlUArrrDB0HOTXxino= -buf.build/gen/go/grpc-ecosystem/grpc-gateway/protocolbuffers/go v1.31.0-20230822184712-f460f71081c1.1/go.mod h1:/j/LOrpev/FdyGhdj/sOc0peUf2KR0y4nMmLp4t1g14= -buf.build/gen/go/opencensus/opencensus/grpc/go v1.3.0-20230503204408-7e4755513505.1/go.mod h1:plXxmOySz47CGlTYbwYg8BkbW/6lcNR+bbrxe8x4ceU= -buf.build/gen/go/opencensus/opencensus/protocolbuffers/go v1.28.1-20230503204408-7e4755513505.4/go.mod h1:VTEnMbLCIG1/BT/TiAuEI1N2l4pnCzI7SJu8RlqSKuU= -buf.build/gen/go/opencensus/opencensus/protocolbuffers/go v1.31.0-20230503204408-7e4755513505.1/go.mod h1:v274lhTHlm2pFzzjZTWNyZ/DqSTLpowVbsfoCB2/xDw= -buf.build/gen/go/opentelemetry/opentelemetry/grpc/go v1.3.0-20230914171856-c5370fbbc768.1/go.mod h1:9kKY7nLSpgcMJ8MtoVuXhsTVzTfwm8hDSnYe9TRc7Cw= -buf.build/gen/go/opentelemetry/opentelemetry/protocolbuffers/go v1.28.1-20230914171856-c5370fbbc768.4/go.mod h1:uvu7/kAfyQqHUPbFVRQHGshuv1uNuH9QE2nlwWZixFE= -buf.build/gen/go/opentelemetry/opentelemetry/protocolbuffers/go v1.31.0-20230914171856-c5370fbbc768.1/go.mod h1:Z8vHgcMy12BQ89FTPKtYuX6U8UgU5/LMlV6MVq7BBlE= -buf.build/gen/go/prometheus/client-model/grpc/go v1.3.0-20230727201446-741a6a7bbc76.1/go.mod h1:liE65cGI243g5e9N4TfXnNBt9Jh/Hcuw7WcsG1vx4Ts= -buf.build/gen/go/prometheus/client-model/protocolbuffers/go v1.28.1-20230727201446-741a6a7bbc76.4/go.mod h1:zp4CkfRdrwHURH95W9tpRKmbq2Kc4P5g1FgQMmH4L74= -buf.build/gen/go/prometheus/client-model/protocolbuffers/go v1.31.0-20230727201446-741a6a7bbc76.1/go.mod h1:JN4TkluIEzvuA3no7YE9Hx53OddciaeLJGNLNCetkwU= -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= -cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= -cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= -cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= -cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= -cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= +github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/otel v1.17.0 h1:MW+phZ6WZ5/uk2nd93ANk/6yJ+dVrvNWUjGhnnFU5jM= go.opentelemetry.io/otel v1.17.0/go.mod h1:I2vmBGtFaODIVMBSTPVDlJSzBDNf93k60E6Ft0nyjo0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.17.0 h1:U5GYackKpVKlPrd/5gKMlrTlP2dCESAAFU682VCpieY= @@ -645,556 +37,28 @@ go.opentelemetry.io/otel/sdk v1.17.0 h1:FLN2X66Ke/k5Sg3V623Q7h7nt3cHXaW1FOvKKrW0 go.opentelemetry.io/otel/sdk v1.17.0/go.mod h1:U87sE0f5vQB7hwUoW98pW5Rz4ZDuCFBZFNUBlSgmDFQ= go.opentelemetry.io/otel/trace v1.17.0 h1:/SWhSRHmDPOImIAetP1QAeMnZYiQXrTy4fMMYOdSKWQ= go.opentelemetry.io/otel/trace v1.17.0/go.mod h1:I/4vKTgFclIsXRVucpH25X0mpFSczM7aHeaz0ZBLWjY= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230911183012-2d3300fd4832 h1:/30npZKtUjXqju7ZA2MsvpkGKD4mQFtf+zPnZasABjg= google.golang.org/genproto v0.0.0-20230911183012-2d3300fd4832/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= google.golang.org/genproto/googleapis/api v0.0.0-20230911183012-2d3300fd4832 h1:4E7rZzBdR5LmiZx6n47Dg4AjH8JLhMQWywsYqvXNLcs= google.golang.org/genproto/googleapis/api v0.0.0-20230911183012-2d3300fd4832/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832 h1:o4LtQxebKIJ4vkzyhtD2rfUNZ20Zf0ik5YVP5E7G7VE= google.golang.org/genproto/googleapis/rpc v0.0.0-20230911183012-2d3300fd4832/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/sdks/aperture-go/sdk/cache.go b/sdks/aperture-go/sdk/cache.go new file mode 100644 index 0000000000..2bacbc5bee --- /dev/null +++ b/sdks/aperture-go/sdk/cache.go @@ -0,0 +1,163 @@ +package aperture + +import ( + "errors" + + checkv1 "github.com/fluxninja/aperture-go/v2/gen/proto/flowcontrol/check/v1" +) + +// ErrCacheKeyNotSet is returned when empty cache key is provided by the caller. +var ErrCacheKeyNotSet = errors.New("cache key not set") + +// LookupStatus is the status of a cache lookup, either HIT or MISS. +type LookupStatus string + +// OperationStatus is the status of a cache operation, either SUCCESS or ERROR. +type OperationStatus string + +const ( + // LookupStatusHit indicates that the cache lookup was a hit. + LookupStatusHit LookupStatus = "HIT" + // LookupStatusMiss indicates that the cache lookup was a miss. + LookupStatusMiss LookupStatus = "MISS" +) + +const ( + // OperationStatusSuccess indicates that the cache operation was successful. + OperationStatusSuccess OperationStatus = "SUCCESS" + // OperationStatusError indicates that the cache operation was unsuccessful. + OperationStatusError OperationStatus = "ERROR" +) + +// convertCacheLookupStatus converts CacheLookupStatus to LookupStatus. +func convertCacheLookupStatus(status checkv1.CacheLookupStatus) LookupStatus { + switch status { + case checkv1.CacheLookupStatus_HIT: + return LookupStatusHit + case checkv1.CacheLookupStatus_MISS: + return LookupStatusMiss + default: + return LookupStatusMiss + } +} + +// convertCacheOperationStatus converts CacheOperationStatus to OperationStatus. +func convertCacheOperationStatus(status checkv1.CacheOperationStatus) OperationStatus { + switch status { + case checkv1.CacheOperationStatus_SUCCESS: + return OperationStatusSuccess + case checkv1.CacheOperationStatus_ERROR: + return OperationStatusError + default: + return OperationStatusError + } +} + +// convertCacheError converts a string error message to Go's error type. +// Returns nil if the input string is empty. +func convertCacheError(errorMessage string) error { + if errorMessage == "" { + return nil + } + return errors.New(errorMessage) +} + +// GetCachedValueResponse is the interface to read the response from a get cached value operation. +type GetCachedValueResponse interface { + GetValue() []byte + GetLookupStatus() LookupStatus + GetOperationStatus() OperationStatus + GetError() error +} + +// SetCachedValueResponse is the interface to read the response from a set cached value operation. +type SetCachedValueResponse interface { + GetError() error + GetOperationStatus() OperationStatus +} + +// DeleteCachedValueResponse is the interface to read the response from a delete cached value operation. +type DeleteCachedValueResponse interface { + GetError() error + GetOperationStatus() OperationStatus +} + +type getCachedValueResponse struct { + value []byte + lookupStatus LookupStatus + operationStatus OperationStatus + error error +} + +type setCachedValueResponse struct { + error error + operationStatus OperationStatus +} + +type deleteCachedValueResponse struct { + error error + operationStatus OperationStatus +} + +// GetValue returns the cached value. +func (g *getCachedValueResponse) GetValue() []byte { + return g.value +} + +// GetLookupStatus returns the lookup status. +func (g *getCachedValueResponse) GetLookupStatus() LookupStatus { + return g.lookupStatus +} + +// GetOperationStatus returns the operation status. +func (g *getCachedValueResponse) GetOperationStatus() OperationStatus { + return g.operationStatus +} + +// GetError returns the error. +func (g *getCachedValueResponse) GetError() error { + return g.error +} + +// GetError returns the error. +func (s *setCachedValueResponse) GetError() error { + return s.error +} + +// GetOperationStatus returns the operation status. +func (s *setCachedValueResponse) GetOperationStatus() OperationStatus { + return s.operationStatus +} + +// GetError returns the error. +func (d *deleteCachedValueResponse) GetError() error { + return d.error +} + +// GetOperationStatus returns the operation status. +func (d *deleteCachedValueResponse) GetOperationStatus() OperationStatus { + return d.operationStatus +} + +func newGetCachedValueResponse(value []byte, lookupStatus LookupStatus, operationStatus OperationStatus, err error) GetCachedValueResponse { + return &getCachedValueResponse{ + value: value, + lookupStatus: lookupStatus, + operationStatus: operationStatus, + error: err, + } +} + +func newSetCachedValueResponse(operationStatus OperationStatus, err error) SetCachedValueResponse { + return &setCachedValueResponse{ + error: err, + operationStatus: operationStatus, + } +} + +func newDeleteCachedValueResponse(operationStatus OperationStatus, err error) DeleteCachedValueResponse { + return &deleteCachedValueResponse{ + error: err, + operationStatus: operationStatus, + } +} diff --git a/sdks/aperture-go/sdk/client.go b/sdks/aperture-go/sdk/client.go index d05b3eec65..3fa5f6c046 100644 --- a/sdks/aperture-go/sdk/client.go +++ b/sdks/aperture-go/sdk/client.go @@ -2,20 +2,12 @@ package aperture import ( "context" - "log" - "net/url" + "log/slog" "regexp" "time" - checkgrpc "buf.build/gen/go/fluxninja/aperture/grpc/go/aperture/flowcontrol/check/v1/checkv1grpc" - checkhttpgrpc "buf.build/gen/go/fluxninja/aperture/grpc/go/aperture/flowcontrol/checkhttp/v1/checkhttpv1grpc" - checkproto "buf.build/gen/go/fluxninja/aperture/protocolbuffers/go/aperture/flowcontrol/check/v1" - checkhttpproto "buf.build/gen/go/fluxninja/aperture/protocolbuffers/go/aperture/flowcontrol/checkhttp/v1" - "github.com/go-logr/logr" - "github.com/go-logr/stdr" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/baggage" "go.opentelemetry.io/otel/exporters/otlp/otlptrace" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" "go.opentelemetry.io/otel/sdk/resource" @@ -24,12 +16,16 @@ import ( "go.opentelemetry.io/otel/trace" "google.golang.org/grpc" "google.golang.org/grpc/metadata" + + checkv1 "github.com/fluxninja/aperture-go/v2/gen/proto/flowcontrol/check/v1" + checkhttpv1 "github.com/fluxninja/aperture-go/v2/gen/proto/flowcontrol/checkhttp/v1" + "github.com/fluxninja/aperture-go/v2/sdk/utils" ) // Options that the user can pass to Aperture in order to receive a new Client. // FlowControlClientConn and OTLPExporterClientConn are required. type Options struct { - Logger *logr.Logger + Logger *slog.Logger Address string AgentAPIKey string DialOptions []grpc.DialOption @@ -51,24 +47,26 @@ type FlowParams struct { CallOptions []grpc.CallOption // If RampMode is set to true, then flow must be accepted by at least 1 LoadRamp component. RampMode bool + // CacheKey is the key that is used to cache data along with the flow. + CacheKey string } // Client is the interface that is provided to the user upon which they can perform Check calls for their service and eventually shut down in case of error. type Client interface { StartFlow(ctx context.Context, controlPoint string, flowParams FlowParams) Flow - StartHTTPFlow(ctx context.Context, request *checkhttpproto.CheckHTTPRequest, middlewareParams MiddlewareParams) HTTPFlow + StartHTTPFlow(ctx context.Context, request *checkhttpv1.CheckHTTPRequest, middlewareParams MiddlewareParams) HTTPFlow Shutdown(ctx context.Context) error - GetLogger() logr.Logger + GetLogger() *slog.Logger GetGRPClientConn() *grpc.ClientConn } type apertureClient struct { grpcClientConn *grpc.ClientConn - flowControlClient checkgrpc.FlowControlServiceClient - flowControlHTTPClient checkhttpgrpc.FlowControlServiceHTTPClient + flowControlClient checkv1.FlowControlServiceClient + flowControlHTTPClient checkhttpv1.FlowControlServiceHTTPClient tracer trace.Tracer exporter *otlptrace.Exporter - log logr.Logger + log *slog.Logger } // NewClient returns a new Client that can be used to perform Check calls. @@ -79,11 +77,12 @@ func NewClient(ctx context.Context, opts Options) (Client, error) { } if opts.AgentAPIKey != "" { - opts.DialOptions = append(opts.DialOptions, grpc.WithUnaryInterceptor(func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, callOpts ...grpc.CallOption) error { + dialOptions := grpc.WithUnaryInterceptor(func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, callOpts ...grpc.CallOption) error { md := metadata.Pairs("x-api-key", opts.AgentAPIKey) ctx = metadata.NewOutgoingContext(ctx, md) return invoker(ctx, method, req, reply, cc, callOpts...) - })) + }) + opts.DialOptions = append(opts.DialOptions, dialOptions) } conn, err := grpc.DialContext(ctx, opts.Address, opts.DialOptions...) @@ -91,10 +90,7 @@ func NewClient(ctx context.Context, opts Options) (Client, error) { return nil, err } - exporter, err := otlptracegrpc.New( - ctx, - otlptracegrpc.WithGRPCConn(conn), - ) + exporter, err := otlptracegrpc.New(ctx, otlptracegrpc.WithGRPCConn(conn)) if err != nil { return nil, err } @@ -113,15 +109,15 @@ func NewClient(ctx context.Context, opts Options) (Client, error) { tracer := tracerProvider.Tracer(libraryName) - var logger logr.Logger + var logger *slog.Logger if opts.Logger != nil { - logger = *opts.Logger + logger = opts.Logger } else { - logger = stdr.New(log.Default()).WithName("aperture-go-sdk") + logger = slog.Default().With("name", "aperture-go-sdk") } - fcClient := checkgrpc.NewFlowControlServiceClient(conn) - fcHTTPClient := checkhttpgrpc.NewFlowControlServiceHTTPClient(conn) + fcClient := checkv1.NewFlowControlServiceClient(conn) + fcHTTPClient := checkhttpv1.NewFlowControlServiceHTTPClient(conn) c := &apertureClient{ grpcClientConn: conn, @@ -143,41 +139,28 @@ func (c *apertureClient) getSpan(ctx context.Context) trace.Span { return span } -// LabelsFromCtx extracts baggage labels from context. -func LabelsFromCtx(ctx context.Context) map[string]string { - labels := make(map[string]string) - baggageCtx := baggage.FromContext(ctx) - for _, member := range baggageCtx.Members() { - value, err := url.QueryUnescape(member.Value()) - if err != nil { - continue - } - labels[member.Key()] = value - } - return labels -} - // StartFlow takes a control point name and labels that get passed to Aperture Agent via flowcontrolv1.Check call. // Return value is a Flow. // The call returns immediately in case connection with Aperture Agent is not established. // The default semantics are fail-to-wire. If StartFlow fails, calling Flow.ShouldRun() on returned Flow returns as true. func (c *apertureClient) StartFlow(ctx context.Context, controlPoint string, flowParams FlowParams) Flow { - labels := LabelsFromCtx(ctx) + labels := utils.LabelsFromCtx(ctx) // Explicit labels override baggage for key, value := range flowParams.Labels { labels[key] = value } - req := &checkproto.CheckRequest{ + req := &checkv1.CheckRequest{ ControlPoint: controlPoint, Labels: labels, RampMode: flowParams.RampMode, + CacheKey: flowParams.CacheKey, } span := c.getSpan(ctx) - f := newFlow(span, flowParams.RampMode) + f := newFlow(c.flowControlClient, span, flowParams.RampMode, flowParams.CacheKey) defer f.Span().SetAttributes( attribute.Int64(workloadStartTimestampLabel, time.Now().UnixNano()), @@ -196,7 +179,7 @@ func (c *apertureClient) StartFlow(ctx context.Context, controlPoint string, flo // StartHTTPFlow takes a control point name and labels that get passed to Aperture Agent via flowcontrolhttp.CheckHTTP call. // Return value is a HTTPFlow. // The default semantics are fail-to-wire. If StartHTTPFlow fails, calling HTTPFlow.ShouldRun() on returned HTTPFlow returns as true. -func (c *apertureClient) StartHTTPFlow(ctx context.Context, request *checkhttpproto.CheckHTTPRequest, middlewareParams MiddlewareParams) HTTPFlow { +func (c *apertureClient) StartHTTPFlow(ctx context.Context, request *checkhttpv1.CheckHTTPRequest, middlewareParams MiddlewareParams) HTTPFlow { span := c.getSpan(ctx) f := newHTTPFlow(span, middlewareParams.FlowParams) @@ -245,7 +228,7 @@ func newResource() (*resource.Resource, error) { } // GetLogger returns the logger used by the aperture client. -func (c *apertureClient) GetLogger() logr.Logger { +func (c *apertureClient) GetLogger() *slog.Logger { return c.log } diff --git a/sdks/aperture-go/sdk/flow.go b/sdks/aperture-go/sdk/flow.go index da19f70aa9..2ab9ae8845 100644 --- a/sdks/aperture-go/sdk/flow.go +++ b/sdks/aperture-go/sdk/flow.go @@ -1,13 +1,16 @@ package aperture import ( + "context" "errors" "time" - checkproto "buf.build/gen/go/fluxninja/aperture/protocolbuffers/go/aperture/flowcontrol/check/v1" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/types/known/durationpb" + + checkv1 "github.com/fluxninja/aperture-go/v2/gen/proto/flowcontrol/check/v1" ) // Flow is the interface that is returned to the user every time a CheckHTTP call through ApertureClient is made. @@ -15,44 +18,47 @@ import ( type Flow interface { ShouldRun() bool SetStatus(status FlowStatus) + CachedValue() GetCachedValueResponse + SetCachedValue(ctx context.Context, value []byte, ttl time.Duration) SetCachedValueResponse + DeleteCachedValue(ctx context.Context) DeleteCachedValueResponse Error() error Span() trace.Span End() error - CheckResponse() *checkproto.CheckResponse + CheckResponse() *checkv1.CheckResponse } type flow struct { - span trace.Span - err error - checkResponse *checkproto.CheckResponse - statusCode FlowStatus - ended bool - rampMode bool + flowControlClient checkv1.FlowControlServiceClient + span trace.Span + err error + checkResponse *checkv1.CheckResponse + statusCode FlowStatus + ended bool + rampMode bool + cacheKey string } // newFlow creates a new flow with default field values. -func newFlow(span trace.Span, rampMode bool) *flow { +func newFlow(flowControlClient checkv1.FlowControlServiceClient, span trace.Span, rampMode bool, cacheKey string) *flow { return &flow{ - span: span, - checkResponse: nil, - statusCode: OK, - ended: false, - rampMode: rampMode, + flowControlClient: flowControlClient, + span: span, + checkResponse: nil, + statusCode: OK, + ended: false, + rampMode: rampMode, + cacheKey: cacheKey, } } // ShouldRun returns whether the Flow was allowed to run by Aperture Agent. // By default, fail-open behavior is enabled. Set rampMode to disable it. func (f *flow) ShouldRun() bool { - if (!f.rampMode && f.checkResponse == nil) || (f.checkResponse.DecisionType == checkproto.CheckResponse_DECISION_TYPE_ACCEPTED) { - return true - } else { - return false - } + return (!f.rampMode && f.checkResponse == nil) || (f.checkResponse.DecisionType == checkv1.CheckResponse_DECISION_TYPE_ACCEPTED) } // CheckResponse returns the response from the server. -func (f *flow) CheckResponse() *checkproto.CheckResponse { +func (f *flow) CheckResponse() *checkv1.CheckResponse { return f.checkResponse } @@ -62,6 +68,60 @@ func (f *flow) SetStatus(statusCode FlowStatus) { f.statusCode = statusCode } +// CachedValue returns the cached value for the flow. +func (f *flow) CachedValue() GetCachedValueResponse { + if f.err != nil { + return newGetCachedValueResponse(nil, LookupStatusMiss, OperationStatusError, f.err) + } + if f.checkResponse == nil { + return newGetCachedValueResponse(nil, LookupStatusMiss, OperationStatusError, errors.New("check response is nil")) + } + cachedValue := f.checkResponse.GetCachedValue() + if cachedValue == nil { + return newGetCachedValueResponse(nil, LookupStatusMiss, OperationStatusError, errors.New("cached value is nil")) + } + + return newGetCachedValueResponse(cachedValue.Value, convertCacheLookupStatus(cachedValue.LookupStatus), convertCacheOperationStatus(cachedValue.OperationStatus), nil) +} + +// SetCachedValue sets the cached value for the flow. +func (f *flow) SetCachedValue(ctx context.Context, value []byte, ttl time.Duration) SetCachedValueResponse { + if f.cacheKey == "" { + return newSetCachedValueResponse(OperationStatusError, ErrCacheKeyNotSet) + } + + ttlProto := durationpb.New(ttl) + + cacheUpsertResponse, err := f.flowControlClient.CacheUpsert(ctx, &checkv1.CacheUpsertRequest{ + ControlPoint: f.checkResponse.ControlPoint, + Key: f.cacheKey, + Value: value, + Ttl: ttlProto, + }) + if err != nil { + return newSetCachedValueResponse(OperationStatusError, err) + } + + return newSetCachedValueResponse(convertCacheOperationStatus(cacheUpsertResponse.GetOperationStatus()), convertCacheError(cacheUpsertResponse.GetError())) +} + +// DeleteCachedValue deletes the cached value for the flow. +func (f *flow) DeleteCachedValue(ctx context.Context) DeleteCachedValueResponse { + if f.cacheKey == "" { + return newDeleteCachedValueResponse(OperationStatusError, ErrCacheKeyNotSet) + } + + cacheDeleteResponse, err := f.flowControlClient.CacheDelete(ctx, &checkv1.CacheDeleteRequest{ + ControlPoint: f.checkResponse.ControlPoint, + Key: f.cacheKey, + }) + if err != nil { + return newDeleteCachedValueResponse(OperationStatusError, err) + } + + return newDeleteCachedValueResponse(convertCacheOperationStatus(cacheDeleteResponse.GetOperationStatus()), convertCacheError(cacheDeleteResponse.GetError())) +} + // Error returns the error that occurred during the flow. func (f *flow) Error() error { return f.err diff --git a/sdks/aperture-go/sdk/httpflow.go b/sdks/aperture-go/sdk/httpflow.go index 61a6184d8f..14451d4f81 100644 --- a/sdks/aperture-go/sdk/httpflow.go +++ b/sdks/aperture-go/sdk/httpflow.go @@ -4,12 +4,13 @@ import ( "errors" "time" - checkhttpproto "buf.build/gen/go/fluxninja/aperture/protocolbuffers/go/aperture/flowcontrol/checkhttp/v1" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "google.golang.org/genproto/googleapis/rpc/code" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/types/known/structpb" + + checkhttpv1 "github.com/fluxninja/aperture-go/v2/gen/proto/flowcontrol/checkhttp/v1" ) // HTTPFlow is the interface that is returned to the user every time a CheckHTTP call through ApertureClient is made. @@ -20,13 +21,13 @@ type HTTPFlow interface { Error() error Span() trace.Span End() error - CheckResponse() *checkhttpproto.CheckHTTPResponse + CheckResponse() *checkhttpv1.CheckHTTPResponse } type httpflow struct { span trace.Span err error - checkResponse *checkhttpproto.CheckHTTPResponse + checkResponse *checkhttpv1.CheckHTTPResponse flowParams FlowParams statusCode FlowStatus ended bool @@ -55,7 +56,7 @@ func (f *httpflow) ShouldRun() bool { } // CheckResponse returns the response from the server. -func (f *httpflow) CheckResponse() *checkhttpproto.CheckHTTPResponse { +func (f *httpflow) CheckResponse() *checkhttpv1.CheckHTTPResponse { return f.checkResponse } diff --git a/sdks/aperture-go/sdk/middleware/grpc.go b/sdks/aperture-go/sdk/middleware/grpc.go index af735d9806..5165d63332 100644 --- a/sdks/aperture-go/sdk/middleware/grpc.go +++ b/sdks/aperture-go/sdk/middleware/grpc.go @@ -2,31 +2,46 @@ package middleware import ( "context" + "encoding/json" "fmt" + "log/slog" "net" "net/http" "regexp" + "strconv" + "strings" - checkhttpproto "buf.build/gen/go/fluxninja/aperture/protocolbuffers/go/aperture/flowcontrol/checkhttp/v1" - "github.com/go-logr/logr" "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/peer" "google.golang.org/grpc/status" + checkhttpv1 "github.com/fluxninja/aperture-go/v2/gen/proto/flowcontrol/checkhttp/v1" aperture "github.com/fluxninja/aperture-go/v2/sdk" + "github.com/fluxninja/aperture-go/v2/sdk/utils" ) // socketAddressFromNetAddr takes a net.Addr and returns a flowcontrolhttp.SocketAddress. -func socketAddressFromNetAddr(logger logr.Logger, addr net.Addr) *checkhttpproto.SocketAddress { - host, port := splitAddress(logger, addr.String()) - protocol := checkhttpproto.SocketAddress_TCP +func socketAddressFromNetAddr(addr net.Addr) *checkhttpv1.SocketAddress { + host, port, err := net.SplitHostPort(addr.String()) + if err != nil { + return nil + } + + portU32, err := strconv.ParseUint(port, 10, 32) + if err != nil { + return nil + } + + protocol := checkhttpv1.SocketAddress_TCP if addr.Network() == "udp" { - protocol = checkhttpproto.SocketAddress_UDP + protocol = checkhttpv1.SocketAddress_UDP } - return &checkhttpproto.SocketAddress{ + return &checkhttpv1.SocketAddress{ Address: host, Protocol: protocol, - Port: port, + Port: uint32(portU32), } } @@ -61,7 +76,7 @@ func GRPCUnaryInterceptor(c aperture.Client, controlPoint string, middlewarePara } } - checkReq := prepareCheckHTTPRequestForGRPC(req, ctx, info, c.GetLogger(), controlPoint, middlewareParams.FlowParams) + checkReq := prepareCheckHTTPRequestForGRPC(ctx, req, c.GetLogger(), info.FullMethod, controlPoint, middlewareParams.FlowParams) flow := c.StartHTTPFlow(ctx, checkReq, middlewareParams) if flow.Error() != nil { @@ -90,6 +105,70 @@ func GRPCUnaryInterceptor(c aperture.Client, controlPoint string, middlewarePara } } +// PrepareCheckHTTPRequestForGRPC takes a gRPC request, context, unary server-info, logger and Control Point to use in Aperture policy for preparing the flowcontrolhttp.CheckHTTPRequest and returns it. +func prepareCheckHTTPRequestForGRPC(ctx context.Context, req interface{}, logger *slog.Logger, fullMethod string, controlPoint string, flowParams aperture.FlowParams) *checkhttpv1.CheckHTTPRequest { + labels := utils.LabelsFromCtx(ctx) + + // override labels with explicit labels + for key, value := range flowParams.Labels { + labels[key] = value + } + + md, ok := metadata.FromIncomingContext(ctx) + authority := "" + scheme := "" + method := "" + + if ok { + // override labels with labels from metadata + for key, value := range md { + labels[key] = strings.Join(value, ",") + } + getMetaValue := func(key string) string { + values := md.Get(key) + if len(values) > 0 { + return values[0] + } + return "" + } + authority = getMetaValue(":authority") + scheme = getMetaValue(":scheme") + method = getMetaValue(":method") + } + + var sourceSocket *checkhttpv1.SocketAddress + if sourceAddr, ok := peer.FromContext(ctx); ok { + sourceSocket = socketAddressFromNetAddr(sourceAddr.Addr) + } + destinationSocket := &checkhttpv1.SocketAddress{ + Address: utils.GetLocalIP(), + Protocol: checkhttpv1.SocketAddress_TCP, + Port: 0, + } + + body, err := json.Marshal(req) + if err != nil { + logger.Error("Failed to marshal request body", "error", err) + } + + return &checkhttpv1.CheckHTTPRequest{ + Source: sourceSocket, + Destination: destinationSocket, + ControlPoint: controlPoint, + RampMode: flowParams.RampMode, + Request: &checkhttpv1.CheckHTTPRequest_HttpRequest{ + Method: method, + Path: fullMethod, + Host: authority, + Headers: labels, + Scheme: scheme, + Size: -1, + Protocol: "HTTP/2", + Body: string(body), + }, + } +} + func convertHTTPStatusToGRPC(httpStatusCode int32) codes.Code { switch httpStatusCode { case http.StatusOK: diff --git a/sdks/aperture-go/sdk/middleware/http.go b/sdks/aperture-go/sdk/middleware/http.go index a16d22a04e..3edb88eff3 100644 --- a/sdks/aperture-go/sdk/middleware/http.go +++ b/sdks/aperture-go/sdk/middleware/http.go @@ -1,11 +1,19 @@ package middleware import ( + "bytes" "fmt" + "io" + "log/slog" + "net" "net/http" "regexp" + "strconv" + "strings" + checkhttpv1 "github.com/fluxninja/aperture-go/v2/gen/proto/flowcontrol/checkhttp/v1" aperture "github.com/fluxninja/aperture-go/v2/sdk" + "github.com/fluxninja/aperture-go/v2/sdk/utils" ) // HTTPMiddleware is the interface for the HTTP middleware. @@ -92,3 +100,66 @@ func (m *httpMiddleware) Handle(next http.Handler) http.Handler { } }) } + +func prepareCheckHTTPRequestForHTTP(req *http.Request, logger *slog.Logger, controlPoint string, flowParams aperture.FlowParams) *checkhttpv1.CheckHTTPRequest { + labels := utils.LabelsFromCtx(req.Context()) + + // override labels with explicit labels + for key, value := range flowParams.Labels { + labels[key] = value + } + + // override labels with labels from headers + for key, value := range req.Header { + if strings.HasPrefix(key, ":") { + continue + } + labels[key] = strings.Join(value, ",") + } + + // We know that the protocol is TCP because Golang's http package doesn't support UDP + // TODO: Should we support `httpu`? + protocol := checkhttpv1.SocketAddress_TCP + + sourceHost, sourcePort, err := net.SplitHostPort(req.RemoteAddr) + if err != nil { + logger.Error("Failed to parse source address", "error", err) + } + + sourcePortU32, err := strconv.ParseUint(sourcePort, 10, 32) + if err != nil { + logger.Error("Failed to parse source port", "error", err) + } + + // TODO: Figure out if we can narrow down the port or figure out the host in a better way + destinationPort := uint32(0) + destinationHost := utils.GetLocalIP() + + var b bytes.Buffer + req.Body = io.NopCloser(io.TeeReader(req.Body, &b)) + + return &checkhttpv1.CheckHTTPRequest{ + Source: &checkhttpv1.SocketAddress{ + Address: sourceHost, + Protocol: protocol, + Port: uint32(sourcePortU32), + }, + Destination: &checkhttpv1.SocketAddress{ + Address: destinationHost, + Protocol: protocol, + Port: destinationPort, + }, + ControlPoint: controlPoint, + RampMode: flowParams.RampMode, + Request: &checkhttpv1.CheckHTTPRequest_HttpRequest{ + Method: req.Method, + Path: req.URL.Path, + Host: req.Host, + Headers: labels, + Scheme: req.URL.Scheme, + Size: req.ContentLength, + Protocol: req.Proto, + Body: b.String(), + }, + } +} diff --git a/sdks/aperture-go/sdk/middleware/utils.go b/sdks/aperture-go/sdk/middleware/utils.go deleted file mode 100644 index 6995cb7dc9..0000000000 --- a/sdks/aperture-go/sdk/middleware/utils.go +++ /dev/null @@ -1,187 +0,0 @@ -package middleware - -import ( - "bytes" - "context" - "encoding/json" - "io" - "net" - "net/http" - "strconv" - "strings" - - checkhttpproto "buf.build/gen/go/fluxninja/aperture/protocolbuffers/go/aperture/flowcontrol/checkhttp/v1" - "github.com/go-logr/logr" - "google.golang.org/grpc" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/peer" - - aperture "github.com/fluxninja/aperture-go/v2/sdk" -) - -// splits address into host and port. -func splitAddress(logger logr.Logger, address string) (string, uint32) { - host, port, err := net.SplitHostPort(address) - if err != nil { - logger.V(2).Info("Error splitting address", "address", address, "error", err) - return host, 0 - } - - portUint, err := strconv.ParseUint(port, 10, 32) - if err != nil { - logger.V(2).Info("Error parsing port", "address", address, "error", err) - return host, 0 - } - - return host, uint32(portUint) -} - -// reads body from request, replacing it with a clone to allow further reads. -func readClonedBody(r *http.Request) ([]byte, error) { - body := r.Body - defer body.Close() - bodyBytes, err := io.ReadAll(body) - if err != nil { - return nil, err - } - r.Body = io.NopCloser(bytes.NewBuffer(bodyBytes)) - return bodyBytes, nil -} - -// try to figure out the local ip address. -func getLocalIP(logger logr.Logger) string { - addrs, err := net.InterfaceAddrs() - if err != nil { - logger.V(2).Info("Failed to get local IP address", "error", err) - return "" - } - - for _, addr := range addrs { - if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil { - return ipnet.IP.String() - } - } - logger.V(2).Info("Failed to get local IP address") - return "" -} - -// PrepareCheckHTTPRequestForHTTP takes a http.Request, logger and Control Point to use in Aperture policy for preparing the flowcontrolhttp.CheckHTTPRequest and returns it. -func prepareCheckHTTPRequestForHTTP(req *http.Request, logger logr.Logger, controlPoint string, flowParams aperture.FlowParams) *checkhttpproto.CheckHTTPRequest { - labels := aperture.LabelsFromCtx(req.Context()) - - // override labels with explicit labels - for key, value := range flowParams.Labels { - labels[key] = value - } - - // override labels with labels from headers - for key, value := range req.Header { - if strings.HasPrefix(key, ":") { - continue - } - labels[key] = strings.Join(value, ",") - } - - // We know that the protocol is TCP because Golang's http package doesn't support UDP - // TODO: Should we support `httpu`? - protocol := checkhttpproto.SocketAddress_TCP - - sourceHost, sourcePort := splitAddress(logger, req.RemoteAddr) - // TODO: Figure out if we can narrow down the port or figure out the host in a better way - destinationPort := uint32(0) - destinationHost := getLocalIP(logger) - - bodyBytes, err := readClonedBody(req) - if err != nil { - logger.V(2).Info("Error reading body", "error", err) - } - - return &checkhttpproto.CheckHTTPRequest{ - Source: &checkhttpproto.SocketAddress{ - Address: sourceHost, - Protocol: protocol, - Port: sourcePort, - }, - Destination: &checkhttpproto.SocketAddress{ - Address: destinationHost, - Protocol: protocol, - Port: destinationPort, - }, - ControlPoint: controlPoint, - RampMode: flowParams.RampMode, - Request: &checkhttpproto.CheckHTTPRequest_HttpRequest{ - Method: req.Method, - Path: req.URL.Path, - Host: req.Host, - Headers: labels, - Scheme: req.URL.Scheme, - Size: req.ContentLength, - Protocol: req.Proto, - Body: string(bodyBytes), - }, - } -} - -// PrepareCheckHTTPRequestForGRPC takes a gRPC request, context, unary server-info, logger and Control Point to use in Aperture policy for preparing the flowcontrolhttp.CheckHTTPRequest and returns it. -func prepareCheckHTTPRequestForGRPC(req interface{}, ctx context.Context, info *grpc.UnaryServerInfo, logger logr.Logger, controlPoint string, flowParams aperture.FlowParams) *checkhttpproto.CheckHTTPRequest { - labels := aperture.LabelsFromCtx(ctx) - - // override labels with explicit labels - for key, value := range flowParams.Labels { - labels[key] = value - } - - md, ok := metadata.FromIncomingContext(ctx) - authority := "" - scheme := "" - method := "" - - if ok { - // override labels with labels from metadata - for key, value := range md { - labels[key] = strings.Join(value, ",") - } - getMetaValue := func(key string) string { - values := md.Get(key) - if len(values) > 0 { - return values[0] - } - return "" - } - authority = getMetaValue(":authority") - scheme = getMetaValue(":scheme") - method = getMetaValue(":method") - } - - var sourceSocket *checkhttpproto.SocketAddress - if sourceAddr, ok := peer.FromContext(ctx); ok { - sourceSocket = socketAddressFromNetAddr(logger, sourceAddr.Addr) - } - destinationSocket := &checkhttpproto.SocketAddress{ - Address: getLocalIP(logger), - Protocol: checkhttpproto.SocketAddress_TCP, - Port: 0, - } - - body, err := json.Marshal(req) - if err != nil { - logger.V(2).Info("Unable to marshal request body") - } - - return &checkhttpproto.CheckHTTPRequest{ - Source: sourceSocket, - Destination: destinationSocket, - ControlPoint: controlPoint, - RampMode: flowParams.RampMode, - Request: &checkhttpproto.CheckHTTPRequest_HttpRequest{ - Method: method, - Path: info.FullMethod, - Host: authority, - Headers: labels, - Scheme: scheme, - Size: -1, - Protocol: "HTTP/2", - Body: string(body), - }, - } -} diff --git a/sdks/aperture-go/sdk/utils/baggage.go b/sdks/aperture-go/sdk/utils/baggage.go new file mode 100644 index 0000000000..805c94574b --- /dev/null +++ b/sdks/aperture-go/sdk/utils/baggage.go @@ -0,0 +1,22 @@ +package utils + +import ( + "context" + "net/url" + + "go.opentelemetry.io/otel/baggage" +) + +// LabelsFromCtx extracts baggage labels from context. +func LabelsFromCtx(ctx context.Context) map[string]string { + labels := make(map[string]string) + b := baggage.FromContext(ctx) + for _, member := range b.Members() { + value, err := url.QueryUnescape(member.Value()) + if err != nil { + continue + } + labels[member.Key()] = value + } + return labels +} diff --git a/sdks/aperture-go/sdk/utils/net.go b/sdks/aperture-go/sdk/utils/net.go new file mode 100644 index 0000000000..f62d463b6f --- /dev/null +++ b/sdks/aperture-go/sdk/utils/net.go @@ -0,0 +1,20 @@ +package utils + +import ( + "net" +) + +// GetLocalIP tries to figure out the local IP address. +func GetLocalIP() string { + addrs, err := net.InterfaceAddrs() + if err != nil { + return "" + } + + for _, addr := range addrs { + if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil { + return ipnet.IP.String() + } + } + return "" +} diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteRequest.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteRequest.java new file mode 100644 index 0000000000..546ca0c31d --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteRequest.java @@ -0,0 +1,677 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +/** + * Protobuf type {@code aperture.flowcontrol.check.v1.CacheDeleteRequest} + */ +public final class CacheDeleteRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:aperture.flowcontrol.check.v1.CacheDeleteRequest) + CacheDeleteRequestOrBuilder { +private static final long serialVersionUID = 0L; + // Use CacheDeleteRequest.newBuilder() to construct. + private CacheDeleteRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CacheDeleteRequest() { + controlPoint_ = ""; + key_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CacheDeleteRequest(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.Builder.class); + } + + public static final int CONTROL_POINT_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object controlPoint_ = ""; + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The controlPoint. + */ + @java.lang.Override + public java.lang.String getControlPoint() { + java.lang.Object ref = controlPoint_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + controlPoint_ = s; + return s; + } + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The bytes for controlPoint. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getControlPointBytes() { + java.lang.Object ref = controlPoint_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + controlPoint_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int KEY_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object key_ = ""; + /** + * string key = 2 [json_name = "key"]; + * @return The key. + */ + @java.lang.Override + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + key_ = s; + return s; + } + } + /** + * string key = 2 [json_name = "key"]; + * @return The bytes for key. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(controlPoint_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, controlPoint_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, key_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(controlPoint_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, controlPoint_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, key_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest)) { + return super.equals(obj); + } + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest other = (com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest) obj; + + if (!getControlPoint() + .equals(other.getControlPoint())) return false; + if (!getKey() + .equals(other.getKey())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + CONTROL_POINT_FIELD_NUMBER; + hash = (53 * hash) + getControlPoint().hashCode(); + hash = (37 * hash) + KEY_FIELD_NUMBER; + hash = (53 * hash) + getKey().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code aperture.flowcontrol.check.v1.CacheDeleteRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:aperture.flowcontrol.check.v1.CacheDeleteRequest) + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.Builder.class); + } + + // Construct using com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + controlPoint_ = ""; + key_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_descriptor; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest getDefaultInstanceForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest build() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest buildPartial() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest result = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.controlPoint_ = controlPoint_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.key_ = key_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest) { + return mergeFrom((com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest other) { + if (other == com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.getDefaultInstance()) return this; + if (!other.getControlPoint().isEmpty()) { + controlPoint_ = other.controlPoint_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getKey().isEmpty()) { + key_ = other.key_; + bitField0_ |= 0x00000002; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + controlPoint_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + key_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object controlPoint_ = ""; + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The controlPoint. + */ + public java.lang.String getControlPoint() { + java.lang.Object ref = controlPoint_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + controlPoint_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The bytes for controlPoint. + */ + public com.google.protobuf.ByteString + getControlPointBytes() { + java.lang.Object ref = controlPoint_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + controlPoint_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @param value The controlPoint to set. + * @return This builder for chaining. + */ + public Builder setControlPoint( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + controlPoint_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return This builder for chaining. + */ + public Builder clearControlPoint() { + controlPoint_ = getDefaultInstance().getControlPoint(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @param value The bytes for controlPoint to set. + * @return This builder for chaining. + */ + public Builder setControlPointBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + controlPoint_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object key_ = ""; + /** + * string key = 2 [json_name = "key"]; + * @return The key. + */ + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + key_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string key = 2 [json_name = "key"]; + * @return The bytes for key. + */ + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string key = 2 [json_name = "key"]; + * @param value The key to set. + * @return This builder for chaining. + */ + public Builder setKey( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + key_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * string key = 2 [json_name = "key"]; + * @return This builder for chaining. + */ + public Builder clearKey() { + key_ = getDefaultInstance().getKey(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * string key = 2 [json_name = "key"]; + * @param value The bytes for key to set. + * @return This builder for chaining. + */ + public Builder setKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + key_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:aperture.flowcontrol.check.v1.CacheDeleteRequest) + } + + // @@protoc_insertion_point(class_scope:aperture.flowcontrol.check.v1.CacheDeleteRequest) + private static final com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest(); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CacheDeleteRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteRequestOrBuilder.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteRequestOrBuilder.java new file mode 100644 index 0000000000..531d38d49c --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteRequestOrBuilder.java @@ -0,0 +1,33 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +public interface CacheDeleteRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:aperture.flowcontrol.check.v1.CacheDeleteRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The controlPoint. + */ + java.lang.String getControlPoint(); + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The bytes for controlPoint. + */ + com.google.protobuf.ByteString + getControlPointBytes(); + + /** + * string key = 2 [json_name = "key"]; + * @return The key. + */ + java.lang.String getKey(); + /** + * string key = 2 [json_name = "key"]; + * @return The bytes for key. + */ + com.google.protobuf.ByteString + getKeyBytes(); +} diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteResponse.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteResponse.java new file mode 100644 index 0000000000..e265861f85 --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteResponse.java @@ -0,0 +1,635 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +/** + * Protobuf type {@code aperture.flowcontrol.check.v1.CacheDeleteResponse} + */ +public final class CacheDeleteResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:aperture.flowcontrol.check.v1.CacheDeleteResponse) + CacheDeleteResponseOrBuilder { +private static final long serialVersionUID = 0L; + // Use CacheDeleteResponse.newBuilder() to construct. + private CacheDeleteResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CacheDeleteResponse() { + operationStatus_ = 0; + error_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CacheDeleteResponse(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.Builder.class); + } + + public static final int OPERATION_STATUS_FIELD_NUMBER = 1; + private int operationStatus_ = 0; + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + @java.lang.Override public int getOperationStatusValue() { + return operationStatus_; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + @java.lang.Override public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus result = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.forNumber(operationStatus_); + return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.UNRECOGNIZED : result; + } + + public static final int ERROR_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object error_ = ""; + /** + * string error = 2 [json_name = "error"]; + * @return The error. + */ + @java.lang.Override + public java.lang.String getError() { + java.lang.Object ref = error_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + error_ = s; + return s; + } + } + /** + * string error = 2 [json_name = "error"]; + * @return The bytes for error. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorBytes() { + java.lang.Object ref = error_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + error_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (operationStatus_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.SUCCESS.getNumber()) { + output.writeEnum(1, operationStatus_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, error_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (operationStatus_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.SUCCESS.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, operationStatus_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, error_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse)) { + return super.equals(obj); + } + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse other = (com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse) obj; + + if (operationStatus_ != other.operationStatus_) return false; + if (!getError() + .equals(other.getError())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + OPERATION_STATUS_FIELD_NUMBER; + hash = (53 * hash) + operationStatus_; + hash = (37 * hash) + ERROR_FIELD_NUMBER; + hash = (53 * hash) + getError().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code aperture.flowcontrol.check.v1.CacheDeleteResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:aperture.flowcontrol.check.v1.CacheDeleteResponse) + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.Builder.class); + } + + // Construct using com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + operationStatus_ = 0; + error_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_descriptor; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse getDefaultInstanceForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.getDefaultInstance(); + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse build() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse buildPartial() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse result = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.operationStatus_ = operationStatus_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.error_ = error_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse) { + return mergeFrom((com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse other) { + if (other == com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.getDefaultInstance()) return this; + if (other.operationStatus_ != 0) { + setOperationStatusValue(other.getOperationStatusValue()); + } + if (!other.getError().isEmpty()) { + error_ = other.error_; + bitField0_ |= 0x00000002; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + operationStatus_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + error_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int operationStatus_ = 0; + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + @java.lang.Override public int getOperationStatusValue() { + return operationStatus_; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @param value The enum numeric value on the wire for operationStatus to set. + * @return This builder for chaining. + */ + public Builder setOperationStatusValue(int value) { + operationStatus_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus result = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.forNumber(operationStatus_); + return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.UNRECOGNIZED : result; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @param value The operationStatus to set. + * @return This builder for chaining. + */ + public Builder setOperationStatus(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + operationStatus_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return This builder for chaining. + */ + public Builder clearOperationStatus() { + bitField0_ = (bitField0_ & ~0x00000001); + operationStatus_ = 0; + onChanged(); + return this; + } + + private java.lang.Object error_ = ""; + /** + * string error = 2 [json_name = "error"]; + * @return The error. + */ + public java.lang.String getError() { + java.lang.Object ref = error_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + error_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string error = 2 [json_name = "error"]; + * @return The bytes for error. + */ + public com.google.protobuf.ByteString + getErrorBytes() { + java.lang.Object ref = error_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + error_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string error = 2 [json_name = "error"]; + * @param value The error to set. + * @return This builder for chaining. + */ + public Builder setError( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + error_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * string error = 2 [json_name = "error"]; + * @return This builder for chaining. + */ + public Builder clearError() { + error_ = getDefaultInstance().getError(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * string error = 2 [json_name = "error"]; + * @param value The bytes for error to set. + * @return This builder for chaining. + */ + public Builder setErrorBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + error_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:aperture.flowcontrol.check.v1.CacheDeleteResponse) + } + + // @@protoc_insertion_point(class_scope:aperture.flowcontrol.check.v1.CacheDeleteResponse) + private static final com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse(); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CacheDeleteResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteResponseOrBuilder.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteResponseOrBuilder.java new file mode 100644 index 0000000000..4b241d39ae --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheDeleteResponseOrBuilder.java @@ -0,0 +1,32 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +public interface CacheDeleteResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:aperture.flowcontrol.check.v1.CacheDeleteResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + int getOperationStatusValue(); + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus(); + + /** + * string error = 2 [json_name = "error"]; + * @return The error. + */ + java.lang.String getError(); + /** + * string error = 2 [json_name = "error"]; + * @return The bytes for error. + */ + com.google.protobuf.ByteString + getErrorBytes(); +} diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheLookupStatus.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheLookupStatus.java new file mode 100644 index 0000000000..0b24938c3e --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheLookupStatus.java @@ -0,0 +1,113 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +/** + * Protobuf enum {@code aperture.flowcontrol.check.v1.CacheLookupStatus} + */ +public enum CacheLookupStatus + implements com.google.protobuf.ProtocolMessageEnum { + /** + * HIT = 0; + */ + HIT(0), + /** + * MISS = 1; + */ + MISS(1), + UNRECOGNIZED(-1), + ; + + /** + * HIT = 0; + */ + public static final int HIT_VALUE = 0; + /** + * MISS = 1; + */ + public static final int MISS_VALUE = 1; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static CacheLookupStatus valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static CacheLookupStatus forNumber(int value) { + switch (value) { + case 0: return HIT; + case 1: return MISS; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + CacheLookupStatus> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public CacheLookupStatus findValueByNumber(int number) { + return CacheLookupStatus.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.getDescriptor().getEnumTypes().get(0); + } + + private static final CacheLookupStatus[] VALUES = values(); + + public static CacheLookupStatus valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private CacheLookupStatus(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:aperture.flowcontrol.check.v1.CacheLookupStatus) +} + diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheOperationStatus.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheOperationStatus.java new file mode 100644 index 0000000000..22fcae538a --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheOperationStatus.java @@ -0,0 +1,113 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +/** + * Protobuf enum {@code aperture.flowcontrol.check.v1.CacheOperationStatus} + */ +public enum CacheOperationStatus + implements com.google.protobuf.ProtocolMessageEnum { + /** + * SUCCESS = 0; + */ + SUCCESS(0), + /** + * ERROR = 1; + */ + ERROR(1), + UNRECOGNIZED(-1), + ; + + /** + * SUCCESS = 0; + */ + public static final int SUCCESS_VALUE = 0; + /** + * ERROR = 1; + */ + public static final int ERROR_VALUE = 1; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static CacheOperationStatus valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static CacheOperationStatus forNumber(int value) { + switch (value) { + case 0: return SUCCESS; + case 1: return ERROR; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + CacheOperationStatus> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public CacheOperationStatus findValueByNumber(int number) { + return CacheOperationStatus.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.getDescriptor().getEnumTypes().get(1); + } + + private static final CacheOperationStatus[] VALUES = values(); + + public static CacheOperationStatus valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private CacheOperationStatus(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:aperture.flowcontrol.check.v1.CacheOperationStatus) +} + diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertRequest.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertRequest.java new file mode 100644 index 0000000000..edbb5af16d --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertRequest.java @@ -0,0 +1,937 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +/** + * Protobuf type {@code aperture.flowcontrol.check.v1.CacheUpsertRequest} + */ +public final class CacheUpsertRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:aperture.flowcontrol.check.v1.CacheUpsertRequest) + CacheUpsertRequestOrBuilder { +private static final long serialVersionUID = 0L; + // Use CacheUpsertRequest.newBuilder() to construct. + private CacheUpsertRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CacheUpsertRequest() { + controlPoint_ = ""; + key_ = ""; + value_ = com.google.protobuf.ByteString.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CacheUpsertRequest(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.Builder.class); + } + + private int bitField0_; + public static final int CONTROL_POINT_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object controlPoint_ = ""; + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The controlPoint. + */ + @java.lang.Override + public java.lang.String getControlPoint() { + java.lang.Object ref = controlPoint_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + controlPoint_ = s; + return s; + } + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The bytes for controlPoint. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getControlPointBytes() { + java.lang.Object ref = controlPoint_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + controlPoint_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int KEY_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object key_ = ""; + /** + * string key = 2 [json_name = "key"]; + * @return The key. + */ + @java.lang.Override + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + key_ = s; + return s; + } + } + /** + * string key = 2 [json_name = "key"]; + * @return The bytes for key. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int VALUE_FIELD_NUMBER = 3; + private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY; + /** + * bytes value = 3 [json_name = "value"]; + * @return The value. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValue() { + return value_; + } + + public static final int TTL_FIELD_NUMBER = 4; + private com.google.protobuf.Duration ttl_; + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + * @return Whether the ttl field is set. + */ + @java.lang.Override + public boolean hasTtl() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + * @return The ttl. + */ + @java.lang.Override + public com.google.protobuf.Duration getTtl() { + return ttl_ == null ? com.google.protobuf.Duration.getDefaultInstance() : ttl_; + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + @java.lang.Override + public com.google.protobuf.DurationOrBuilder getTtlOrBuilder() { + return ttl_ == null ? com.google.protobuf.Duration.getDefaultInstance() : ttl_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(controlPoint_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, controlPoint_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, key_); + } + if (!value_.isEmpty()) { + output.writeBytes(3, value_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(4, getTtl()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(controlPoint_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, controlPoint_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, key_); + } + if (!value_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(3, value_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getTtl()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest)) { + return super.equals(obj); + } + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest other = (com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest) obj; + + if (!getControlPoint() + .equals(other.getControlPoint())) return false; + if (!getKey() + .equals(other.getKey())) return false; + if (!getValue() + .equals(other.getValue())) return false; + if (hasTtl() != other.hasTtl()) return false; + if (hasTtl()) { + if (!getTtl() + .equals(other.getTtl())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + CONTROL_POINT_FIELD_NUMBER; + hash = (53 * hash) + getControlPoint().hashCode(); + hash = (37 * hash) + KEY_FIELD_NUMBER; + hash = (53 * hash) + getKey().hashCode(); + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + if (hasTtl()) { + hash = (37 * hash) + TTL_FIELD_NUMBER; + hash = (53 * hash) + getTtl().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code aperture.flowcontrol.check.v1.CacheUpsertRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:aperture.flowcontrol.check.v1.CacheUpsertRequest) + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.Builder.class); + } + + // Construct using com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getTtlFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + controlPoint_ = ""; + key_ = ""; + value_ = com.google.protobuf.ByteString.EMPTY; + ttl_ = null; + if (ttlBuilder_ != null) { + ttlBuilder_.dispose(); + ttlBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_descriptor; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest getDefaultInstanceForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest build() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest buildPartial() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest result = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.controlPoint_ = controlPoint_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.key_ = key_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.value_ = value_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000008) != 0)) { + result.ttl_ = ttlBuilder_ == null + ? ttl_ + : ttlBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest) { + return mergeFrom((com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest other) { + if (other == com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.getDefaultInstance()) return this; + if (!other.getControlPoint().isEmpty()) { + controlPoint_ = other.controlPoint_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getKey().isEmpty()) { + key_ = other.key_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (other.getValue() != com.google.protobuf.ByteString.EMPTY) { + setValue(other.getValue()); + } + if (other.hasTtl()) { + mergeTtl(other.getTtl()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + controlPoint_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + key_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + value_ = input.readBytes(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 34: { + input.readMessage( + getTtlFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000008; + break; + } // case 34 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object controlPoint_ = ""; + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The controlPoint. + */ + public java.lang.String getControlPoint() { + java.lang.Object ref = controlPoint_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + controlPoint_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The bytes for controlPoint. + */ + public com.google.protobuf.ByteString + getControlPointBytes() { + java.lang.Object ref = controlPoint_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + controlPoint_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @param value The controlPoint to set. + * @return This builder for chaining. + */ + public Builder setControlPoint( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + controlPoint_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return This builder for chaining. + */ + public Builder clearControlPoint() { + controlPoint_ = getDefaultInstance().getControlPoint(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @param value The bytes for controlPoint to set. + * @return This builder for chaining. + */ + public Builder setControlPointBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + controlPoint_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object key_ = ""; + /** + * string key = 2 [json_name = "key"]; + * @return The key. + */ + public java.lang.String getKey() { + java.lang.Object ref = key_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + key_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string key = 2 [json_name = "key"]; + * @return The bytes for key. + */ + public com.google.protobuf.ByteString + getKeyBytes() { + java.lang.Object ref = key_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + key_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string key = 2 [json_name = "key"]; + * @param value The key to set. + * @return This builder for chaining. + */ + public Builder setKey( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + key_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * string key = 2 [json_name = "key"]; + * @return This builder for chaining. + */ + public Builder clearKey() { + key_ = getDefaultInstance().getKey(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * string key = 2 [json_name = "key"]; + * @param value The bytes for key to set. + * @return This builder for chaining. + */ + public Builder setKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + key_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY; + /** + * bytes value = 3 [json_name = "value"]; + * @return The value. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValue() { + return value_; + } + /** + * bytes value = 3 [json_name = "value"]; + * @param value The value to set. + * @return This builder for chaining. + */ + public Builder setValue(com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + value_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * bytes value = 3 [json_name = "value"]; + * @return This builder for chaining. + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000004); + value_ = getDefaultInstance().getValue(); + onChanged(); + return this; + } + + private com.google.protobuf.Duration ttl_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> ttlBuilder_; + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + * @return Whether the ttl field is set. + */ + public boolean hasTtl() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + * @return The ttl. + */ + public com.google.protobuf.Duration getTtl() { + if (ttlBuilder_ == null) { + return ttl_ == null ? com.google.protobuf.Duration.getDefaultInstance() : ttl_; + } else { + return ttlBuilder_.getMessage(); + } + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + public Builder setTtl(com.google.protobuf.Duration value) { + if (ttlBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ttl_ = value; + } else { + ttlBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + public Builder setTtl( + com.google.protobuf.Duration.Builder builderForValue) { + if (ttlBuilder_ == null) { + ttl_ = builderForValue.build(); + } else { + ttlBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + public Builder mergeTtl(com.google.protobuf.Duration value) { + if (ttlBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0) && + ttl_ != null && + ttl_ != com.google.protobuf.Duration.getDefaultInstance()) { + getTtlBuilder().mergeFrom(value); + } else { + ttl_ = value; + } + } else { + ttlBuilder_.mergeFrom(value); + } + if (ttl_ != null) { + bitField0_ |= 0x00000008; + onChanged(); + } + return this; + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + public Builder clearTtl() { + bitField0_ = (bitField0_ & ~0x00000008); + ttl_ = null; + if (ttlBuilder_ != null) { + ttlBuilder_.dispose(); + ttlBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + public com.google.protobuf.Duration.Builder getTtlBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getTtlFieldBuilder().getBuilder(); + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + public com.google.protobuf.DurationOrBuilder getTtlOrBuilder() { + if (ttlBuilder_ != null) { + return ttlBuilder_.getMessageOrBuilder(); + } else { + return ttl_ == null ? + com.google.protobuf.Duration.getDefaultInstance() : ttl_; + } + } + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> + getTtlFieldBuilder() { + if (ttlBuilder_ == null) { + ttlBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>( + getTtl(), + getParentForChildren(), + isClean()); + ttl_ = null; + } + return ttlBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:aperture.flowcontrol.check.v1.CacheUpsertRequest) + } + + // @@protoc_insertion_point(class_scope:aperture.flowcontrol.check.v1.CacheUpsertRequest) + private static final com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest(); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CacheUpsertRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertRequestOrBuilder.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertRequestOrBuilder.java new file mode 100644 index 0000000000..671d77080f --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertRequestOrBuilder.java @@ -0,0 +1,54 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +public interface CacheUpsertRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:aperture.flowcontrol.check.v1.CacheUpsertRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The controlPoint. + */ + java.lang.String getControlPoint(); + /** + * string control_point = 1 [json_name = "controlPoint"]; + * @return The bytes for controlPoint. + */ + com.google.protobuf.ByteString + getControlPointBytes(); + + /** + * string key = 2 [json_name = "key"]; + * @return The key. + */ + java.lang.String getKey(); + /** + * string key = 2 [json_name = "key"]; + * @return The bytes for key. + */ + com.google.protobuf.ByteString + getKeyBytes(); + + /** + * bytes value = 3 [json_name = "value"]; + * @return The value. + */ + com.google.protobuf.ByteString getValue(); + + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + * @return Whether the ttl field is set. + */ + boolean hasTtl(); + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + * @return The ttl. + */ + com.google.protobuf.Duration getTtl(); + /** + * .google.protobuf.Duration ttl = 4 [json_name = "ttl"]; + */ + com.google.protobuf.DurationOrBuilder getTtlOrBuilder(); +} diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertResponse.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertResponse.java new file mode 100644 index 0000000000..40f881ad29 --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertResponse.java @@ -0,0 +1,635 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +/** + * Protobuf type {@code aperture.flowcontrol.check.v1.CacheUpsertResponse} + */ +public final class CacheUpsertResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:aperture.flowcontrol.check.v1.CacheUpsertResponse) + CacheUpsertResponseOrBuilder { +private static final long serialVersionUID = 0L; + // Use CacheUpsertResponse.newBuilder() to construct. + private CacheUpsertResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CacheUpsertResponse() { + operationStatus_ = 0; + error_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CacheUpsertResponse(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.Builder.class); + } + + public static final int OPERATION_STATUS_FIELD_NUMBER = 1; + private int operationStatus_ = 0; + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + @java.lang.Override public int getOperationStatusValue() { + return operationStatus_; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + @java.lang.Override public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus result = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.forNumber(operationStatus_); + return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.UNRECOGNIZED : result; + } + + public static final int ERROR_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object error_ = ""; + /** + * string error = 2 [json_name = "error"]; + * @return The error. + */ + @java.lang.Override + public java.lang.String getError() { + java.lang.Object ref = error_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + error_ = s; + return s; + } + } + /** + * string error = 2 [json_name = "error"]; + * @return The bytes for error. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorBytes() { + java.lang.Object ref = error_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + error_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (operationStatus_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.SUCCESS.getNumber()) { + output.writeEnum(1, operationStatus_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, error_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (operationStatus_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.SUCCESS.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, operationStatus_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, error_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse)) { + return super.equals(obj); + } + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse other = (com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse) obj; + + if (operationStatus_ != other.operationStatus_) return false; + if (!getError() + .equals(other.getError())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + OPERATION_STATUS_FIELD_NUMBER; + hash = (53 * hash) + operationStatus_; + hash = (37 * hash) + ERROR_FIELD_NUMBER; + hash = (53 * hash) + getError().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code aperture.flowcontrol.check.v1.CacheUpsertResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:aperture.flowcontrol.check.v1.CacheUpsertResponse) + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.Builder.class); + } + + // Construct using com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + operationStatus_ = 0; + error_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_descriptor; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse getDefaultInstanceForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.getDefaultInstance(); + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse build() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse buildPartial() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse result = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.operationStatus_ = operationStatus_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.error_ = error_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse) { + return mergeFrom((com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse other) { + if (other == com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.getDefaultInstance()) return this; + if (other.operationStatus_ != 0) { + setOperationStatusValue(other.getOperationStatusValue()); + } + if (!other.getError().isEmpty()) { + error_ = other.error_; + bitField0_ |= 0x00000002; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + operationStatus_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + error_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int operationStatus_ = 0; + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + @java.lang.Override public int getOperationStatusValue() { + return operationStatus_; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @param value The enum numeric value on the wire for operationStatus to set. + * @return This builder for chaining. + */ + public Builder setOperationStatusValue(int value) { + operationStatus_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus result = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.forNumber(operationStatus_); + return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.UNRECOGNIZED : result; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @param value The operationStatus to set. + * @return This builder for chaining. + */ + public Builder setOperationStatus(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + operationStatus_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return This builder for chaining. + */ + public Builder clearOperationStatus() { + bitField0_ = (bitField0_ & ~0x00000001); + operationStatus_ = 0; + onChanged(); + return this; + } + + private java.lang.Object error_ = ""; + /** + * string error = 2 [json_name = "error"]; + * @return The error. + */ + public java.lang.String getError() { + java.lang.Object ref = error_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + error_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string error = 2 [json_name = "error"]; + * @return The bytes for error. + */ + public com.google.protobuf.ByteString + getErrorBytes() { + java.lang.Object ref = error_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + error_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string error = 2 [json_name = "error"]; + * @param value The error to set. + * @return This builder for chaining. + */ + public Builder setError( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + error_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * string error = 2 [json_name = "error"]; + * @return This builder for chaining. + */ + public Builder clearError() { + error_ = getDefaultInstance().getError(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * string error = 2 [json_name = "error"]; + * @param value The bytes for error to set. + * @return This builder for chaining. + */ + public Builder setErrorBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + error_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:aperture.flowcontrol.check.v1.CacheUpsertResponse) + } + + // @@protoc_insertion_point(class_scope:aperture.flowcontrol.check.v1.CacheUpsertResponse) + private static final com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse(); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CacheUpsertResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertResponseOrBuilder.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertResponseOrBuilder.java new file mode 100644 index 0000000000..06eeb0e657 --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CacheUpsertResponseOrBuilder.java @@ -0,0 +1,32 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +public interface CacheUpsertResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:aperture.flowcontrol.check.v1.CacheUpsertResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + int getOperationStatusValue(); + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 1 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus(); + + /** + * string error = 2 [json_name = "error"]; + * @return The error. + */ + java.lang.String getError(); + /** + * string error = 2 [json_name = "error"]; + * @return The bytes for error. + */ + com.google.protobuf.ByteString + getErrorBytes(); +} diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CachedValue.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CachedValue.java new file mode 100644 index 0000000000..37c5edfe37 --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CachedValue.java @@ -0,0 +1,796 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +/** + * Protobuf type {@code aperture.flowcontrol.check.v1.CachedValue} + */ +public final class CachedValue extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:aperture.flowcontrol.check.v1.CachedValue) + CachedValueOrBuilder { +private static final long serialVersionUID = 0L; + // Use CachedValue.newBuilder() to construct. + private CachedValue(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CachedValue() { + value_ = com.google.protobuf.ByteString.EMPTY; + lookupStatus_ = 0; + operationStatus_ = 0; + error_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new CachedValue(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CachedValue_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CachedValue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.Builder.class); + } + + public static final int VALUE_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY; + /** + * bytes value = 1 [json_name = "value"]; + * @return The value. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValue() { + return value_; + } + + public static final int LOOKUP_STATUS_FIELD_NUMBER = 2; + private int lookupStatus_ = 0; + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @return The enum numeric value on the wire for lookupStatus. + */ + @java.lang.Override public int getLookupStatusValue() { + return lookupStatus_; + } + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @return The lookupStatus. + */ + @java.lang.Override public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus getLookupStatus() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus result = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus.forNumber(lookupStatus_); + return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus.UNRECOGNIZED : result; + } + + public static final int OPERATION_STATUS_FIELD_NUMBER = 3; + private int operationStatus_ = 0; + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + @java.lang.Override public int getOperationStatusValue() { + return operationStatus_; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + @java.lang.Override public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus result = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.forNumber(operationStatus_); + return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.UNRECOGNIZED : result; + } + + public static final int ERROR_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private volatile java.lang.Object error_ = ""; + /** + * string error = 4 [json_name = "error"]; + * @return The error. + */ + @java.lang.Override + public java.lang.String getError() { + java.lang.Object ref = error_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + error_ = s; + return s; + } + } + /** + * string error = 4 [json_name = "error"]; + * @return The bytes for error. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getErrorBytes() { + java.lang.Object ref = error_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + error_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!value_.isEmpty()) { + output.writeBytes(1, value_); + } + if (lookupStatus_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus.HIT.getNumber()) { + output.writeEnum(2, lookupStatus_); + } + if (operationStatus_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.SUCCESS.getNumber()) { + output.writeEnum(3, operationStatus_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, error_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!value_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, value_); + } + if (lookupStatus_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus.HIT.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, lookupStatus_); + } + if (operationStatus_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.SUCCESS.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, operationStatus_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(error_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, error_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue)) { + return super.equals(obj); + } + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue other = (com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue) obj; + + if (!getValue() + .equals(other.getValue())) return false; + if (lookupStatus_ != other.lookupStatus_) return false; + if (operationStatus_ != other.operationStatus_) return false; + if (!getError() + .equals(other.getError())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + hash = (37 * hash) + LOOKUP_STATUS_FIELD_NUMBER; + hash = (53 * hash) + lookupStatus_; + hash = (37 * hash) + OPERATION_STATUS_FIELD_NUMBER; + hash = (53 * hash) + operationStatus_; + hash = (37 * hash) + ERROR_FIELD_NUMBER; + hash = (53 * hash) + getError().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code aperture.flowcontrol.check.v1.CachedValue} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:aperture.flowcontrol.check.v1.CachedValue) + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValueOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CachedValue_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CachedValue_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.class, com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.Builder.class); + } + + // Construct using com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + value_ = com.google.protobuf.ByteString.EMPTY; + lookupStatus_ = 0; + operationStatus_ = 0; + error_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.internal_static_aperture_flowcontrol_check_v1_CachedValue_descriptor; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue getDefaultInstanceForType() { + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.getDefaultInstance(); + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue build() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue buildPartial() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue result = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.value_ = value_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.lookupStatus_ = lookupStatus_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.operationStatus_ = operationStatus_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.error_ = error_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue) { + return mergeFrom((com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue other) { + if (other == com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.getDefaultInstance()) return this; + if (other.getValue() != com.google.protobuf.ByteString.EMPTY) { + setValue(other.getValue()); + } + if (other.lookupStatus_ != 0) { + setLookupStatusValue(other.getLookupStatusValue()); + } + if (other.operationStatus_ != 0) { + setOperationStatusValue(other.getOperationStatusValue()); + } + if (!other.getError().isEmpty()) { + error_ = other.error_; + bitField0_ |= 0x00000008; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + value_ = input.readBytes(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: { + lookupStatus_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + operationStatus_ = input.readEnum(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 34: { + error_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } // case 34 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY; + /** + * bytes value = 1 [json_name = "value"]; + * @return The value. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValue() { + return value_; + } + /** + * bytes value = 1 [json_name = "value"]; + * @param value The value to set. + * @return This builder for chaining. + */ + public Builder setValue(com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + value_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * bytes value = 1 [json_name = "value"]; + * @return This builder for chaining. + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000001); + value_ = getDefaultInstance().getValue(); + onChanged(); + return this; + } + + private int lookupStatus_ = 0; + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @return The enum numeric value on the wire for lookupStatus. + */ + @java.lang.Override public int getLookupStatusValue() { + return lookupStatus_; + } + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @param value The enum numeric value on the wire for lookupStatus to set. + * @return This builder for chaining. + */ + public Builder setLookupStatusValue(int value) { + lookupStatus_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @return The lookupStatus. + */ + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus getLookupStatus() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus result = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus.forNumber(lookupStatus_); + return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus.UNRECOGNIZED : result; + } + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @param value The lookupStatus to set. + * @return This builder for chaining. + */ + public Builder setLookupStatus(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + lookupStatus_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @return This builder for chaining. + */ + public Builder clearLookupStatus() { + bitField0_ = (bitField0_ & ~0x00000002); + lookupStatus_ = 0; + onChanged(); + return this; + } + + private int operationStatus_ = 0; + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + @java.lang.Override public int getOperationStatusValue() { + return operationStatus_; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @param value The enum numeric value on the wire for operationStatus to set. + * @return This builder for chaining. + */ + public Builder setOperationStatusValue(int value) { + operationStatus_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus() { + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus result = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.forNumber(operationStatus_); + return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus.UNRECOGNIZED : result; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @param value The operationStatus to set. + * @return This builder for chaining. + */ + public Builder setOperationStatus(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + operationStatus_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @return This builder for chaining. + */ + public Builder clearOperationStatus() { + bitField0_ = (bitField0_ & ~0x00000004); + operationStatus_ = 0; + onChanged(); + return this; + } + + private java.lang.Object error_ = ""; + /** + * string error = 4 [json_name = "error"]; + * @return The error. + */ + public java.lang.String getError() { + java.lang.Object ref = error_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + error_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string error = 4 [json_name = "error"]; + * @return The bytes for error. + */ + public com.google.protobuf.ByteString + getErrorBytes() { + java.lang.Object ref = error_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + error_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string error = 4 [json_name = "error"]; + * @param value The error to set. + * @return This builder for chaining. + */ + public Builder setError( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + error_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * string error = 4 [json_name = "error"]; + * @return This builder for chaining. + */ + public Builder clearError() { + error_ = getDefaultInstance().getError(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + /** + * string error = 4 [json_name = "error"]; + * @param value The bytes for error to set. + * @return This builder for chaining. + */ + public Builder setErrorBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + error_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:aperture.flowcontrol.check.v1.CachedValue) + } + + // @@protoc_insertion_point(class_scope:aperture.flowcontrol.check.v1.CachedValue) + private static final com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue(); + } + + public static com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public CachedValue parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CachedValueOrBuilder.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CachedValueOrBuilder.java new file mode 100644 index 0000000000..7f49aac04b --- /dev/null +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CachedValueOrBuilder.java @@ -0,0 +1,49 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: aperture/flowcontrol/check/v1/check.proto + +package com.fluxninja.generated.aperture.flowcontrol.check.v1; + +public interface CachedValueOrBuilder extends + // @@protoc_insertion_point(interface_extends:aperture.flowcontrol.check.v1.CachedValue) + com.google.protobuf.MessageOrBuilder { + + /** + * bytes value = 1 [json_name = "value"]; + * @return The value. + */ + com.google.protobuf.ByteString getValue(); + + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @return The enum numeric value on the wire for lookupStatus. + */ + int getLookupStatusValue(); + /** + * .aperture.flowcontrol.check.v1.CacheLookupStatus lookup_status = 2 [json_name = "lookupStatus"]; + * @return The lookupStatus. + */ + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheLookupStatus getLookupStatus(); + + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @return The enum numeric value on the wire for operationStatus. + */ + int getOperationStatusValue(); + /** + * .aperture.flowcontrol.check.v1.CacheOperationStatus operation_status = 3 [json_name = "operationStatus"]; + * @return The operationStatus. + */ + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheOperationStatus getOperationStatus(); + + /** + * string error = 4 [json_name = "error"]; + * @return The error. + */ + java.lang.String getError(); + /** + * string error = 4 [json_name = "error"]; + * @return The bytes for error. + */ + com.google.protobuf.ByteString + getErrorBytes(); +} diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckProto.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckProto.java index 11e0860c7f..3e3ce0eb41 100644 --- a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckProto.java +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckProto.java @@ -34,6 +34,31 @@ public static void registerAllExtensions( static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_aperture_flowcontrol_check_v1_CheckResponse_TelemetryFlowLabelsEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_aperture_flowcontrol_check_v1_CachedValue_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_aperture_flowcontrol_check_v1_CachedValue_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_aperture_flowcontrol_check_v1_ClassifierInfo_descriptor; static final @@ -86,136 +111,165 @@ public static void registerAllExtensions( "\n)aperture/flowcontrol/check/v1/check.pr" + "oto\022\035aperture.flowcontrol.check.v1\032\036goog" + "le/protobuf/duration.proto\032\037google/proto" + - "buf/timestamp.proto\"\334\001\n\014CheckRequest\022#\n\r" + + "buf/timestamp.proto\"\371\001\n\014CheckRequest\022#\n\r" + "control_point\030\001 \001(\tR\014controlPoint\022O\n\006lab" + "els\030\002 \003(\01327.aperture.flowcontrol.check.v" + "1.CheckRequest.LabelsEntryR\006labels\022\033\n\tra" + - "mp_mode\030\003 \001(\010R\010rampMode\0329\n\013LabelsEntry\022\020" + - "\n\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005value:\002" + - "8\001\"\375\t\n\rCheckResponse\0220\n\005start\030\001 \001(\0132\032.go" + - "ogle.protobuf.TimestampR\005start\022,\n\003end\030\002 " + - "\001(\0132\032.google.protobuf.TimestampR\003end\022\032\n\010" + - "services\030\004 \003(\tR\010services\022#\n\rcontrol_poin" + - "t\030\005 \001(\tR\014controlPoint\022&\n\017flow_label_keys" + - "\030\006 \003(\tR\rflowLabelKeys\022y\n\025telemetry_flow_" + - "labels\030\007 \003(\0132E.aperture.flowcontrol.chec" + - "k.v1.CheckResponse.TelemetryFlowLabelsEn" + - "tryR\023telemetryFlowLabels\022^\n\rdecision_typ" + - "e\030\010 \001(\01629.aperture.flowcontrol.check.v1." + - "CheckResponse.DecisionTypeR\014decisionType" + - "\022^\n\rreject_reason\030\t \001(\01629.aperture.flowc" + - "ontrol.check.v1.CheckResponse.RejectReas" + - "onR\014rejectReason\022X\n\020classifier_infos\030\n \003" + - "(\0132-.aperture.flowcontrol.check.v1.Class" + - "ifierInfoR\017classifierInfos\022V\n\020flux_meter" + - "_infos\030\013 \003(\0132,.aperture.flowcontrol.chec" + - "k.v1.FluxMeterInfoR\016fluxMeterInfos\022[\n\021li" + - "miter_decisions\030\014 \003(\0132..aperture.flowcon" + - "trol.check.v1.LimiterDecisionR\020limiterDe" + - "cisions\0226\n\twait_time\030\r \001(\0132\031.google.prot" + - "obuf.DurationR\010waitTime\022h\n\033denied_respon" + - "se_status_code\030\016 \001(\0162).aperture.flowcont" + - "rol.check.v1.StatusCodeR\030deniedResponseS" + - "tatusCode\032F\n\030TelemetryFlowLabelsEntry\022\020\n" + - "\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005value:\0028" + - "\001\"\246\001\n\014RejectReason\022\026\n\022REJECT_REASON_NONE" + - "\020\000\022\036\n\032REJECT_REASON_RATE_LIMITED\020\001\022\033\n\027RE" + - "JECT_REASON_NO_TOKENS\020\002\022\035\n\031REJECT_REASON" + - "_NOT_SAMPLED\020\003\022\"\n\036REJECT_REASON_NO_MATCH" + - "ING_RAMP\020\004\"F\n\014DecisionType\022\032\n\026DECISION_T" + - "YPE_ACCEPTED\020\000\022\032\n\026DECISION_TYPE_REJECTED" + - "\020\001\"\355\002\n\016ClassifierInfo\022\037\n\013policy_name\030\001 \001" + - "(\tR\npolicyName\022\037\n\013policy_hash\030\002 \001(\tR\npol" + - "icyHash\022)\n\020classifier_index\030\003 \001(\003R\017class" + - "ifierIndex\022I\n\005error\030\005 \001(\01623.aperture.flo" + - "wcontrol.check.v1.ClassifierInfo.ErrorR\005" + - "error\"\242\001\n\005Error\022\016\n\nERROR_NONE\020\000\022\025\n\021ERROR" + - "_EVAL_FAILED\020\001\022\031\n\025ERROR_EMPTY_RESULTSET\020" + - "\002\022\035\n\031ERROR_AMBIGUOUS_RESULTSET\020\003\022\032\n\026ERRO" + - "R_MULTI_EXPRESSION\020\004\022\034\n\030ERROR_EXPRESSION" + - "_NOT_MAP\020\005\"\246\014\n\017LimiterDecision\022\037\n\013policy" + - "_name\030\001 \001(\tR\npolicyName\022\037\n\013policy_hash\030\002" + - " \001(\tR\npolicyHash\022!\n\014component_id\030\003 \001(\tR\013" + - "componentId\022\030\n\007dropped\030\004 \001(\010R\007dropped\022T\n" + - "\006reason\030\005 \001(\0162<.aperture.flowcontrol.che" + - "ck.v1.LimiterDecision.LimiterReasonR\006rea" + - "son\022h\n\033denied_response_status_code\030\n \001(\016" + - "2).aperture.flowcontrol.check.v1.StatusC" + - "odeR\030deniedResponseStatusCode\0226\n\twait_ti" + - "me\030\013 \001(\0132\031.google.protobuf.DurationR\010wai" + - "tTime\022l\n\021rate_limiter_info\030\024 \001(\0132>.apert" + - "ure.flowcontrol.check.v1.LimiterDecision" + - ".RateLimiterInfoH\000R\017rateLimiterInfo\022n\n\023l" + - "oad_scheduler_info\030\025 \001(\0132<.aperture.flow" + - "control.check.v1.LimiterDecision.Schedul" + - "erInfoH\000R\021loadSchedulerInfo\022_\n\014sampler_i" + - "nfo\030\026 \001(\0132:.aperture.flowcontrol.check.v" + - "1.LimiterDecision.SamplerInfoH\000R\013sampler" + - "Info\022u\n\024quota_scheduler_info\030\027 \001(\0132A.ape" + - "rture.flowcontrol.check.v1.LimiterDecisi" + - "on.QuotaSchedulerInfoH\000R\022quotaSchedulerI" + - "nfo\032`\n\nTokensInfo\022\034\n\tremaining\030\001 \001(\001R\tre" + - "maining\022\030\n\007current\030\002 \001(\001R\007current\022\032\n\010con" + - "sumed\030\003 \001(\001R\010consumed\032\203\001\n\017RateLimiterInf" + - "o\022\024\n\005label\030\001 \001(\tR\005label\022Z\n\013tokens_info\030\002" + - " \001(\01329.aperture.flowcontrol.check.v1.Lim" + - "iterDecision.TokensInfoR\ntokensInfo\032\256\001\n\r" + - "SchedulerInfo\022%\n\016workload_index\030\001 \001(\tR\rw" + - "orkloadIndex\022Z\n\013tokens_info\030\002 \001(\01329.aper" + - "ture.flowcontrol.check.v1.LimiterDecisio" + - "n.TokensInfoR\ntokensInfo\022\032\n\010priority\030\003 \001" + - "(\001R\010priority\032#\n\013SamplerInfo\022\024\n\005label\030\001 \001" + - "(\tR\005label\032\311\001\n\022QuotaSchedulerInfo\022\024\n\005labe" + - "l\030\001 \001(\tR\005label\022%\n\016workload_index\030\002 \001(\tR\r" + - "workloadIndex\022Z\n\013tokens_info\030\003 \001(\01329.ape" + - "rture.flowcontrol.check.v1.LimiterDecisi" + - "on.TokensInfoR\ntokensInfo\022\032\n\010priority\030\004 " + - "\001(\001R\010priority\"Q\n\rLimiterReason\022\036\n\032LIMITE" + - "R_REASON_UNSPECIFIED\020\000\022 \n\034LIMITER_REASON" + - "_KEY_NOT_FOUND\020\001B\t\n\007details\"7\n\rFluxMeter" + - "Info\022&\n\017flux_meter_name\030\001 \001(\tR\rfluxMeter" + - "Name*\265\t\n\nStatusCode\022\t\n\005Empty\020\000\022\014\n\010Contin" + - "ue\020d\022\007\n\002OK\020\310\001\022\014\n\007Created\020\311\001\022\r\n\010Accepted\020" + - "\312\001\022 \n\033NonAuthoritativeInformation\020\313\001\022\016\n\t" + - "NoContent\020\314\001\022\021\n\014ResetContent\020\315\001\022\023\n\016Parti" + - "alContent\020\316\001\022\020\n\013MultiStatus\020\317\001\022\024\n\017Alread" + - "yReported\020\320\001\022\013\n\006IMUsed\020\342\001\022\024\n\017MultipleCho" + - "ices\020\254\002\022\025\n\020MovedPermanently\020\255\002\022\n\n\005Found\020" + - "\256\002\022\r\n\010SeeOther\020\257\002\022\020\n\013NotModified\020\260\002\022\r\n\010U" + - "seProxy\020\261\002\022\026\n\021TemporaryRedirect\020\263\002\022\026\n\021Pe" + - "rmanentRedirect\020\264\002\022\017\n\nBadRequest\020\220\003\022\021\n\014U" + - "nauthorized\020\221\003\022\024\n\017PaymentRequired\020\222\003\022\016\n\t" + - "Forbidden\020\223\003\022\r\n\010NotFound\020\224\003\022\025\n\020MethodNot" + - "Allowed\020\225\003\022\022\n\rNotAcceptable\020\226\003\022 \n\033ProxyA" + - "uthenticationRequired\020\227\003\022\023\n\016RequestTimeo" + - "ut\020\230\003\022\r\n\010Conflict\020\231\003\022\t\n\004Gone\020\232\003\022\023\n\016Lengt" + - "hRequired\020\233\003\022\027\n\022PreconditionFailed\020\234\003\022\024\n" + - "\017PayloadTooLarge\020\235\003\022\017\n\nURITooLong\020\236\003\022\031\n\024" + - "UnsupportedMediaType\020\237\003\022\030\n\023RangeNotSatis" + - "fiable\020\240\003\022\026\n\021ExpectationFailed\020\241\003\022\027\n\022Mis" + - "directedRequest\020\245\003\022\030\n\023UnprocessableEntit" + - "y\020\246\003\022\013\n\006Locked\020\247\003\022\025\n\020FailedDependency\020\250\003" + - "\022\024\n\017UpgradeRequired\020\252\003\022\031\n\024PreconditionRe" + - "quired\020\254\003\022\024\n\017TooManyRequests\020\255\003\022 \n\033Reque" + - "stHeaderFieldsTooLarge\020\257\003\022\030\n\023InternalSer" + - "verError\020\364\003\022\023\n\016NotImplemented\020\365\003\022\017\n\nBadG" + - "ateway\020\366\003\022\027\n\022ServiceUnavailable\020\367\003\022\023\n\016Ga" + - "tewayTimeout\020\370\003\022\034\n\027HTTPVersionNotSupport" + - "ed\020\371\003\022\032\n\025VariantAlsoNegotiates\020\372\003\022\030\n\023Ins" + - "ufficientStorage\020\373\003\022\021\n\014LoopDetected\020\374\003\022\020" + - "\n\013NotExtended\020\376\003\022\"\n\035NetworkAuthenticatio" + - "nRequired\020\377\0032z\n\022FlowControlService\022d\n\005Ch" + - "eck\022+.aperture.flowcontrol.check.v1.Chec" + - "kRequest\032,.aperture.flowcontrol.check.v1" + - ".CheckResponse\"\000B\263\002\n5com.fluxninja.gener" + - "ated.aperture.flowcontrol.check.v1B\nChec" + - "kProtoP\001ZWgithub.com/fluxninja/aperture/" + - "v2/api/gen/proto/go/aperture/flowcontrol" + - "/check/v1;checkv1\242\002\003AFC\252\002\035Aperture.Flowc" + - "ontrol.Check.V1\312\002\035Aperture\\Flowcontrol\\C" + - "heck\\V1\342\002)Aperture\\Flowcontrol\\Check\\V1\\" + - "GPBMetadata\352\002 Aperture::Flowcontrol::Che" + - "ck::V1b\006proto3" + "mp_mode\030\003 \001(\010R\010rampMode\022\033\n\tcache_key\030\004 \001" + + "(\tR\010cacheKey\0329\n\013LabelsEntry\022\020\n\003key\030\001 \001(\t" + + "R\003key\022\024\n\005value\030\002 \001(\tR\005value:\0028\001\"\314\n\n\rChec" + + "kResponse\0220\n\005start\030\001 \001(\0132\032.google.protob" + + "uf.TimestampR\005start\022,\n\003end\030\002 \001(\0132\032.googl" + + "e.protobuf.TimestampR\003end\022\032\n\010services\030\004 " + + "\003(\tR\010services\022#\n\rcontrol_point\030\005 \001(\tR\014co" + + "ntrolPoint\022&\n\017flow_label_keys\030\006 \003(\tR\rflo" + + "wLabelKeys\022y\n\025telemetry_flow_labels\030\007 \003(" + + "\0132E.aperture.flowcontrol.check.v1.CheckR" + + "esponse.TelemetryFlowLabelsEntryR\023teleme" + + "tryFlowLabels\022^\n\rdecision_type\030\010 \001(\01629.a" + + "perture.flowcontrol.check.v1.CheckRespon" + + "se.DecisionTypeR\014decisionType\022^\n\rreject_" + + "reason\030\t \001(\01629.aperture.flowcontrol.chec" + + "k.v1.CheckResponse.RejectReasonR\014rejectR" + + "eason\022X\n\020classifier_infos\030\n \003(\0132-.apertu" + + "re.flowcontrol.check.v1.ClassifierInfoR\017" + + "classifierInfos\022V\n\020flux_meter_infos\030\013 \003(" + + "\0132,.aperture.flowcontrol.check.v1.FluxMe" + + "terInfoR\016fluxMeterInfos\022[\n\021limiter_decis" + + "ions\030\014 \003(\0132..aperture.flowcontrol.check." + + "v1.LimiterDecisionR\020limiterDecisions\0226\n\t" + + "wait_time\030\r \001(\0132\031.google.protobuf.Durati" + + "onR\010waitTime\022h\n\033denied_response_status_c" + + "ode\030\016 \001(\0162).aperture.flowcontrol.check.v" + + "1.StatusCodeR\030deniedResponseStatusCode\022M" + + "\n\014cached_value\030\017 \001(\0132*.aperture.flowcont" + + "rol.check.v1.CachedValueR\013cachedValue\032F\n" + + "\030TelemetryFlowLabelsEntry\022\020\n\003key\030\001 \001(\tR\003" + + "key\022\024\n\005value\030\002 \001(\tR\005value:\0028\001\"\246\001\n\014Reject" + + "Reason\022\026\n\022REJECT_REASON_NONE\020\000\022\036\n\032REJECT" + + "_REASON_RATE_LIMITED\020\001\022\033\n\027REJECT_REASON_" + + "NO_TOKENS\020\002\022\035\n\031REJECT_REASON_NOT_SAMPLED" + + "\020\003\022\"\n\036REJECT_REASON_NO_MATCHING_RAMP\020\004\"F" + + "\n\014DecisionType\022\032\n\026DECISION_TYPE_ACCEPTED" + + "\020\000\022\032\n\026DECISION_TYPE_REJECTED\020\001\"\360\001\n\013Cache" + + "dValue\022\024\n\005value\030\001 \001(\014R\005value\022U\n\rlookup_s" + + "tatus\030\002 \001(\01620.aperture.flowcontrol.check" + + ".v1.CacheLookupStatusR\014lookupStatus\022^\n\020o" + + "peration_status\030\003 \001(\01623.aperture.flowcon" + + "trol.check.v1.CacheOperationStatusR\017oper" + + "ationStatus\022\024\n\005error\030\004 \001(\tR\005error\"\216\001\n\022Ca" + + "cheUpsertRequest\022#\n\rcontrol_point\030\001 \001(\tR" + + "\014controlPoint\022\020\n\003key\030\002 \001(\tR\003key\022\024\n\005value" + + "\030\003 \001(\014R\005value\022+\n\003ttl\030\004 \001(\0132\031.google.prot" + + "obuf.DurationR\003ttl\"\213\001\n\023CacheUpsertRespon" + + "se\022^\n\020operation_status\030\001 \001(\01623.aperture." + + "flowcontrol.check.v1.CacheOperationStatu" + + "sR\017operationStatus\022\024\n\005error\030\002 \001(\tR\005error" + + "\"K\n\022CacheDeleteRequest\022#\n\rcontrol_point\030" + + "\001 \001(\tR\014controlPoint\022\020\n\003key\030\002 \001(\tR\003key\"\213\001" + + "\n\023CacheDeleteResponse\022^\n\020operation_statu" + + "s\030\001 \001(\01623.aperture.flowcontrol.check.v1." + + "CacheOperationStatusR\017operationStatus\022\024\n" + + "\005error\030\002 \001(\tR\005error\"\355\002\n\016ClassifierInfo\022\037" + + "\n\013policy_name\030\001 \001(\tR\npolicyName\022\037\n\013polic" + + "y_hash\030\002 \001(\tR\npolicyHash\022)\n\020classifier_i" + + "ndex\030\003 \001(\003R\017classifierIndex\022I\n\005error\030\005 \001" + + "(\01623.aperture.flowcontrol.check.v1.Class" + + "ifierInfo.ErrorR\005error\"\242\001\n\005Error\022\016\n\nERRO" + + "R_NONE\020\000\022\025\n\021ERROR_EVAL_FAILED\020\001\022\031\n\025ERROR" + + "_EMPTY_RESULTSET\020\002\022\035\n\031ERROR_AMBIGUOUS_RE" + + "SULTSET\020\003\022\032\n\026ERROR_MULTI_EXPRESSION\020\004\022\034\n" + + "\030ERROR_EXPRESSION_NOT_MAP\020\005\"\246\014\n\017LimiterD" + + "ecision\022\037\n\013policy_name\030\001 \001(\tR\npolicyName" + + "\022\037\n\013policy_hash\030\002 \001(\tR\npolicyHash\022!\n\014com" + + "ponent_id\030\003 \001(\tR\013componentId\022\030\n\007dropped\030" + + "\004 \001(\010R\007dropped\022T\n\006reason\030\005 \001(\0162<.apertur" + + "e.flowcontrol.check.v1.LimiterDecision.L" + + "imiterReasonR\006reason\022h\n\033denied_response_" + + "status_code\030\n \001(\0162).aperture.flowcontrol" + + ".check.v1.StatusCodeR\030deniedResponseStat" + + "usCode\0226\n\twait_time\030\013 \001(\0132\031.google.proto" + + "buf.DurationR\010waitTime\022l\n\021rate_limiter_i" + + "nfo\030\024 \001(\0132>.aperture.flowcontrol.check.v" + + "1.LimiterDecision.RateLimiterInfoH\000R\017rat" + + "eLimiterInfo\022n\n\023load_scheduler_info\030\025 \001(" + + "\0132<.aperture.flowcontrol.check.v1.Limite" + + "rDecision.SchedulerInfoH\000R\021loadScheduler" + + "Info\022_\n\014sampler_info\030\026 \001(\0132:.aperture.fl" + + "owcontrol.check.v1.LimiterDecision.Sampl" + + "erInfoH\000R\013samplerInfo\022u\n\024quota_scheduler" + + "_info\030\027 \001(\0132A.aperture.flowcontrol.check" + + ".v1.LimiterDecision.QuotaSchedulerInfoH\000" + + "R\022quotaSchedulerInfo\032`\n\nTokensInfo\022\034\n\tre" + + "maining\030\001 \001(\001R\tremaining\022\030\n\007current\030\002 \001(" + + "\001R\007current\022\032\n\010consumed\030\003 \001(\001R\010consumed\032\203" + + "\001\n\017RateLimiterInfo\022\024\n\005label\030\001 \001(\tR\005label" + + "\022Z\n\013tokens_info\030\002 \001(\01329.aperture.flowcon" + + "trol.check.v1.LimiterDecision.TokensInfo" + + "R\ntokensInfo\032\256\001\n\rSchedulerInfo\022%\n\016worklo" + + "ad_index\030\001 \001(\tR\rworkloadIndex\022Z\n\013tokens_" + + "info\030\002 \001(\01329.aperture.flowcontrol.check." + + "v1.LimiterDecision.TokensInfoR\ntokensInf" + + "o\022\032\n\010priority\030\003 \001(\001R\010priority\032#\n\013Sampler" + + "Info\022\024\n\005label\030\001 \001(\tR\005label\032\311\001\n\022QuotaSche" + + "dulerInfo\022\024\n\005label\030\001 \001(\tR\005label\022%\n\016workl" + + "oad_index\030\002 \001(\tR\rworkloadIndex\022Z\n\013tokens" + + "_info\030\003 \001(\01329.aperture.flowcontrol.check" + + ".v1.LimiterDecision.TokensInfoR\ntokensIn" + + "fo\022\032\n\010priority\030\004 \001(\001R\010priority\"Q\n\rLimite" + + "rReason\022\036\n\032LIMITER_REASON_UNSPECIFIED\020\000\022" + + " \n\034LIMITER_REASON_KEY_NOT_FOUND\020\001B\t\n\007det" + + "ails\"7\n\rFluxMeterInfo\022&\n\017flux_meter_name" + + "\030\001 \001(\tR\rfluxMeterName*&\n\021CacheLookupStat" + + "us\022\007\n\003HIT\020\000\022\010\n\004MISS\020\001*.\n\024CacheOperationS" + + "tatus\022\013\n\007SUCCESS\020\000\022\t\n\005ERROR\020\001*\265\t\n\nStatus" + + "Code\022\t\n\005Empty\020\000\022\014\n\010Continue\020d\022\007\n\002OK\020\310\001\022\014" + + "\n\007Created\020\311\001\022\r\n\010Accepted\020\312\001\022 \n\033NonAuthor" + + "itativeInformation\020\313\001\022\016\n\tNoContent\020\314\001\022\021\n" + + "\014ResetContent\020\315\001\022\023\n\016PartialContent\020\316\001\022\020\n" + + "\013MultiStatus\020\317\001\022\024\n\017AlreadyReported\020\320\001\022\013\n" + + "\006IMUsed\020\342\001\022\024\n\017MultipleChoices\020\254\002\022\025\n\020Move" + + "dPermanently\020\255\002\022\n\n\005Found\020\256\002\022\r\n\010SeeOther\020" + + "\257\002\022\020\n\013NotModified\020\260\002\022\r\n\010UseProxy\020\261\002\022\026\n\021T" + + "emporaryRedirect\020\263\002\022\026\n\021PermanentRedirect" + + "\020\264\002\022\017\n\nBadRequest\020\220\003\022\021\n\014Unauthorized\020\221\003\022" + + "\024\n\017PaymentRequired\020\222\003\022\016\n\tForbidden\020\223\003\022\r\n" + + "\010NotFound\020\224\003\022\025\n\020MethodNotAllowed\020\225\003\022\022\n\rN" + + "otAcceptable\020\226\003\022 \n\033ProxyAuthenticationRe" + + "quired\020\227\003\022\023\n\016RequestTimeout\020\230\003\022\r\n\010Confli" + + "ct\020\231\003\022\t\n\004Gone\020\232\003\022\023\n\016LengthRequired\020\233\003\022\027\n" + + "\022PreconditionFailed\020\234\003\022\024\n\017PayloadTooLarg" + + "e\020\235\003\022\017\n\nURITooLong\020\236\003\022\031\n\024UnsupportedMedi" + + "aType\020\237\003\022\030\n\023RangeNotSatisfiable\020\240\003\022\026\n\021Ex" + + "pectationFailed\020\241\003\022\027\n\022MisdirectedRequest" + + "\020\245\003\022\030\n\023UnprocessableEntity\020\246\003\022\013\n\006Locked\020" + + "\247\003\022\025\n\020FailedDependency\020\250\003\022\024\n\017UpgradeRequ" + + "ired\020\252\003\022\031\n\024PreconditionRequired\020\254\003\022\024\n\017To" + + "oManyRequests\020\255\003\022 \n\033RequestHeaderFieldsT" + + "ooLarge\020\257\003\022\030\n\023InternalServerError\020\364\003\022\023\n\016" + + "NotImplemented\020\365\003\022\017\n\nBadGateway\020\366\003\022\027\n\022Se" + + "rviceUnavailable\020\367\003\022\023\n\016GatewayTimeout\020\370\003" + + "\022\034\n\027HTTPVersionNotSupported\020\371\003\022\032\n\025Varian" + + "tAlsoNegotiates\020\372\003\022\030\n\023InsufficientStorag" + + "e\020\373\003\022\021\n\014LoopDetected\020\374\003\022\020\n\013NotExtended\020\376" + + "\003\022\"\n\035NetworkAuthenticationRequired\020\377\0032\352\002" + + "\n\022FlowControlService\022d\n\005Check\022+.aperture" + + ".flowcontrol.check.v1.CheckRequest\032,.ape" + + "rture.flowcontrol.check.v1.CheckResponse" + + "\"\000\022v\n\013CacheUpsert\0221.aperture.flowcontrol" + + ".check.v1.CacheUpsertRequest\0322.aperture." + + "flowcontrol.check.v1.CacheUpsertResponse" + + "\"\000\022v\n\013CacheDelete\0221.aperture.flowcontrol" + + ".check.v1.CacheDeleteRequest\0322.aperture." + + "flowcontrol.check.v1.CacheDeleteResponse" + + "\"\000B\263\002\n5com.fluxninja.generated.aperture." + + "flowcontrol.check.v1B\nCheckProtoP\001ZWgith" + + "ub.com/fluxninja/aperture/v2/api/gen/pro" + + "to/go/aperture/flowcontrol/check/v1;chec" + + "kv1\242\002\003AFC\252\002\035Aperture.Flowcontrol.Check.V" + + "1\312\002\035Aperture\\Flowcontrol\\Check\\V1\342\002)Aper" + + "ture\\Flowcontrol\\Check\\V1\\GPBMetadata\352\002 " + + "Aperture::Flowcontrol::Check::V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -228,7 +282,7 @@ public static void registerAllExtensions( internal_static_aperture_flowcontrol_check_v1_CheckRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_aperture_flowcontrol_check_v1_CheckRequest_descriptor, - new java.lang.String[] { "ControlPoint", "Labels", "RampMode", }); + new java.lang.String[] { "ControlPoint", "Labels", "RampMode", "CacheKey", }); internal_static_aperture_flowcontrol_check_v1_CheckRequest_LabelsEntry_descriptor = internal_static_aperture_flowcontrol_check_v1_CheckRequest_descriptor.getNestedTypes().get(0); internal_static_aperture_flowcontrol_check_v1_CheckRequest_LabelsEntry_fieldAccessorTable = new @@ -240,21 +294,51 @@ public static void registerAllExtensions( internal_static_aperture_flowcontrol_check_v1_CheckResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_aperture_flowcontrol_check_v1_CheckResponse_descriptor, - new java.lang.String[] { "Start", "End", "Services", "ControlPoint", "FlowLabelKeys", "TelemetryFlowLabels", "DecisionType", "RejectReason", "ClassifierInfos", "FluxMeterInfos", "LimiterDecisions", "WaitTime", "DeniedResponseStatusCode", }); + new java.lang.String[] { "Start", "End", "Services", "ControlPoint", "FlowLabelKeys", "TelemetryFlowLabels", "DecisionType", "RejectReason", "ClassifierInfos", "FluxMeterInfos", "LimiterDecisions", "WaitTime", "DeniedResponseStatusCode", "CachedValue", }); internal_static_aperture_flowcontrol_check_v1_CheckResponse_TelemetryFlowLabelsEntry_descriptor = internal_static_aperture_flowcontrol_check_v1_CheckResponse_descriptor.getNestedTypes().get(0); internal_static_aperture_flowcontrol_check_v1_CheckResponse_TelemetryFlowLabelsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_aperture_flowcontrol_check_v1_CheckResponse_TelemetryFlowLabelsEntry_descriptor, new java.lang.String[] { "Key", "Value", }); - internal_static_aperture_flowcontrol_check_v1_ClassifierInfo_descriptor = + internal_static_aperture_flowcontrol_check_v1_CachedValue_descriptor = getDescriptor().getMessageTypes().get(2); + internal_static_aperture_flowcontrol_check_v1_CachedValue_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_aperture_flowcontrol_check_v1_CachedValue_descriptor, + new java.lang.String[] { "Value", "LookupStatus", "OperationStatus", "Error", }); + internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_aperture_flowcontrol_check_v1_CacheUpsertRequest_descriptor, + new java.lang.String[] { "ControlPoint", "Key", "Value", "Ttl", }); + internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_aperture_flowcontrol_check_v1_CacheUpsertResponse_descriptor, + new java.lang.String[] { "OperationStatus", "Error", }); + internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_aperture_flowcontrol_check_v1_CacheDeleteRequest_descriptor, + new java.lang.String[] { "ControlPoint", "Key", }); + internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_aperture_flowcontrol_check_v1_CacheDeleteResponse_descriptor, + new java.lang.String[] { "OperationStatus", "Error", }); + internal_static_aperture_flowcontrol_check_v1_ClassifierInfo_descriptor = + getDescriptor().getMessageTypes().get(7); internal_static_aperture_flowcontrol_check_v1_ClassifierInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_aperture_flowcontrol_check_v1_ClassifierInfo_descriptor, new java.lang.String[] { "PolicyName", "PolicyHash", "ClassifierIndex", "Error", }); internal_static_aperture_flowcontrol_check_v1_LimiterDecision_descriptor = - getDescriptor().getMessageTypes().get(3); + getDescriptor().getMessageTypes().get(8); internal_static_aperture_flowcontrol_check_v1_LimiterDecision_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_aperture_flowcontrol_check_v1_LimiterDecision_descriptor, @@ -290,7 +374,7 @@ public static void registerAllExtensions( internal_static_aperture_flowcontrol_check_v1_LimiterDecision_QuotaSchedulerInfo_descriptor, new java.lang.String[] { "Label", "WorkloadIndex", "TokensInfo", "Priority", }); internal_static_aperture_flowcontrol_check_v1_FluxMeterInfo_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(9); internal_static_aperture_flowcontrol_check_v1_FluxMeterInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_aperture_flowcontrol_check_v1_FluxMeterInfo_descriptor, diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckRequest.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckRequest.java index 9b644b258a..60d36ed440 100644 --- a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckRequest.java +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckRequest.java @@ -21,6 +21,7 @@ private CheckRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) } private CheckRequest() { controlPoint_ = ""; + cacheKey_ = ""; } @java.lang.Override @@ -184,6 +185,53 @@ public boolean getRampMode() { return rampMode_; } + public static final int CACHE_KEY_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private volatile java.lang.Object cacheKey_ = ""; + /** + *
+   * Cache item to fetch.
+   * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @return The cacheKey. + */ + @java.lang.Override + public java.lang.String getCacheKey() { + java.lang.Object ref = cacheKey_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cacheKey_ = s; + return s; + } + } + /** + *
+   * Cache item to fetch.
+   * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @return The bytes for cacheKey. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCacheKeyBytes() { + java.lang.Object ref = cacheKey_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cacheKey_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -210,6 +258,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (rampMode_ != false) { output.writeBool(3, rampMode_); } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cacheKey_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, cacheKey_); + } getUnknownFields().writeTo(output); } @@ -236,6 +287,9 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeBoolSize(3, rampMode_); } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cacheKey_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, cacheKey_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -257,6 +311,8 @@ public boolean equals(final java.lang.Object obj) { other.internalGetLabels())) return false; if (getRampMode() != other.getRampMode()) return false; + if (!getCacheKey() + .equals(other.getCacheKey())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -277,6 +333,8 @@ public int hashCode() { hash = (37 * hash) + RAMP_MODE_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( getRampMode()); + hash = (37 * hash) + CACHE_KEY_FIELD_NUMBER; + hash = (53 * hash) + getCacheKey().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -437,6 +495,7 @@ public Builder clear() { controlPoint_ = ""; internalGetMutableLabels().clear(); rampMode_ = false; + cacheKey_ = ""; return this; } @@ -480,6 +539,9 @@ private void buildPartial0(com.fluxninja.generated.aperture.flowcontrol.check.v1 if (((from_bitField0_ & 0x00000004) != 0)) { result.rampMode_ = rampMode_; } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.cacheKey_ = cacheKey_; + } } @java.lang.Override @@ -537,6 +599,11 @@ public Builder mergeFrom(com.fluxninja.generated.aperture.flowcontrol.check.v1.C if (other.getRampMode() != false) { setRampMode(other.getRampMode()); } + if (!other.getCacheKey().isEmpty()) { + cacheKey_ = other.cacheKey_; + bitField0_ |= 0x00000008; + onChanged(); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -582,6 +649,11 @@ public Builder mergeFrom( bitField0_ |= 0x00000004; break; } // case 24 + case 34: { + cacheKey_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } // case 34 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -829,6 +901,98 @@ public Builder clearRampMode() { onChanged(); return this; } + + private java.lang.Object cacheKey_ = ""; + /** + *
+     * Cache item to fetch.
+     * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @return The cacheKey. + */ + public java.lang.String getCacheKey() { + java.lang.Object ref = cacheKey_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + cacheKey_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Cache item to fetch.
+     * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @return The bytes for cacheKey. + */ + public com.google.protobuf.ByteString + getCacheKeyBytes() { + java.lang.Object ref = cacheKey_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + cacheKey_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Cache item to fetch.
+     * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @param value The cacheKey to set. + * @return This builder for chaining. + */ + public Builder setCacheKey( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + cacheKey_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * Cache item to fetch.
+     * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @return This builder for chaining. + */ + public Builder clearCacheKey() { + cacheKey_ = getDefaultInstance().getCacheKey(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + /** + *
+     * Cache item to fetch.
+     * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @param value The bytes for cacheKey to set. + * @return This builder for chaining. + */ + public Builder setCacheKeyBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + cacheKey_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckRequestOrBuilder.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckRequestOrBuilder.java index 60cedd40ab..5a4a0697b2 100644 --- a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckRequestOrBuilder.java +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckRequestOrBuilder.java @@ -58,4 +58,24 @@ java.lang.String getLabelsOrThrow( * @return The rampMode. */ boolean getRampMode(); + + /** + *
+   * Cache item to fetch.
+   * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @return The cacheKey. + */ + java.lang.String getCacheKey(); + /** + *
+   * Cache item to fetch.
+   * 
+ * + * string cache_key = 4 [json_name = "cacheKey"]; + * @return The bytes for cacheKey. + */ + com.google.protobuf.ByteString + getCacheKeyBytes(); } diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckResponse.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckResponse.java index d544f26692..0a50e81cd3 100644 --- a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckResponse.java +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckResponse.java @@ -945,6 +945,44 @@ public com.google.protobuf.DurationOrBuilder getWaitTimeOrBuilder() { return result == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.StatusCode.UNRECOGNIZED : result; } + public static final int CACHED_VALUE_FIELD_NUMBER = 15; + private com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue cachedValue_; + /** + *
+   * Matching cached value.
+   * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + * @return Whether the cachedValue field is set. + */ + @java.lang.Override + public boolean hasCachedValue() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + *
+   * Matching cached value.
+   * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + * @return The cachedValue. + */ + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue getCachedValue() { + return cachedValue_ == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.getDefaultInstance() : cachedValue_; + } + /** + *
+   * Matching cached value.
+   * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + @java.lang.Override + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValueOrBuilder getCachedValueOrBuilder() { + return cachedValue_ == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.getDefaultInstance() : cachedValue_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -1001,6 +1039,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (deniedResponseStatusCode_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.StatusCode.Empty.getNumber()) { output.writeEnum(14, deniedResponseStatusCode_); } + if (((bitField0_ & 0x00000008) != 0)) { + output.writeMessage(15, getCachedValue()); + } getUnknownFields().writeTo(output); } @@ -1075,6 +1116,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeEnumSize(14, deniedResponseStatusCode_); } + if (((bitField0_ & 0x00000008) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(15, getCachedValue()); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -1122,6 +1167,11 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getWaitTime())) return false; } if (deniedResponseStatusCode_ != other.deniedResponseStatusCode_) return false; + if (hasCachedValue() != other.hasCachedValue()) return false; + if (hasCachedValue()) { + if (!getCachedValue() + .equals(other.getCachedValue())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -1177,6 +1227,10 @@ public int hashCode() { } hash = (37 * hash) + DENIED_RESPONSE_STATUS_CODE_FIELD_NUMBER; hash = (53 * hash) + deniedResponseStatusCode_; + if (hasCachedValue()) { + hash = (37 * hash) + CACHED_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getCachedValue().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -1339,6 +1393,7 @@ private void maybeForceBuilderInitialization() { getFluxMeterInfosFieldBuilder(); getLimiterDecisionsFieldBuilder(); getWaitTimeFieldBuilder(); + getCachedValueFieldBuilder(); } } @java.lang.Override @@ -1390,6 +1445,11 @@ public Builder clear() { waitTimeBuilder_ = null; } deniedResponseStatusCode_ = 0; + cachedValue_ = null; + if (cachedValueBuilder_ != null) { + cachedValueBuilder_.dispose(); + cachedValueBuilder_ = null; + } return this; } @@ -1497,6 +1557,12 @@ private void buildPartial0(com.fluxninja.generated.aperture.flowcontrol.check.v1 if (((from_bitField0_ & 0x00001000) != 0)) { result.deniedResponseStatusCode_ = deniedResponseStatusCode_; } + if (((from_bitField0_ & 0x00002000) != 0)) { + result.cachedValue_ = cachedValueBuilder_ == null + ? cachedValue_ + : cachedValueBuilder_.build(); + to_bitField0_ |= 0x00000008; + } result.bitField0_ |= to_bitField0_; } @@ -1668,6 +1734,9 @@ public Builder mergeFrom(com.fluxninja.generated.aperture.flowcontrol.check.v1.C if (other.deniedResponseStatusCode_ != 0) { setDeniedResponseStatusCodeValue(other.getDeniedResponseStatusCodeValue()); } + if (other.hasCachedValue()) { + mergeCachedValue(other.getCachedValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -1795,6 +1864,13 @@ public Builder mergeFrom( bitField0_ |= 0x00001000; break; } // case 112 + case 122: { + input.readMessage( + getCachedValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00002000; + break; + } // case 122 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -3992,6 +4068,163 @@ public Builder clearDeniedResponseStatusCode() { onChanged(); return this; } + + private com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue cachedValue_; + private com.google.protobuf.SingleFieldBuilderV3< + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue, com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.Builder, com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValueOrBuilder> cachedValueBuilder_; + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + * @return Whether the cachedValue field is set. + */ + public boolean hasCachedValue() { + return ((bitField0_ & 0x00002000) != 0); + } + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + * @return The cachedValue. + */ + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue getCachedValue() { + if (cachedValueBuilder_ == null) { + return cachedValue_ == null ? com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.getDefaultInstance() : cachedValue_; + } else { + return cachedValueBuilder_.getMessage(); + } + } + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + public Builder setCachedValue(com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue value) { + if (cachedValueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + cachedValue_ = value; + } else { + cachedValueBuilder_.setMessage(value); + } + bitField0_ |= 0x00002000; + onChanged(); + return this; + } + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + public Builder setCachedValue( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.Builder builderForValue) { + if (cachedValueBuilder_ == null) { + cachedValue_ = builderForValue.build(); + } else { + cachedValueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00002000; + onChanged(); + return this; + } + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + public Builder mergeCachedValue(com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue value) { + if (cachedValueBuilder_ == null) { + if (((bitField0_ & 0x00002000) != 0) && + cachedValue_ != null && + cachedValue_ != com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.getDefaultInstance()) { + getCachedValueBuilder().mergeFrom(value); + } else { + cachedValue_ = value; + } + } else { + cachedValueBuilder_.mergeFrom(value); + } + if (cachedValue_ != null) { + bitField0_ |= 0x00002000; + onChanged(); + } + return this; + } + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + public Builder clearCachedValue() { + bitField0_ = (bitField0_ & ~0x00002000); + cachedValue_ = null; + if (cachedValueBuilder_ != null) { + cachedValueBuilder_.dispose(); + cachedValueBuilder_ = null; + } + onChanged(); + return this; + } + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.Builder getCachedValueBuilder() { + bitField0_ |= 0x00002000; + onChanged(); + return getCachedValueFieldBuilder().getBuilder(); + } + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValueOrBuilder getCachedValueOrBuilder() { + if (cachedValueBuilder_ != null) { + return cachedValueBuilder_.getMessageOrBuilder(); + } else { + return cachedValue_ == null ? + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.getDefaultInstance() : cachedValue_; + } + } + /** + *
+     * Matching cached value.
+     * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue, com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.Builder, com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValueOrBuilder> + getCachedValueFieldBuilder() { + if (cachedValueBuilder_ == null) { + cachedValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue, com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue.Builder, com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValueOrBuilder>( + getCachedValue(), + getParentForChildren(), + isClean()); + cachedValue_ = null; + } + return cachedValueBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckResponseOrBuilder.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckResponseOrBuilder.java index 482c12157d..d6f0ddda3b 100644 --- a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckResponseOrBuilder.java +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/CheckResponseOrBuilder.java @@ -437,4 +437,31 @@ com.fluxninja.generated.aperture.flowcontrol.check.v1.LimiterDecisionOrBuilder g * @return The deniedResponseStatusCode. */ com.fluxninja.generated.aperture.flowcontrol.check.v1.StatusCode getDeniedResponseStatusCode(); + + /** + *
+   * Matching cached value.
+   * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + * @return Whether the cachedValue field is set. + */ + boolean hasCachedValue(); + /** + *
+   * Matching cached value.
+   * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + * @return The cachedValue. + */ + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValue getCachedValue(); + /** + *
+   * Matching cached value.
+   * 
+ * + * .aperture.flowcontrol.check.v1.CachedValue cached_value = 15 [json_name = "cachedValue"]; + */ + com.fluxninja.generated.aperture.flowcontrol.check.v1.CachedValueOrBuilder getCachedValueOrBuilder(); } diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/FlowControlServiceGrpc.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/FlowControlServiceGrpc.java index e9fa2eed94..248aa7513a 100644 --- a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/FlowControlServiceGrpc.java +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/FlowControlServiceGrpc.java @@ -49,6 +49,68 @@ com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckResponse> getCheckMet return getCheckMethod; } + private static volatile io.grpc.MethodDescriptor getCacheUpsertMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "CacheUpsert", + requestType = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.class, + responseType = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getCacheUpsertMethod() { + io.grpc.MethodDescriptor getCacheUpsertMethod; + if ((getCacheUpsertMethod = FlowControlServiceGrpc.getCacheUpsertMethod) == null) { + synchronized (FlowControlServiceGrpc.class) { + if ((getCacheUpsertMethod = FlowControlServiceGrpc.getCacheUpsertMethod) == null) { + FlowControlServiceGrpc.getCacheUpsertMethod = getCacheUpsertMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "CacheUpsert")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse.getDefaultInstance())) + .setSchemaDescriptor(new FlowControlServiceMethodDescriptorSupplier("CacheUpsert")) + .build(); + } + } + } + return getCacheUpsertMethod; + } + + private static volatile io.grpc.MethodDescriptor getCacheDeleteMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "CacheDelete", + requestType = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.class, + responseType = com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getCacheDeleteMethod() { + io.grpc.MethodDescriptor getCacheDeleteMethod; + if ((getCacheDeleteMethod = FlowControlServiceGrpc.getCacheDeleteMethod) == null) { + synchronized (FlowControlServiceGrpc.class) { + if ((getCacheDeleteMethod = FlowControlServiceGrpc.getCacheDeleteMethod) == null) { + FlowControlServiceGrpc.getCacheDeleteMethod = getCacheDeleteMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "CacheDelete")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse.getDefaultInstance())) + .setSchemaDescriptor(new FlowControlServiceMethodDescriptorSupplier("CacheDelete")) + .build(); + } + } + } + return getCacheDeleteMethod; + } + /** * Creates a new async stub that supports all call types for the service */ @@ -109,6 +171,20 @@ default void check(com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckRe io.grpc.stub.StreamObserver responseObserver) { io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCheckMethod(), responseObserver); } + + /** + */ + default void cacheUpsert(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCacheUpsertMethod(), responseObserver); + } + + /** + */ + default void cacheDelete(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCacheDeleteMethod(), responseObserver); + } } /** @@ -154,6 +230,22 @@ public void check(com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckReq io.grpc.stub.ClientCalls.asyncUnaryCall( getChannel().newCall(getCheckMethod(), getCallOptions()), request, responseObserver); } + + /** + */ + public void cacheUpsert(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getCacheUpsertMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public void cacheDelete(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getCacheDeleteMethod(), getCallOptions()), request, responseObserver); + } } /** @@ -184,6 +276,20 @@ public com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckResponse check return io.grpc.stub.ClientCalls.blockingUnaryCall( getChannel(), getCheckMethod(), getCallOptions(), request); } + + /** + */ + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse cacheUpsert(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getCacheUpsertMethod(), getCallOptions(), request); + } + + /** + */ + public com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse cacheDelete(com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getCacheDeleteMethod(), getCallOptions(), request); + } } /** @@ -215,9 +321,27 @@ public com.google.common.util.concurrent.ListenableFuture cacheUpsert( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getCacheUpsertMethod(), getCallOptions()), request); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture cacheDelete( + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getCacheDeleteMethod(), getCallOptions()), request); + } } private static final int METHODID_CHECK = 0; + private static final int METHODID_CACHE_UPSERT = 1; + private static final int METHODID_CACHE_DELETE = 2; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -240,6 +364,14 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv serviceImpl.check((com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckRequest) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_CACHE_UPSERT: + serviceImpl.cacheUpsert((com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + case METHODID_CACHE_DELETE: + serviceImpl.cacheDelete((com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; default: throw new AssertionError(); } @@ -265,6 +397,20 @@ public static final io.grpc.ServerServiceDefinition bindService(AsyncService ser com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckRequest, com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckResponse>( service, METHODID_CHECK))) + .addMethod( + getCacheUpsertMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertRequest, + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheUpsertResponse>( + service, METHODID_CACHE_UPSERT))) + .addMethod( + getCacheDeleteMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteRequest, + com.fluxninja.generated.aperture.flowcontrol.check.v1.CacheDeleteResponse>( + service, METHODID_CACHE_DELETE))) .build(); } @@ -314,6 +460,8 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) .setSchemaDescriptor(new FlowControlServiceFileDescriptorSupplier()) .addMethod(getCheckMethod()) + .addMethod(getCacheUpsertMethod()) + .addMethod(getCacheDeleteMethod()) .build(); } } diff --git a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/StatusCode.java b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/StatusCode.java index bdb2f20aee..dc5942e4d2 100644 --- a/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/StatusCode.java +++ b/sdks/aperture-java/lib/core/src/main/java/com/fluxninja/generated/aperture/flowcontrol/check/v1/StatusCode.java @@ -593,7 +593,7 @@ public StatusCode findValueByNumber(int number) { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.getDescriptor().getEnumTypes().get(0); + return com.fluxninja.generated.aperture.flowcontrol.check.v1.CheckProto.getDescriptor().getEnumTypes().get(2); } private static final StatusCode[] VALUES = values(); diff --git a/sdks/aperture-js/.gitignore b/sdks/aperture-js/.gitignore index cdbe5e6515..73801abc9f 100644 --- a/sdks/aperture-js/.gitignore +++ b/sdks/aperture-js/.gitignore @@ -3,3 +3,4 @@ node_modules /lib example/dist @types +.local-pack diff --git a/sdks/aperture-js/Dockerfile b/sdks/aperture-js/Dockerfile index 9b5c6ec603..fac444d7c1 100644 --- a/sdks/aperture-js/Dockerfile +++ b/sdks/aperture-js/Dockerfile @@ -27,4 +27,5 @@ HEALTHCHECK --interval=5s --timeout=60s --retries=3 --start-period=5s \ # uncomment to enable grpc debug logging #ENV GRPC_VERBOSITY=DEBUG #ENV GRPC_TRACE=all +ENV APERTURE_AGENT_INSECURE=true CMD [ "node", "./example/dist/example.js" ] diff --git a/sdks/aperture-js/example/package-lock.json b/sdks/aperture-js/example/package-lock.json index d1b184fa5a..07cd9b8f13 100644 --- a/sdks/aperture-js/example/package-lock.json +++ b/sdks/aperture-js/example/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { + "@fluxninja/aperture-js": "^2.3.3", "express": "^4.18.2", "http-terminator": "^3.2.0" }, @@ -17,11 +18,38 @@ "typescript": "^5.2.2" } }, + "..": { + "name": "@fluxninja/aperture-js", + "version": "2.3.3", + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.9.5", + "@grpc/proto-loader": "^0.7.10", + "@opentelemetry/api": "1.6.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.43.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/sdk-trace-base": "1.17.0", + "@opentelemetry/sdk-trace-node": "1.17.0", + "@opentelemetry/semantic-conventions": "1.17.0", + "serialize-error": "^11.0.2" + }, + "devDependencies": { + "typescript": "4.9.5" + }, + "engines": { + "node": ">=16.19.1", + "npm": ">=8.19.3" + } + }, "node_modules/@fastify/deepmerge": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==" }, + "node_modules/@fluxninja/aperture-js": { + "resolved": "..", + "link": true + }, "node_modules/@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -974,6 +1002,21 @@ "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==" }, + "@fluxninja/aperture-js": { + "version": "file:..", + "requires": { + "@grpc/grpc-js": "^1.9.5", + "@grpc/proto-loader": "^0.7.10", + "@opentelemetry/api": "1.6.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.43.0", + "@opentelemetry/resources": "1.17.0", + "@opentelemetry/sdk-trace-base": "1.17.0", + "@opentelemetry/sdk-trace-node": "1.17.0", + "@opentelemetry/semantic-conventions": "1.17.0", + "serialize-error": "^11.0.2", + "typescript": "4.9.5" + } + }, "@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", diff --git a/sdks/aperture-js/example/package.json b/sdks/aperture-js/example/package.json index 1f599983b1..0232b8a182 100644 --- a/sdks/aperture-js/example/package.json +++ b/sdks/aperture-js/example/package.json @@ -14,6 +14,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { + "@fluxninja/aperture-js": "^2.3.3", "express": "^4.18.2", "http-terminator": "^3.2.0" }, diff --git a/sdks/aperture-js/example/routes/connected.ts b/sdks/aperture-js/example/routes/connected.ts index 8233d0a91e..9e4edd3049 100644 --- a/sdks/aperture-js/example/routes/connected.ts +++ b/sdks/aperture-js/example/routes/connected.ts @@ -4,10 +4,10 @@ import { apertureClient } from "./use_aperture.js"; export const connectedRouter = express.Router(); -connectedRouter.get("/", function (_: express.Request, res:express.Response) { +connectedRouter.get("/", function (_: express.Request, res: express.Response) { try { let clientState = apertureClient.GetState(); - if (clientState != grpc.connectivityState.READY) { + if (clientState !== grpc.connectivityState.READY) { res.status(503).send("Unavailable"); } else { res.status(200).send("Connected"); diff --git a/sdks/aperture-js/example/routes/use_aperture.ts b/sdks/aperture-js/example/routes/use_aperture.ts index 9bd9d93d30..1a41d0a452 100644 --- a/sdks/aperture-js/example/routes/use_aperture.ts +++ b/sdks/aperture-js/example/routes/use_aperture.ts @@ -1,8 +1,8 @@ import express from "express"; - import { ApertureClient, Flow, FlowStatusEnum } from "@fluxninja/aperture-js"; import grpc from "@grpc/grpc-js"; + // Create aperture client export const apertureClient = new ApertureClient({ address: @@ -18,45 +18,56 @@ export const apertureClient = new ApertureClient({ }); export const apertureRoute = express.Router(); -apertureRoute.get("/", function (_: express.Request, res: express.Response) { - // do some business logic to collect labels - const labels: Record = { - user: "kenobi", - }; +apertureRoute.get("/", async (_: express.Request, res: express.Response) => { + const labels: Record = { user: "kenobi" }; const startTimestamp = Date.now(); + let flow: Flow | undefined = undefined; - // StartFlow performs a flowcontrolv1.Check call to Aperture Agent. It returns a Flow and an error if any. - apertureClient - .StartFlow("awesomeFeature", { + try { + flow = await apertureClient.StartFlow("awesomeFeature", { labels: labels, grpcCallOptions: { deadline: Date.now() + 30000, }, - }) - .then((flow: Flow) => { - const endTimestamp = Date.now(); - console.log(`Flow took ${endTimestamp - startTimestamp}ms`); - // See whether flow was accepted by Aperture Agent. - if (flow.ShouldRun()) { - // Simulate work being done - sleep(200).then(() => { - console.log("Work done!"); - res.sendStatus(202); - }); - } else { - // Flow has been rejected by Aperture Agent. - flow.SetStatus(FlowStatusEnum.Error); - res.sendStatus(403); - } - // Need to call End() on the Flow in order to provide telemetry to Aperture Agent for completing the control loop. - // Status set using SetStatus() informs whether the feature captured by the Flow was successful or resulted in an error. - flow.End(); - }) - .catch((e: unknown) => { - console.log(e); - res.status(500).send(`Error occurred: ${e}`); + rampMode: false, + cacheKey: "cache", }); + + const endTimestamp = Date.now(); + console.log(`Flow took ${endTimestamp - startTimestamp}ms`); + + if (flow.ShouldRun()) { + await sleep(200); + console.log("Work done!"); + res.sendStatus(202); + } else { + flow.SetStatus(FlowStatusEnum.Error); + res.sendStatus(403); + } + + // create a new buffer + const buffer = Buffer.from("awesomeString"); + + // set cache value + const setResult = await flow.SetCachedValue(buffer, { seconds: 30, nanos: 0 }) + if (setResult?.error) { + console.log(`Error setting cache value: ${setResult.error}`); + } + + // delete cache value + const deleteResult = await flow.DeleteCachedValue() + if (deleteResult?.error) { + console.log(`Error deleting cache value: ${deleteResult.error}`); + } + } catch (e) { + console.log(e); + res.status(500).send(`Error occurred: ${e}`); + } finally { + if (flow) { + flow.End(); + } + } }); function sleep(ms: number) { diff --git a/sdks/aperture-js/proto/flowcontrol/check/v1/check.proto b/sdks/aperture-js/proto/flowcontrol/check/v1/check.proto index daf325d5b7..d2319485d6 100644 --- a/sdks/aperture-js/proto/flowcontrol/check/v1/check.proto +++ b/sdks/aperture-js/proto/flowcontrol/check/v1/check.proto @@ -9,6 +9,8 @@ import "google/protobuf/timestamp.proto"; service FlowControlService { // Check wraps the given arbitrary resource and matches the given labels against Flow Control Limiters to makes a decision whether to allow/deny. rpc Check(CheckRequest) returns (CheckResponse) {} + rpc CacheUpsert(CacheUpsertRequest) returns (CacheUpsertResponse) {} + rpc CacheDelete(CacheDeleteRequest) returns (CacheDeleteResponse) {} } // CheckRequest contains fields required to perform Check call. @@ -16,6 +18,8 @@ message CheckRequest { string control_point = 1; map labels = 2; bool ramp_mode = 3; + // Cache item to fetch. + string cache_key = 4; } // CheckResponse contains fields that represent decision made by Check call. @@ -63,6 +67,47 @@ message CheckResponse { // http_status contains the http status code to be returned to the client, if // decision_type is REJECTED. Optional. StatusCode denied_response_status_code = 14; + // Matching cached value. + CachedValue cached_value = 15; +} + +enum CacheLookupStatus { + HIT = 0; + MISS = 1; +} + +enum CacheOperationStatus { + SUCCESS = 0; + ERROR = 1; +} + +message CachedValue { + bytes value = 1; + CacheLookupStatus lookup_status = 2; + CacheOperationStatus operation_status = 3; + string error = 4; +} + +message CacheUpsertRequest { + string control_point = 1; + string key = 2; + bytes value = 3; + google.protobuf.Duration ttl = 4; +} + +message CacheUpsertResponse { + CacheOperationStatus operation_status = 1; + string error = 2; +} + +message CacheDeleteRequest { + string control_point = 1; + string key = 2; +} + +message CacheDeleteResponse { + CacheOperationStatus operation_status = 1; + string error = 2; } // ClassifierInfo describes details for each ClassifierInfo. diff --git a/sdks/aperture-js/sdk/cache.ts b/sdks/aperture-js/sdk/cache.ts new file mode 100644 index 0000000000..3a74a74377 --- /dev/null +++ b/sdks/aperture-js/sdk/cache.ts @@ -0,0 +1,118 @@ +import { CacheLookupStatus } from "./gen/aperture/flowcontrol/check/v1/CacheLookupStatus.js"; +import { CacheOperationStatus } from "./gen/aperture/flowcontrol/check/v1/CacheOperationStatus.js"; + +export enum LookupStatus { + Hit = "HIT", + Miss = "MISS", +} + +export function ConvertCacheLookupStatus( + status: CacheLookupStatus | null | undefined, +): LookupStatus { + switch (status) { + case CacheLookupStatus.HIT: + return LookupStatus.Hit; + case CacheLookupStatus.MISS: + return LookupStatus.Miss; + default: + return LookupStatus.Miss; + } +} + +export enum OperationStatus { + Success = "SUCCESS", + Error = "ERROR", +} + +export function ConvertCacheOperationStatus( + status: CacheOperationStatus | null | undefined, +): OperationStatus { + switch (status) { + case CacheOperationStatus.SUCCESS: + return OperationStatus.Success; + case CacheOperationStatus.ERROR: + return OperationStatus.Error; + default: + return OperationStatus.Error; + } +} + +export function ConvertCacheError( + error: string | null | undefined, +): Error | null { + if (error === null || error === undefined) { + return null; + } + return new Error(error); +} + +export class CachedValueResponse { + lookupStatus: LookupStatus; + operationStatus: OperationStatus; + error: Error | null; + value: Buffer | null; + + constructor( + lookupStatus: LookupStatus, + operationStatus: OperationStatus, + error: Error | null, + value: Buffer | null, + ) { + this.lookupStatus = lookupStatus; + this.operationStatus = operationStatus; + this.error = error; + this.value = value; + } + + GetLookupStatus(): LookupStatus { + return this.lookupStatus; + } + + GetOperationStatus(): OperationStatus { + return this.operationStatus; + } + + GetError(): Error | null { + return this.error; + } + + GetValue(): Buffer | null { + return this.value; + } +} + +export class SetCachedValueResponse { + error: Error | null; + operationStatus: OperationStatus; + + constructor(error: Error | null, operationStatus: OperationStatus) { + this.error = error; + this.operationStatus = operationStatus; + } + + GetError(): Error | null { + return this.error; + } + + GetOperationStatus(): OperationStatus { + return this.operationStatus; + } +} + +export class DeleteCachedValueResponse { + error: Error | null; + operationStatus: OperationStatus; + + constructor(error: Error | null, operationStatus: OperationStatus) { + this.error = error; + this.operationStatus = operationStatus; + } + + GetError(): Error | null { + return this.error; + } + + GetOperationStatus(): OperationStatus { + return this.operationStatus; + } +} diff --git a/sdks/aperture-js/sdk/client.ts b/sdks/aperture-js/sdk/client.ts index 378be0548a..5156f96bc3 100644 --- a/sdks/aperture-js/sdk/client.ts +++ b/sdks/aperture-js/sdk/client.ts @@ -20,6 +20,8 @@ export interface FlowParams { labels?: Record; rampMode?: boolean; grpcCallOptions?: grpc.CallOptions; + tryConnect?: boolean; + cacheKey?: string; } export class ApertureClient { @@ -102,7 +104,7 @@ export class ApertureClient { let startDate = Date.now(); const resolveFlow = (response: any, err: any) => { - resolve(new Flow(span, startDate, params.rampMode, response, err)); + resolve(new Flow(this.fcsClient, params.grpcCallOptions ?? {}, controlPoint, span, startDate, params.rampMode, params.cacheKey, response, err)); }; try { @@ -121,12 +123,10 @@ export class ApertureClient { controlPoint: controlPoint, labels: mergedLabels, rampMode: params.rampMode, + cacheKey: params.cacheKey, }; - const cb: grpc.requestCallback = ( - err: any, - response: any, - ) => { + const cb: grpc.requestCallback = (err: any, response: any) => { resolveFlow(err ? null : response, err); return; }; diff --git a/sdks/aperture-js/sdk/flow.ts b/sdks/aperture-js/sdk/flow.ts index f7a6c8236d..a65de15af8 100644 --- a/sdks/aperture-js/sdk/flow.ts +++ b/sdks/aperture-js/sdk/flow.ts @@ -1,5 +1,16 @@ +import grpc from "@grpc/grpc-js"; +import { Duration } from "@grpc/grpc-js/build/src/duration.js"; import { Span } from "@opentelemetry/api"; - +import { + CachedValueResponse, + ConvertCacheError, + ConvertCacheLookupStatus, + ConvertCacheOperationStatus, + DeleteCachedValueResponse, + LookupStatus, + OperationStatus, + SetCachedValueResponse, +} from "./cache.js"; import { CHECK_RESPONSE_LABEL, FLOW_END_TIMESTAMP_LABEL, @@ -8,13 +19,14 @@ import { SOURCE_LABEL, WORKLOAD_START_TIMESTAMP_LABEL, } from "./consts.js"; +import type { CacheDeleteRequest } from "./gen/aperture/flowcontrol/check/v1/CacheDeleteRequest.js"; +import type { CacheUpsertRequest } from "./gen/aperture/flowcontrol/check/v1/CacheUpsertRequest"; import { CheckResponse__Output, _aperture_flowcontrol_check_v1_CheckResponse_DecisionType, } from "./gen/aperture/flowcontrol/check/v1/CheckResponse.js"; - +import { FlowControlServiceClient } from "./gen/aperture/flowcontrol/check/v1/FlowControlService.js"; import type { Duration__Output as _google_protobuf_Duration__Output } from "./gen/google/protobuf/Duration"; - import type { Timestamp__Output as _google_protobuf_Timestamp__Output } from "./gen/google/protobuf/Timestamp"; export const FlowStatusEnum = { @@ -29,9 +41,13 @@ export class Flow { private status: FlowStatus = FlowStatusEnum.OK; constructor( + private fcsClient: FlowControlServiceClient, + private grpcCallOptions: grpc.CallOptions, + private controlPoint: string, private span: Span, startDate: number, private rampMode: boolean = false, + private cacheKey: string | null = null, private checkResponse: CheckResponse__Output | null = null, private error: Error | null = null, ) { @@ -56,6 +72,95 @@ export class Flow { this.status = status; } + async SetCachedValue(value: Buffer, ttl: Duration) { + if (!this.cacheKey) { + return Promise.reject(new Error("No cache key")); + } + + const key = this.cacheKey; + return new Promise((resolve) => { + const cacheUpsertRequest: CacheUpsertRequest = { + controlPoint: this.controlPoint, + key: key, + value: value, + ttl: ttl, + }; + this.fcsClient.CacheUpsert( + cacheUpsertRequest, + this.grpcCallOptions, + (err, res) => { + if (err) { + const resp = new SetCachedValueResponse(err, OperationStatus.Error); + resolve(resp); + return; + } + const resp = new SetCachedValueResponse( + ConvertCacheError(res?.error), + ConvertCacheOperationStatus(res?.operationStatus), + ); + resolve(resp); + }, + ); + }); + } + + async DeleteCachedValue() { + if (!this.cacheKey) { + return Promise.reject(new Error("No cache key")); + } + + const key = this.cacheKey; + return new Promise( + (resolve, reject) => { + const cacheDeleteRequest: CacheDeleteRequest = { + controlPoint: this.controlPoint, + key: key, + }; + this.fcsClient.CacheDelete( + cacheDeleteRequest, + this.grpcCallOptions, + (err, res) => { + if (err) { + const resp = new DeleteCachedValueResponse( + err, + OperationStatus.Error, + ); + resolve(resp); + return; + } + const resp = new DeleteCachedValueResponse( + ConvertCacheError(res?.error), + ConvertCacheOperationStatus(res?.operationStatus), + ); + resolve(resp); + }, + ); + }, + ); + } + + CachedValue() { + if (this.error) { + // invoke constructor of CachedValueResponse + const resp = new CachedValueResponse( + LookupStatus.Miss, + OperationStatus.Error, + this.error, + null, + ); + return resp; + } + const resp = new CachedValueResponse( + ConvertCacheLookupStatus(this.checkResponse?.cachedValue?.lookupStatus), + ConvertCacheOperationStatus( + this.checkResponse?.cachedValue?.operationStatus, + ), + ConvertCacheError(this.checkResponse?.cachedValue?.error), + this.checkResponse?.cachedValue?.value ?? null, + ); + return resp; + } + Error() { return this.error; } @@ -80,6 +185,7 @@ export class Flow { // PR: https://github.com/protobufjs/protobuf.js/pull/1258 // Current timestamp type: https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/timestamp.proto const localCheckResponse = this.checkResponse as any; + localCheckResponse.start = this.protoTimestampToJSON( this.checkResponse.start, ); @@ -89,6 +195,7 @@ export class Flow { localCheckResponse.waitTime = this.protoDurationToJSON( this.checkResponse.waitTime, ); + // Walk through individual decisions and convert waitTime fields, // then add to localCheckResponse, preserving immutability. if (this.checkResponse.limiterDecisions) { @@ -102,6 +209,7 @@ export class Flow { ); localCheckResponse.limiterDecisions = decisions; } + this.span.setAttribute( CHECK_RESPONSE_LABEL, JSON.stringify(localCheckResponse), @@ -109,9 +217,7 @@ export class Flow { } this.span.setAttribute(FLOW_STATUS_LABEL, this.status); - this.span.setAttribute(FLOW_END_TIMESTAMP_LABEL, Date.now()); - this.span.end(); } diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheDeleteRequest.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheDeleteRequest.ts new file mode 100644 index 0000000000..302facdd96 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheDeleteRequest.ts @@ -0,0 +1,12 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + + +export interface CacheDeleteRequest { + 'controlPoint'?: (string); + 'key'?: (string); +} + +export interface CacheDeleteRequest__Output { + 'controlPoint': (string); + 'key': (string); +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheDeleteResponse.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheDeleteResponse.ts new file mode 100644 index 0000000000..02c3206fc1 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheDeleteResponse.ts @@ -0,0 +1,13 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +import type { CacheOperationStatus as _aperture_flowcontrol_check_v1_CacheOperationStatus, CacheOperationStatus__Output as _aperture_flowcontrol_check_v1_CacheOperationStatus__Output } from '../../../../aperture/flowcontrol/check/v1/CacheOperationStatus'; + +export interface CacheDeleteResponse { + 'operationStatus'?: (_aperture_flowcontrol_check_v1_CacheOperationStatus); + 'error'?: (string); +} + +export interface CacheDeleteResponse__Output { + 'operationStatus': (_aperture_flowcontrol_check_v1_CacheOperationStatus__Output); + 'error': (string); +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheItem.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheItem.ts new file mode 100644 index 0000000000..23802e77c9 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheItem.ts @@ -0,0 +1,8 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + + +export interface CacheItem { +} + +export interface CacheItem__Output { +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheLookupResult.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheLookupResult.ts new file mode 100644 index 0000000000..31262fcc1a --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheLookupResult.ts @@ -0,0 +1,14 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +export const CacheLookupResult = { + HIT: 0, + MISS: 1, +} as const; + +export type CacheLookupResult = + | 'HIT' + | 0 + | 'MISS' + | 1 + +export type CacheLookupResult__Output = typeof CacheLookupResult[keyof typeof CacheLookupResult] diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheLookupStatus.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheLookupStatus.ts new file mode 100644 index 0000000000..71f77bed76 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheLookupStatus.ts @@ -0,0 +1,14 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +export const CacheLookupStatus = { + HIT: 0, + MISS: 1, +} as const; + +export type CacheLookupStatus = + | 'HIT' + | 0 + | 'MISS' + | 1 + +export type CacheLookupStatus__Output = typeof CacheLookupStatus[keyof typeof CacheLookupStatus] diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheOperationStatus.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheOperationStatus.ts new file mode 100644 index 0000000000..fdbde8eca4 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheOperationStatus.ts @@ -0,0 +1,14 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +export const CacheOperationStatus = { + SUCCESS: 0, + ERROR: 1, +} as const; + +export type CacheOperationStatus = + | 'SUCCESS' + | 0 + | 'ERROR' + | 1 + +export type CacheOperationStatus__Output = typeof CacheOperationStatus[keyof typeof CacheOperationStatus] diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheRequest.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheRequest.ts new file mode 100644 index 0000000000..6d235df6a2 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheRequest.ts @@ -0,0 +1,13 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +import type { CacheItem as _aperture_flowcontrol_check_v1_CacheItem, CacheItem__Output as _aperture_flowcontrol_check_v1_CacheItem__Output } from '../../../../aperture/flowcontrol/check/v1/CacheItem'; + +export interface CacheRequest { + 'upserts'?: ({[key: string]: _aperture_flowcontrol_check_v1_CacheItem}); + 'deletes'?: (string)[]; +} + +export interface CacheRequest__Output { + 'upserts': ({[key: string]: _aperture_flowcontrol_check_v1_CacheItem__Output}); + 'deletes': (string)[]; +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResponse.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResponse.ts new file mode 100644 index 0000000000..8c27c5ae8c --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResponse.ts @@ -0,0 +1,13 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +import type { CacheResult as _aperture_flowcontrol_check_v1_CacheResult, CacheResult__Output as _aperture_flowcontrol_check_v1_CacheResult__Output } from '../../../../aperture/flowcontrol/check/v1/CacheResult'; + +export interface CacheResponse { + 'value'?: (Buffer | Uint8Array | string); + 'result'?: (_aperture_flowcontrol_check_v1_CacheResult); +} + +export interface CacheResponse__Output { + 'value': (Buffer); + 'result': (_aperture_flowcontrol_check_v1_CacheResult__Output); +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResponseCode.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResponseCode.ts new file mode 100644 index 0000000000..72b6fda607 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResponseCode.ts @@ -0,0 +1,14 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +export const CacheResponseCode = { + SUCCESS: 0, + ERROR: 1, +} as const; + +export type CacheResponseCode = + | 'SUCCESS' + | 0 + | 'ERROR' + | 1 + +export type CacheResponseCode__Output = typeof CacheResponseCode[keyof typeof CacheResponseCode] diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResult.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResult.ts new file mode 100644 index 0000000000..6df2f453ee --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheResult.ts @@ -0,0 +1,14 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +export const CacheResult = { + Hit: 0, + Miss: 1, +} as const; + +export type CacheResult = + | 'Hit' + | 0 + | 'Miss' + | 1 + +export type CacheResult__Output = typeof CacheResult[keyof typeof CacheResult] diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheUpsertRequest.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheUpsertRequest.ts new file mode 100644 index 0000000000..aece418d57 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheUpsertRequest.ts @@ -0,0 +1,17 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +import type { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration'; + +export interface CacheUpsertRequest { + 'controlPoint'?: (string); + 'key'?: (string); + 'value'?: (Buffer | Uint8Array | string); + 'ttl'?: (_google_protobuf_Duration | null); +} + +export interface CacheUpsertRequest__Output { + 'controlPoint': (string); + 'key': (string); + 'value': (Buffer); + 'ttl': (_google_protobuf_Duration__Output | null); +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheUpsertResponse.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheUpsertResponse.ts new file mode 100644 index 0000000000..4cc645cf30 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CacheUpsertResponse.ts @@ -0,0 +1,13 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +import type { CacheOperationStatus as _aperture_flowcontrol_check_v1_CacheOperationStatus, CacheOperationStatus__Output as _aperture_flowcontrol_check_v1_CacheOperationStatus__Output } from '../../../../aperture/flowcontrol/check/v1/CacheOperationStatus'; + +export interface CacheUpsertResponse { + 'operationStatus'?: (_aperture_flowcontrol_check_v1_CacheOperationStatus); + 'error'?: (string); +} + +export interface CacheUpsertResponse__Output { + 'operationStatus': (_aperture_flowcontrol_check_v1_CacheOperationStatus__Output); + 'error': (string); +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CachedValue.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CachedValue.ts new file mode 100644 index 0000000000..76066a5b61 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CachedValue.ts @@ -0,0 +1,18 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +import type { CacheLookupStatus as _aperture_flowcontrol_check_v1_CacheLookupStatus, CacheLookupStatus__Output as _aperture_flowcontrol_check_v1_CacheLookupStatus__Output } from '../../../../aperture/flowcontrol/check/v1/CacheLookupStatus'; +import type { CacheOperationStatus as _aperture_flowcontrol_check_v1_CacheOperationStatus, CacheOperationStatus__Output as _aperture_flowcontrol_check_v1_CacheOperationStatus__Output } from '../../../../aperture/flowcontrol/check/v1/CacheOperationStatus'; + +export interface CachedValue { + 'value'?: (Buffer | Uint8Array | string); + 'lookupStatus'?: (_aperture_flowcontrol_check_v1_CacheLookupStatus); + 'operationStatus'?: (_aperture_flowcontrol_check_v1_CacheOperationStatus); + 'error'?: (string); +} + +export interface CachedValue__Output { + 'value': (Buffer); + 'lookupStatus': (_aperture_flowcontrol_check_v1_CacheLookupStatus__Output); + 'operationStatus': (_aperture_flowcontrol_check_v1_CacheOperationStatus__Output); + 'error': (string); +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CheckRequest.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CheckRequest.ts index f87bbccd9f..364929b602 100644 --- a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CheckRequest.ts +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CheckRequest.ts @@ -5,10 +5,12 @@ export interface CheckRequest { 'controlPoint'?: (string); 'labels'?: ({[key: string]: string}); 'rampMode'?: (boolean); + 'cacheKey'?: (string); } export interface CheckRequest__Output { 'controlPoint': (string); 'labels': ({[key: string]: string}); 'rampMode': (boolean); + 'cacheKey': (string); } diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CheckResponse.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CheckResponse.ts index ac5a1e647a..123cf9fcbe 100644 --- a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CheckResponse.ts +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/CheckResponse.ts @@ -6,6 +6,7 @@ import type { FluxMeterInfo as _aperture_flowcontrol_check_v1_FluxMeterInfo, Flu import type { LimiterDecision as _aperture_flowcontrol_check_v1_LimiterDecision, LimiterDecision__Output as _aperture_flowcontrol_check_v1_LimiterDecision__Output } from '../../../../aperture/flowcontrol/check/v1/LimiterDecision'; import type { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration'; import type { StatusCode as _aperture_flowcontrol_check_v1_StatusCode, StatusCode__Output as _aperture_flowcontrol_check_v1_StatusCode__Output } from '../../../../aperture/flowcontrol/check/v1/StatusCode'; +import type { CachedValue as _aperture_flowcontrol_check_v1_CachedValue, CachedValue__Output as _aperture_flowcontrol_check_v1_CachedValue__Output } from '../../../../aperture/flowcontrol/check/v1/CachedValue'; // Original file: proto/flowcontrol/check/v1/check.proto @@ -60,6 +61,7 @@ export interface CheckResponse { 'limiterDecisions'?: (_aperture_flowcontrol_check_v1_LimiterDecision)[]; 'waitTime'?: (_google_protobuf_Duration | null); 'deniedResponseStatusCode'?: (_aperture_flowcontrol_check_v1_StatusCode); + 'cachedValue'?: (_aperture_flowcontrol_check_v1_CachedValue | null); } export interface CheckResponse__Output { @@ -76,4 +78,5 @@ export interface CheckResponse__Output { 'limiterDecisions': (_aperture_flowcontrol_check_v1_LimiterDecision__Output)[]; 'waitTime': (_google_protobuf_Duration__Output | null); 'deniedResponseStatusCode': (_aperture_flowcontrol_check_v1_StatusCode__Output); + 'cachedValue': (_aperture_flowcontrol_check_v1_CachedValue__Output | null); } diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/FlowControlService.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/FlowControlService.ts index a5d32d5ef7..8180e6510d 100644 --- a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/FlowControlService.ts +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/FlowControlService.ts @@ -2,10 +2,32 @@ import type * as grpc from '@grpc/grpc-js' import type { MethodDefinition } from '@grpc/proto-loader' +import type { CacheDeleteRequest as _aperture_flowcontrol_check_v1_CacheDeleteRequest, CacheDeleteRequest__Output as _aperture_flowcontrol_check_v1_CacheDeleteRequest__Output } from '../../../../aperture/flowcontrol/check/v1/CacheDeleteRequest'; +import type { CacheDeleteResponse as _aperture_flowcontrol_check_v1_CacheDeleteResponse, CacheDeleteResponse__Output as _aperture_flowcontrol_check_v1_CacheDeleteResponse__Output } from '../../../../aperture/flowcontrol/check/v1/CacheDeleteResponse'; +import type { CacheUpsertRequest as _aperture_flowcontrol_check_v1_CacheUpsertRequest, CacheUpsertRequest__Output as _aperture_flowcontrol_check_v1_CacheUpsertRequest__Output } from '../../../../aperture/flowcontrol/check/v1/CacheUpsertRequest'; +import type { CacheUpsertResponse as _aperture_flowcontrol_check_v1_CacheUpsertResponse, CacheUpsertResponse__Output as _aperture_flowcontrol_check_v1_CacheUpsertResponse__Output } from '../../../../aperture/flowcontrol/check/v1/CacheUpsertResponse'; import type { CheckRequest as _aperture_flowcontrol_check_v1_CheckRequest, CheckRequest__Output as _aperture_flowcontrol_check_v1_CheckRequest__Output } from '../../../../aperture/flowcontrol/check/v1/CheckRequest'; import type { CheckResponse as _aperture_flowcontrol_check_v1_CheckResponse, CheckResponse__Output as _aperture_flowcontrol_check_v1_CheckResponse__Output } from '../../../../aperture/flowcontrol/check/v1/CheckResponse'; export interface FlowControlServiceClient extends grpc.Client { + CacheDelete(argument: _aperture_flowcontrol_check_v1_CacheDeleteRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheDeleteResponse__Output>): grpc.ClientUnaryCall; + CacheDelete(argument: _aperture_flowcontrol_check_v1_CacheDeleteRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheDeleteResponse__Output>): grpc.ClientUnaryCall; + CacheDelete(argument: _aperture_flowcontrol_check_v1_CacheDeleteRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheDeleteResponse__Output>): grpc.ClientUnaryCall; + CacheDelete(argument: _aperture_flowcontrol_check_v1_CacheDeleteRequest, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheDeleteResponse__Output>): grpc.ClientUnaryCall; + cacheDelete(argument: _aperture_flowcontrol_check_v1_CacheDeleteRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheDeleteResponse__Output>): grpc.ClientUnaryCall; + cacheDelete(argument: _aperture_flowcontrol_check_v1_CacheDeleteRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheDeleteResponse__Output>): grpc.ClientUnaryCall; + cacheDelete(argument: _aperture_flowcontrol_check_v1_CacheDeleteRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheDeleteResponse__Output>): grpc.ClientUnaryCall; + cacheDelete(argument: _aperture_flowcontrol_check_v1_CacheDeleteRequest, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheDeleteResponse__Output>): grpc.ClientUnaryCall; + + CacheUpsert(argument: _aperture_flowcontrol_check_v1_CacheUpsertRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheUpsertResponse__Output>): grpc.ClientUnaryCall; + CacheUpsert(argument: _aperture_flowcontrol_check_v1_CacheUpsertRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheUpsertResponse__Output>): grpc.ClientUnaryCall; + CacheUpsert(argument: _aperture_flowcontrol_check_v1_CacheUpsertRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheUpsertResponse__Output>): grpc.ClientUnaryCall; + CacheUpsert(argument: _aperture_flowcontrol_check_v1_CacheUpsertRequest, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheUpsertResponse__Output>): grpc.ClientUnaryCall; + cacheUpsert(argument: _aperture_flowcontrol_check_v1_CacheUpsertRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheUpsertResponse__Output>): grpc.ClientUnaryCall; + cacheUpsert(argument: _aperture_flowcontrol_check_v1_CacheUpsertRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheUpsertResponse__Output>): grpc.ClientUnaryCall; + cacheUpsert(argument: _aperture_flowcontrol_check_v1_CacheUpsertRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheUpsertResponse__Output>): grpc.ClientUnaryCall; + cacheUpsert(argument: _aperture_flowcontrol_check_v1_CacheUpsertRequest, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CacheUpsertResponse__Output>): grpc.ClientUnaryCall; + Check(argument: _aperture_flowcontrol_check_v1_CheckRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CheckResponse__Output>): grpc.ClientUnaryCall; Check(argument: _aperture_flowcontrol_check_v1_CheckRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CheckResponse__Output>): grpc.ClientUnaryCall; Check(argument: _aperture_flowcontrol_check_v1_CheckRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_aperture_flowcontrol_check_v1_CheckResponse__Output>): grpc.ClientUnaryCall; @@ -18,10 +40,16 @@ export interface FlowControlServiceClient extends grpc.Client { } export interface FlowControlServiceHandlers extends grpc.UntypedServiceImplementation { + CacheDelete: grpc.handleUnaryCall<_aperture_flowcontrol_check_v1_CacheDeleteRequest__Output, _aperture_flowcontrol_check_v1_CacheDeleteResponse>; + + CacheUpsert: grpc.handleUnaryCall<_aperture_flowcontrol_check_v1_CacheUpsertRequest__Output, _aperture_flowcontrol_check_v1_CacheUpsertResponse>; + Check: grpc.handleUnaryCall<_aperture_flowcontrol_check_v1_CheckRequest__Output, _aperture_flowcontrol_check_v1_CheckResponse>; } export interface FlowControlServiceDefinition extends grpc.ServiceDefinition { + CacheDelete: MethodDefinition<_aperture_flowcontrol_check_v1_CacheDeleteRequest, _aperture_flowcontrol_check_v1_CacheDeleteResponse, _aperture_flowcontrol_check_v1_CacheDeleteRequest__Output, _aperture_flowcontrol_check_v1_CacheDeleteResponse__Output> + CacheUpsert: MethodDefinition<_aperture_flowcontrol_check_v1_CacheUpsertRequest, _aperture_flowcontrol_check_v1_CacheUpsertResponse, _aperture_flowcontrol_check_v1_CacheUpsertRequest__Output, _aperture_flowcontrol_check_v1_CacheUpsertResponse__Output> Check: MethodDefinition<_aperture_flowcontrol_check_v1_CheckRequest, _aperture_flowcontrol_check_v1_CheckResponse, _aperture_flowcontrol_check_v1_CheckRequest__Output, _aperture_flowcontrol_check_v1_CheckResponse__Output> } diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/FlowEnd.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/FlowEnd.ts new file mode 100644 index 0000000000..6c40618f42 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/FlowEnd.ts @@ -0,0 +1,13 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +import type { CacheItem as _aperture_flowcontrol_check_v1_CacheItem, CacheItem__Output as _aperture_flowcontrol_check_v1_CacheItem__Output } from '../../../../aperture/flowcontrol/check/v1/CacheItem'; + +export interface FlowEnd { + 'upserts'?: ({[key: string]: _aperture_flowcontrol_check_v1_CacheItem}); + 'deletes'?: (string)[]; +} + +export interface FlowEnd__Output { + 'upserts': ({[key: string]: _aperture_flowcontrol_check_v1_CacheItem__Output}); + 'deletes': (string)[]; +} diff --git a/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/LookupResult.ts b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/LookupResult.ts new file mode 100644 index 0000000000..e01a33ebe5 --- /dev/null +++ b/sdks/aperture-js/sdk/gen/aperture/flowcontrol/check/v1/LookupResult.ts @@ -0,0 +1,14 @@ +// Original file: proto/flowcontrol/check/v1/check.proto + +export const LookupResult = { + Hit: 0, + Miss: 1, +} as const; + +export type LookupResult = + | 'Hit' + | 0 + | 'Miss' + | 1 + +export type LookupResult__Output = typeof LookupResult[keyof typeof LookupResult] diff --git a/sdks/aperture-js/sdk/gen/check.ts b/sdks/aperture-js/sdk/gen/check.ts index b3f98a883b..c6dcd3bc96 100644 --- a/sdks/aperture-js/sdk/gen/check.ts +++ b/sdks/aperture-js/sdk/gen/check.ts @@ -12,6 +12,13 @@ export interface ProtoGrpcType { flowcontrol: { check: { v1: { + CacheDeleteRequest: MessageTypeDefinition + CacheDeleteResponse: MessageTypeDefinition + CacheLookupStatus: EnumTypeDefinition + CacheOperationStatus: EnumTypeDefinition + CacheUpsertRequest: MessageTypeDefinition + CacheUpsertResponse: MessageTypeDefinition + CachedValue: MessageTypeDefinition CheckRequest: MessageTypeDefinition CheckResponse: MessageTypeDefinition ClassifierInfo: MessageTypeDefinition diff --git a/sdks/aperture-js/sdk/gen/google/protobuf/Empty.ts b/sdks/aperture-js/sdk/gen/google/protobuf/Empty.ts new file mode 100644 index 0000000000..f32c2a284b --- /dev/null +++ b/sdks/aperture-js/sdk/gen/google/protobuf/Empty.ts @@ -0,0 +1,8 @@ +// Original file: null + + +export interface Empty { +} + +export interface Empty__Output { +} diff --git a/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2.py b/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2.py index e6b9863808..8774a076f7 100644 --- a/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2.py +++ b/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2.py @@ -15,7 +15,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)aperture/flowcontrol/check/v1/check.proto\x12\x1d\x61perture.flowcontrol.check.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xdc\x01\n\x0c\x43heckRequest\x12#\n\rcontrol_point\x18\x01 \x01(\tR\x0c\x63ontrolPoint\x12O\n\x06labels\x18\x02 \x03(\x0b\x32\x37.aperture.flowcontrol.check.v1.CheckRequest.LabelsEntryR\x06labels\x12\x1b\n\tramp_mode\x18\x03 \x01(\x08R\x08rampMode\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xfd\t\n\rCheckResponse\x12\x30\n\x05start\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x05start\x12,\n\x03\x65nd\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x03\x65nd\x12\x1a\n\x08services\x18\x04 \x03(\tR\x08services\x12#\n\rcontrol_point\x18\x05 \x01(\tR\x0c\x63ontrolPoint\x12&\n\x0f\x66low_label_keys\x18\x06 \x03(\tR\rflowLabelKeys\x12y\n\x15telemetry_flow_labels\x18\x07 \x03(\x0b\x32\x45.aperture.flowcontrol.check.v1.CheckResponse.TelemetryFlowLabelsEntryR\x13telemetryFlowLabels\x12^\n\rdecision_type\x18\x08 \x01(\x0e\x32\x39.aperture.flowcontrol.check.v1.CheckResponse.DecisionTypeR\x0c\x64\x65\x63isionType\x12^\n\rreject_reason\x18\t \x01(\x0e\x32\x39.aperture.flowcontrol.check.v1.CheckResponse.RejectReasonR\x0crejectReason\x12X\n\x10\x63lassifier_infos\x18\n \x03(\x0b\x32-.aperture.flowcontrol.check.v1.ClassifierInfoR\x0f\x63lassifierInfos\x12V\n\x10\x66lux_meter_infos\x18\x0b \x03(\x0b\x32,.aperture.flowcontrol.check.v1.FluxMeterInfoR\x0e\x66luxMeterInfos\x12[\n\x11limiter_decisions\x18\x0c \x03(\x0b\x32..aperture.flowcontrol.check.v1.LimiterDecisionR\x10limiterDecisions\x12\x36\n\twait_time\x18\r \x01(\x0b\x32\x19.google.protobuf.DurationR\x08waitTime\x12h\n\x1b\x64\x65nied_response_status_code\x18\x0e \x01(\x0e\x32).aperture.flowcontrol.check.v1.StatusCodeR\x18\x64\x65niedResponseStatusCode\x1a\x46\n\x18TelemetryFlowLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xa6\x01\n\x0cRejectReason\x12\x16\n\x12REJECT_REASON_NONE\x10\x00\x12\x1e\n\x1aREJECT_REASON_RATE_LIMITED\x10\x01\x12\x1b\n\x17REJECT_REASON_NO_TOKENS\x10\x02\x12\x1d\n\x19REJECT_REASON_NOT_SAMPLED\x10\x03\x12\"\n\x1eREJECT_REASON_NO_MATCHING_RAMP\x10\x04\"F\n\x0c\x44\x65\x63isionType\x12\x1a\n\x16\x44\x45\x43ISION_TYPE_ACCEPTED\x10\x00\x12\x1a\n\x16\x44\x45\x43ISION_TYPE_REJECTED\x10\x01\"\xed\x02\n\x0e\x43lassifierInfo\x12\x1f\n\x0bpolicy_name\x18\x01 \x01(\tR\npolicyName\x12\x1f\n\x0bpolicy_hash\x18\x02 \x01(\tR\npolicyHash\x12)\n\x10\x63lassifier_index\x18\x03 \x01(\x03R\x0f\x63lassifierIndex\x12I\n\x05\x65rror\x18\x05 \x01(\x0e\x32\x33.aperture.flowcontrol.check.v1.ClassifierInfo.ErrorR\x05\x65rror\"\xa2\x01\n\x05\x45rror\x12\x0e\n\nERROR_NONE\x10\x00\x12\x15\n\x11\x45RROR_EVAL_FAILED\x10\x01\x12\x19\n\x15\x45RROR_EMPTY_RESULTSET\x10\x02\x12\x1d\n\x19\x45RROR_AMBIGUOUS_RESULTSET\x10\x03\x12\x1a\n\x16\x45RROR_MULTI_EXPRESSION\x10\x04\x12\x1c\n\x18\x45RROR_EXPRESSION_NOT_MAP\x10\x05\"\xa6\x0c\n\x0fLimiterDecision\x12\x1f\n\x0bpolicy_name\x18\x01 \x01(\tR\npolicyName\x12\x1f\n\x0bpolicy_hash\x18\x02 \x01(\tR\npolicyHash\x12!\n\x0c\x63omponent_id\x18\x03 \x01(\tR\x0b\x63omponentId\x12\x18\n\x07\x64ropped\x18\x04 \x01(\x08R\x07\x64ropped\x12T\n\x06reason\x18\x05 \x01(\x0e\x32<.aperture.flowcontrol.check.v1.LimiterDecision.LimiterReasonR\x06reason\x12h\n\x1b\x64\x65nied_response_status_code\x18\n \x01(\x0e\x32).aperture.flowcontrol.check.v1.StatusCodeR\x18\x64\x65niedResponseStatusCode\x12\x36\n\twait_time\x18\x0b \x01(\x0b\x32\x19.google.protobuf.DurationR\x08waitTime\x12l\n\x11rate_limiter_info\x18\x14 \x01(\x0b\x32>.aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfoH\x00R\x0frateLimiterInfo\x12n\n\x13load_scheduler_info\x18\x15 \x01(\x0b\x32<.aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfoH\x00R\x11loadSchedulerInfo\x12_\n\x0csampler_info\x18\x16 \x01(\x0b\x32:.aperture.flowcontrol.check.v1.LimiterDecision.SamplerInfoH\x00R\x0bsamplerInfo\x12u\n\x14quota_scheduler_info\x18\x17 \x01(\x0b\x32\x41.aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfoH\x00R\x12quotaSchedulerInfo\x1a`\n\nTokensInfo\x12\x1c\n\tremaining\x18\x01 \x01(\x01R\tremaining\x12\x18\n\x07\x63urrent\x18\x02 \x01(\x01R\x07\x63urrent\x12\x1a\n\x08\x63onsumed\x18\x03 \x01(\x01R\x08\x63onsumed\x1a\x83\x01\n\x0fRateLimiterInfo\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12Z\n\x0btokens_info\x18\x02 \x01(\x0b\x32\x39.aperture.flowcontrol.check.v1.LimiterDecision.TokensInfoR\ntokensInfo\x1a\xae\x01\n\rSchedulerInfo\x12%\n\x0eworkload_index\x18\x01 \x01(\tR\rworkloadIndex\x12Z\n\x0btokens_info\x18\x02 \x01(\x0b\x32\x39.aperture.flowcontrol.check.v1.LimiterDecision.TokensInfoR\ntokensInfo\x12\x1a\n\x08priority\x18\x03 \x01(\x01R\x08priority\x1a#\n\x0bSamplerInfo\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x1a\xc9\x01\n\x12QuotaSchedulerInfo\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12%\n\x0eworkload_index\x18\x02 \x01(\tR\rworkloadIndex\x12Z\n\x0btokens_info\x18\x03 \x01(\x0b\x32\x39.aperture.flowcontrol.check.v1.LimiterDecision.TokensInfoR\ntokensInfo\x12\x1a\n\x08priority\x18\x04 \x01(\x01R\x08priority\"Q\n\rLimiterReason\x12\x1e\n\x1aLIMITER_REASON_UNSPECIFIED\x10\x00\x12 \n\x1cLIMITER_REASON_KEY_NOT_FOUND\x10\x01\x42\t\n\x07\x64\x65tails\"7\n\rFluxMeterInfo\x12&\n\x0f\x66lux_meter_name\x18\x01 \x01(\tR\rfluxMeterName*\xb5\t\n\nStatusCode\x12\t\n\x05\x45mpty\x10\x00\x12\x0c\n\x08\x43ontinue\x10\x64\x12\x07\n\x02OK\x10\xc8\x01\x12\x0c\n\x07\x43reated\x10\xc9\x01\x12\r\n\x08\x41\x63\x63\x65pted\x10\xca\x01\x12 \n\x1bNonAuthoritativeInformation\x10\xcb\x01\x12\x0e\n\tNoContent\x10\xcc\x01\x12\x11\n\x0cResetContent\x10\xcd\x01\x12\x13\n\x0ePartialContent\x10\xce\x01\x12\x10\n\x0bMultiStatus\x10\xcf\x01\x12\x14\n\x0f\x41lreadyReported\x10\xd0\x01\x12\x0b\n\x06IMUsed\x10\xe2\x01\x12\x14\n\x0fMultipleChoices\x10\xac\x02\x12\x15\n\x10MovedPermanently\x10\xad\x02\x12\n\n\x05\x46ound\x10\xae\x02\x12\r\n\x08SeeOther\x10\xaf\x02\x12\x10\n\x0bNotModified\x10\xb0\x02\x12\r\n\x08UseProxy\x10\xb1\x02\x12\x16\n\x11TemporaryRedirect\x10\xb3\x02\x12\x16\n\x11PermanentRedirect\x10\xb4\x02\x12\x0f\n\nBadRequest\x10\x90\x03\x12\x11\n\x0cUnauthorized\x10\x91\x03\x12\x14\n\x0fPaymentRequired\x10\x92\x03\x12\x0e\n\tForbidden\x10\x93\x03\x12\r\n\x08NotFound\x10\x94\x03\x12\x15\n\x10MethodNotAllowed\x10\x95\x03\x12\x12\n\rNotAcceptable\x10\x96\x03\x12 \n\x1bProxyAuthenticationRequired\x10\x97\x03\x12\x13\n\x0eRequestTimeout\x10\x98\x03\x12\r\n\x08\x43onflict\x10\x99\x03\x12\t\n\x04Gone\x10\x9a\x03\x12\x13\n\x0eLengthRequired\x10\x9b\x03\x12\x17\n\x12PreconditionFailed\x10\x9c\x03\x12\x14\n\x0fPayloadTooLarge\x10\x9d\x03\x12\x0f\n\nURITooLong\x10\x9e\x03\x12\x19\n\x14UnsupportedMediaType\x10\x9f\x03\x12\x18\n\x13RangeNotSatisfiable\x10\xa0\x03\x12\x16\n\x11\x45xpectationFailed\x10\xa1\x03\x12\x17\n\x12MisdirectedRequest\x10\xa5\x03\x12\x18\n\x13UnprocessableEntity\x10\xa6\x03\x12\x0b\n\x06Locked\x10\xa7\x03\x12\x15\n\x10\x46\x61iledDependency\x10\xa8\x03\x12\x14\n\x0fUpgradeRequired\x10\xaa\x03\x12\x19\n\x14PreconditionRequired\x10\xac\x03\x12\x14\n\x0fTooManyRequests\x10\xad\x03\x12 \n\x1bRequestHeaderFieldsTooLarge\x10\xaf\x03\x12\x18\n\x13InternalServerError\x10\xf4\x03\x12\x13\n\x0eNotImplemented\x10\xf5\x03\x12\x0f\n\nBadGateway\x10\xf6\x03\x12\x17\n\x12ServiceUnavailable\x10\xf7\x03\x12\x13\n\x0eGatewayTimeout\x10\xf8\x03\x12\x1c\n\x17HTTPVersionNotSupported\x10\xf9\x03\x12\x1a\n\x15VariantAlsoNegotiates\x10\xfa\x03\x12\x18\n\x13InsufficientStorage\x10\xfb\x03\x12\x11\n\x0cLoopDetected\x10\xfc\x03\x12\x10\n\x0bNotExtended\x10\xfe\x03\x12\"\n\x1dNetworkAuthenticationRequired\x10\xff\x03\x32z\n\x12\x46lowControlService\x12\x64\n\x05\x43heck\x12+.aperture.flowcontrol.check.v1.CheckRequest\x1a,.aperture.flowcontrol.check.v1.CheckResponse\"\x00\x42\xb3\x02\n5com.fluxninja.generated.aperture.flowcontrol.check.v1B\nCheckProtoP\x01ZWgithub.com/fluxninja/aperture/v2/api/gen/proto/go/aperture/flowcontrol/check/v1;checkv1\xa2\x02\x03\x41\x46\x43\xaa\x02\x1d\x41perture.Flowcontrol.Check.V1\xca\x02\x1d\x41perture\\Flowcontrol\\Check\\V1\xe2\x02)Aperture\\Flowcontrol\\Check\\V1\\GPBMetadata\xea\x02 Aperture::Flowcontrol::Check::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)aperture/flowcontrol/check/v1/check.proto\x12\x1d\x61perture.flowcontrol.check.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf9\x01\n\x0c\x43heckRequest\x12#\n\rcontrol_point\x18\x01 \x01(\tR\x0c\x63ontrolPoint\x12O\n\x06labels\x18\x02 \x03(\x0b\x32\x37.aperture.flowcontrol.check.v1.CheckRequest.LabelsEntryR\x06labels\x12\x1b\n\tramp_mode\x18\x03 \x01(\x08R\x08rampMode\x12\x1b\n\tcache_key\x18\x04 \x01(\tR\x08\x63\x61\x63heKey\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xcc\n\n\rCheckResponse\x12\x30\n\x05start\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x05start\x12,\n\x03\x65nd\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x03\x65nd\x12\x1a\n\x08services\x18\x04 \x03(\tR\x08services\x12#\n\rcontrol_point\x18\x05 \x01(\tR\x0c\x63ontrolPoint\x12&\n\x0f\x66low_label_keys\x18\x06 \x03(\tR\rflowLabelKeys\x12y\n\x15telemetry_flow_labels\x18\x07 \x03(\x0b\x32\x45.aperture.flowcontrol.check.v1.CheckResponse.TelemetryFlowLabelsEntryR\x13telemetryFlowLabels\x12^\n\rdecision_type\x18\x08 \x01(\x0e\x32\x39.aperture.flowcontrol.check.v1.CheckResponse.DecisionTypeR\x0c\x64\x65\x63isionType\x12^\n\rreject_reason\x18\t \x01(\x0e\x32\x39.aperture.flowcontrol.check.v1.CheckResponse.RejectReasonR\x0crejectReason\x12X\n\x10\x63lassifier_infos\x18\n \x03(\x0b\x32-.aperture.flowcontrol.check.v1.ClassifierInfoR\x0f\x63lassifierInfos\x12V\n\x10\x66lux_meter_infos\x18\x0b \x03(\x0b\x32,.aperture.flowcontrol.check.v1.FluxMeterInfoR\x0e\x66luxMeterInfos\x12[\n\x11limiter_decisions\x18\x0c \x03(\x0b\x32..aperture.flowcontrol.check.v1.LimiterDecisionR\x10limiterDecisions\x12\x36\n\twait_time\x18\r \x01(\x0b\x32\x19.google.protobuf.DurationR\x08waitTime\x12h\n\x1b\x64\x65nied_response_status_code\x18\x0e \x01(\x0e\x32).aperture.flowcontrol.check.v1.StatusCodeR\x18\x64\x65niedResponseStatusCode\x12M\n\x0c\x63\x61\x63hed_value\x18\x0f \x01(\x0b\x32*.aperture.flowcontrol.check.v1.CachedValueR\x0b\x63\x61\x63hedValue\x1a\x46\n\x18TelemetryFlowLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xa6\x01\n\x0cRejectReason\x12\x16\n\x12REJECT_REASON_NONE\x10\x00\x12\x1e\n\x1aREJECT_REASON_RATE_LIMITED\x10\x01\x12\x1b\n\x17REJECT_REASON_NO_TOKENS\x10\x02\x12\x1d\n\x19REJECT_REASON_NOT_SAMPLED\x10\x03\x12\"\n\x1eREJECT_REASON_NO_MATCHING_RAMP\x10\x04\"F\n\x0c\x44\x65\x63isionType\x12\x1a\n\x16\x44\x45\x43ISION_TYPE_ACCEPTED\x10\x00\x12\x1a\n\x16\x44\x45\x43ISION_TYPE_REJECTED\x10\x01\"\xf0\x01\n\x0b\x43\x61\x63hedValue\x12\x14\n\x05value\x18\x01 \x01(\x0cR\x05value\x12U\n\rlookup_status\x18\x02 \x01(\x0e\x32\x30.aperture.flowcontrol.check.v1.CacheLookupStatusR\x0clookupStatus\x12^\n\x10operation_status\x18\x03 \x01(\x0e\x32\x33.aperture.flowcontrol.check.v1.CacheOperationStatusR\x0foperationStatus\x12\x14\n\x05\x65rror\x18\x04 \x01(\tR\x05\x65rror\"\x8e\x01\n\x12\x43\x61\x63heUpsertRequest\x12#\n\rcontrol_point\x18\x01 \x01(\tR\x0c\x63ontrolPoint\x12\x10\n\x03key\x18\x02 \x01(\tR\x03key\x12\x14\n\x05value\x18\x03 \x01(\x0cR\x05value\x12+\n\x03ttl\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x03ttl\"\x8b\x01\n\x13\x43\x61\x63heUpsertResponse\x12^\n\x10operation_status\x18\x01 \x01(\x0e\x32\x33.aperture.flowcontrol.check.v1.CacheOperationStatusR\x0foperationStatus\x12\x14\n\x05\x65rror\x18\x02 \x01(\tR\x05\x65rror\"K\n\x12\x43\x61\x63heDeleteRequest\x12#\n\rcontrol_point\x18\x01 \x01(\tR\x0c\x63ontrolPoint\x12\x10\n\x03key\x18\x02 \x01(\tR\x03key\"\x8b\x01\n\x13\x43\x61\x63heDeleteResponse\x12^\n\x10operation_status\x18\x01 \x01(\x0e\x32\x33.aperture.flowcontrol.check.v1.CacheOperationStatusR\x0foperationStatus\x12\x14\n\x05\x65rror\x18\x02 \x01(\tR\x05\x65rror\"\xed\x02\n\x0e\x43lassifierInfo\x12\x1f\n\x0bpolicy_name\x18\x01 \x01(\tR\npolicyName\x12\x1f\n\x0bpolicy_hash\x18\x02 \x01(\tR\npolicyHash\x12)\n\x10\x63lassifier_index\x18\x03 \x01(\x03R\x0f\x63lassifierIndex\x12I\n\x05\x65rror\x18\x05 \x01(\x0e\x32\x33.aperture.flowcontrol.check.v1.ClassifierInfo.ErrorR\x05\x65rror\"\xa2\x01\n\x05\x45rror\x12\x0e\n\nERROR_NONE\x10\x00\x12\x15\n\x11\x45RROR_EVAL_FAILED\x10\x01\x12\x19\n\x15\x45RROR_EMPTY_RESULTSET\x10\x02\x12\x1d\n\x19\x45RROR_AMBIGUOUS_RESULTSET\x10\x03\x12\x1a\n\x16\x45RROR_MULTI_EXPRESSION\x10\x04\x12\x1c\n\x18\x45RROR_EXPRESSION_NOT_MAP\x10\x05\"\xa6\x0c\n\x0fLimiterDecision\x12\x1f\n\x0bpolicy_name\x18\x01 \x01(\tR\npolicyName\x12\x1f\n\x0bpolicy_hash\x18\x02 \x01(\tR\npolicyHash\x12!\n\x0c\x63omponent_id\x18\x03 \x01(\tR\x0b\x63omponentId\x12\x18\n\x07\x64ropped\x18\x04 \x01(\x08R\x07\x64ropped\x12T\n\x06reason\x18\x05 \x01(\x0e\x32<.aperture.flowcontrol.check.v1.LimiterDecision.LimiterReasonR\x06reason\x12h\n\x1b\x64\x65nied_response_status_code\x18\n \x01(\x0e\x32).aperture.flowcontrol.check.v1.StatusCodeR\x18\x64\x65niedResponseStatusCode\x12\x36\n\twait_time\x18\x0b \x01(\x0b\x32\x19.google.protobuf.DurationR\x08waitTime\x12l\n\x11rate_limiter_info\x18\x14 \x01(\x0b\x32>.aperture.flowcontrol.check.v1.LimiterDecision.RateLimiterInfoH\x00R\x0frateLimiterInfo\x12n\n\x13load_scheduler_info\x18\x15 \x01(\x0b\x32<.aperture.flowcontrol.check.v1.LimiterDecision.SchedulerInfoH\x00R\x11loadSchedulerInfo\x12_\n\x0csampler_info\x18\x16 \x01(\x0b\x32:.aperture.flowcontrol.check.v1.LimiterDecision.SamplerInfoH\x00R\x0bsamplerInfo\x12u\n\x14quota_scheduler_info\x18\x17 \x01(\x0b\x32\x41.aperture.flowcontrol.check.v1.LimiterDecision.QuotaSchedulerInfoH\x00R\x12quotaSchedulerInfo\x1a`\n\nTokensInfo\x12\x1c\n\tremaining\x18\x01 \x01(\x01R\tremaining\x12\x18\n\x07\x63urrent\x18\x02 \x01(\x01R\x07\x63urrent\x12\x1a\n\x08\x63onsumed\x18\x03 \x01(\x01R\x08\x63onsumed\x1a\x83\x01\n\x0fRateLimiterInfo\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12Z\n\x0btokens_info\x18\x02 \x01(\x0b\x32\x39.aperture.flowcontrol.check.v1.LimiterDecision.TokensInfoR\ntokensInfo\x1a\xae\x01\n\rSchedulerInfo\x12%\n\x0eworkload_index\x18\x01 \x01(\tR\rworkloadIndex\x12Z\n\x0btokens_info\x18\x02 \x01(\x0b\x32\x39.aperture.flowcontrol.check.v1.LimiterDecision.TokensInfoR\ntokensInfo\x12\x1a\n\x08priority\x18\x03 \x01(\x01R\x08priority\x1a#\n\x0bSamplerInfo\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x1a\xc9\x01\n\x12QuotaSchedulerInfo\x12\x14\n\x05label\x18\x01 \x01(\tR\x05label\x12%\n\x0eworkload_index\x18\x02 \x01(\tR\rworkloadIndex\x12Z\n\x0btokens_info\x18\x03 \x01(\x0b\x32\x39.aperture.flowcontrol.check.v1.LimiterDecision.TokensInfoR\ntokensInfo\x12\x1a\n\x08priority\x18\x04 \x01(\x01R\x08priority\"Q\n\rLimiterReason\x12\x1e\n\x1aLIMITER_REASON_UNSPECIFIED\x10\x00\x12 \n\x1cLIMITER_REASON_KEY_NOT_FOUND\x10\x01\x42\t\n\x07\x64\x65tails\"7\n\rFluxMeterInfo\x12&\n\x0f\x66lux_meter_name\x18\x01 \x01(\tR\rfluxMeterName*&\n\x11\x43\x61\x63heLookupStatus\x12\x07\n\x03HIT\x10\x00\x12\x08\n\x04MISS\x10\x01*.\n\x14\x43\x61\x63heOperationStatus\x12\x0b\n\x07SUCCESS\x10\x00\x12\t\n\x05\x45RROR\x10\x01*\xb5\t\n\nStatusCode\x12\t\n\x05\x45mpty\x10\x00\x12\x0c\n\x08\x43ontinue\x10\x64\x12\x07\n\x02OK\x10\xc8\x01\x12\x0c\n\x07\x43reated\x10\xc9\x01\x12\r\n\x08\x41\x63\x63\x65pted\x10\xca\x01\x12 \n\x1bNonAuthoritativeInformation\x10\xcb\x01\x12\x0e\n\tNoContent\x10\xcc\x01\x12\x11\n\x0cResetContent\x10\xcd\x01\x12\x13\n\x0ePartialContent\x10\xce\x01\x12\x10\n\x0bMultiStatus\x10\xcf\x01\x12\x14\n\x0f\x41lreadyReported\x10\xd0\x01\x12\x0b\n\x06IMUsed\x10\xe2\x01\x12\x14\n\x0fMultipleChoices\x10\xac\x02\x12\x15\n\x10MovedPermanently\x10\xad\x02\x12\n\n\x05\x46ound\x10\xae\x02\x12\r\n\x08SeeOther\x10\xaf\x02\x12\x10\n\x0bNotModified\x10\xb0\x02\x12\r\n\x08UseProxy\x10\xb1\x02\x12\x16\n\x11TemporaryRedirect\x10\xb3\x02\x12\x16\n\x11PermanentRedirect\x10\xb4\x02\x12\x0f\n\nBadRequest\x10\x90\x03\x12\x11\n\x0cUnauthorized\x10\x91\x03\x12\x14\n\x0fPaymentRequired\x10\x92\x03\x12\x0e\n\tForbidden\x10\x93\x03\x12\r\n\x08NotFound\x10\x94\x03\x12\x15\n\x10MethodNotAllowed\x10\x95\x03\x12\x12\n\rNotAcceptable\x10\x96\x03\x12 \n\x1bProxyAuthenticationRequired\x10\x97\x03\x12\x13\n\x0eRequestTimeout\x10\x98\x03\x12\r\n\x08\x43onflict\x10\x99\x03\x12\t\n\x04Gone\x10\x9a\x03\x12\x13\n\x0eLengthRequired\x10\x9b\x03\x12\x17\n\x12PreconditionFailed\x10\x9c\x03\x12\x14\n\x0fPayloadTooLarge\x10\x9d\x03\x12\x0f\n\nURITooLong\x10\x9e\x03\x12\x19\n\x14UnsupportedMediaType\x10\x9f\x03\x12\x18\n\x13RangeNotSatisfiable\x10\xa0\x03\x12\x16\n\x11\x45xpectationFailed\x10\xa1\x03\x12\x17\n\x12MisdirectedRequest\x10\xa5\x03\x12\x18\n\x13UnprocessableEntity\x10\xa6\x03\x12\x0b\n\x06Locked\x10\xa7\x03\x12\x15\n\x10\x46\x61iledDependency\x10\xa8\x03\x12\x14\n\x0fUpgradeRequired\x10\xaa\x03\x12\x19\n\x14PreconditionRequired\x10\xac\x03\x12\x14\n\x0fTooManyRequests\x10\xad\x03\x12 \n\x1bRequestHeaderFieldsTooLarge\x10\xaf\x03\x12\x18\n\x13InternalServerError\x10\xf4\x03\x12\x13\n\x0eNotImplemented\x10\xf5\x03\x12\x0f\n\nBadGateway\x10\xf6\x03\x12\x17\n\x12ServiceUnavailable\x10\xf7\x03\x12\x13\n\x0eGatewayTimeout\x10\xf8\x03\x12\x1c\n\x17HTTPVersionNotSupported\x10\xf9\x03\x12\x1a\n\x15VariantAlsoNegotiates\x10\xfa\x03\x12\x18\n\x13InsufficientStorage\x10\xfb\x03\x12\x11\n\x0cLoopDetected\x10\xfc\x03\x12\x10\n\x0bNotExtended\x10\xfe\x03\x12\"\n\x1dNetworkAuthenticationRequired\x10\xff\x03\x32\xea\x02\n\x12\x46lowControlService\x12\x64\n\x05\x43heck\x12+.aperture.flowcontrol.check.v1.CheckRequest\x1a,.aperture.flowcontrol.check.v1.CheckResponse\"\x00\x12v\n\x0b\x43\x61\x63heUpsert\x12\x31.aperture.flowcontrol.check.v1.CacheUpsertRequest\x1a\x32.aperture.flowcontrol.check.v1.CacheUpsertResponse\"\x00\x12v\n\x0b\x43\x61\x63heDelete\x12\x31.aperture.flowcontrol.check.v1.CacheDeleteRequest\x1a\x32.aperture.flowcontrol.check.v1.CacheDeleteResponse\"\x00\x42\xb3\x02\n5com.fluxninja.generated.aperture.flowcontrol.check.v1B\nCheckProtoP\x01ZWgithub.com/fluxninja/aperture/v2/api/gen/proto/go/aperture/flowcontrol/check/v1;checkv1\xa2\x02\x03\x41\x46\x43\xaa\x02\x1d\x41perture.Flowcontrol.Check.V1\xca\x02\x1d\x41perture\\Flowcontrol\\Check\\V1\xe2\x02)Aperture\\Flowcontrol\\Check\\V1\\GPBMetadata\xea\x02 Aperture::Flowcontrol::Check::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -27,40 +27,54 @@ _globals['_CHECKREQUEST_LABELSENTRY']._serialized_options = b'8\001' _globals['_CHECKRESPONSE_TELEMETRYFLOWLABELSENTRY']._options = None _globals['_CHECKRESPONSE_TELEMETRYFLOWLABELSENTRY']._serialized_options = b'8\001' - _globals['_STATUSCODE']._serialized_start=3647 - _globals['_STATUSCODE']._serialized_end=4852 + _globals['_CACHELOOKUPSTATUS']._serialized_start=4503 + _globals['_CACHELOOKUPSTATUS']._serialized_end=4541 + _globals['_CACHEOPERATIONSTATUS']._serialized_start=4543 + _globals['_CACHEOPERATIONSTATUS']._serialized_end=4589 + _globals['_STATUSCODE']._serialized_start=4592 + _globals['_STATUSCODE']._serialized_end=5797 _globals['_CHECKREQUEST']._serialized_start=142 - _globals['_CHECKREQUEST']._serialized_end=362 - _globals['_CHECKREQUEST_LABELSENTRY']._serialized_start=305 - _globals['_CHECKREQUEST_LABELSENTRY']._serialized_end=362 - _globals['_CHECKRESPONSE']._serialized_start=365 - _globals['_CHECKRESPONSE']._serialized_end=1642 - _globals['_CHECKRESPONSE_TELEMETRYFLOWLABELSENTRY']._serialized_start=1331 - _globals['_CHECKRESPONSE_TELEMETRYFLOWLABELSENTRY']._serialized_end=1401 - _globals['_CHECKRESPONSE_REJECTREASON']._serialized_start=1404 - _globals['_CHECKRESPONSE_REJECTREASON']._serialized_end=1570 - _globals['_CHECKRESPONSE_DECISIONTYPE']._serialized_start=1572 - _globals['_CHECKRESPONSE_DECISIONTYPE']._serialized_end=1642 - _globals['_CLASSIFIERINFO']._serialized_start=1645 - _globals['_CLASSIFIERINFO']._serialized_end=2010 - _globals['_CLASSIFIERINFO_ERROR']._serialized_start=1848 - _globals['_CLASSIFIERINFO_ERROR']._serialized_end=2010 - _globals['_LIMITERDECISION']._serialized_start=2013 - _globals['_LIMITERDECISION']._serialized_end=3587 - _globals['_LIMITERDECISION_TOKENSINFO']._serialized_start=2845 - _globals['_LIMITERDECISION_TOKENSINFO']._serialized_end=2941 - _globals['_LIMITERDECISION_RATELIMITERINFO']._serialized_start=2944 - _globals['_LIMITERDECISION_RATELIMITERINFO']._serialized_end=3075 - _globals['_LIMITERDECISION_SCHEDULERINFO']._serialized_start=3078 - _globals['_LIMITERDECISION_SCHEDULERINFO']._serialized_end=3252 - _globals['_LIMITERDECISION_SAMPLERINFO']._serialized_start=3254 - _globals['_LIMITERDECISION_SAMPLERINFO']._serialized_end=3289 - _globals['_LIMITERDECISION_QUOTASCHEDULERINFO']._serialized_start=3292 - _globals['_LIMITERDECISION_QUOTASCHEDULERINFO']._serialized_end=3493 - _globals['_LIMITERDECISION_LIMITERREASON']._serialized_start=3495 - _globals['_LIMITERDECISION_LIMITERREASON']._serialized_end=3576 - _globals['_FLUXMETERINFO']._serialized_start=3589 - _globals['_FLUXMETERINFO']._serialized_end=3644 - _globals['_FLOWCONTROLSERVICE']._serialized_start=4854 - _globals['_FLOWCONTROLSERVICE']._serialized_end=4976 + _globals['_CHECKREQUEST']._serialized_end=391 + _globals['_CHECKREQUEST_LABELSENTRY']._serialized_start=334 + _globals['_CHECKREQUEST_LABELSENTRY']._serialized_end=391 + _globals['_CHECKRESPONSE']._serialized_start=394 + _globals['_CHECKRESPONSE']._serialized_end=1750 + _globals['_CHECKRESPONSE_TELEMETRYFLOWLABELSENTRY']._serialized_start=1439 + _globals['_CHECKRESPONSE_TELEMETRYFLOWLABELSENTRY']._serialized_end=1509 + _globals['_CHECKRESPONSE_REJECTREASON']._serialized_start=1512 + _globals['_CHECKRESPONSE_REJECTREASON']._serialized_end=1678 + _globals['_CHECKRESPONSE_DECISIONTYPE']._serialized_start=1680 + _globals['_CHECKRESPONSE_DECISIONTYPE']._serialized_end=1750 + _globals['_CACHEDVALUE']._serialized_start=1753 + _globals['_CACHEDVALUE']._serialized_end=1993 + _globals['_CACHEUPSERTREQUEST']._serialized_start=1996 + _globals['_CACHEUPSERTREQUEST']._serialized_end=2138 + _globals['_CACHEUPSERTRESPONSE']._serialized_start=2141 + _globals['_CACHEUPSERTRESPONSE']._serialized_end=2280 + _globals['_CACHEDELETEREQUEST']._serialized_start=2282 + _globals['_CACHEDELETEREQUEST']._serialized_end=2357 + _globals['_CACHEDELETERESPONSE']._serialized_start=2360 + _globals['_CACHEDELETERESPONSE']._serialized_end=2499 + _globals['_CLASSIFIERINFO']._serialized_start=2502 + _globals['_CLASSIFIERINFO']._serialized_end=2867 + _globals['_CLASSIFIERINFO_ERROR']._serialized_start=2705 + _globals['_CLASSIFIERINFO_ERROR']._serialized_end=2867 + _globals['_LIMITERDECISION']._serialized_start=2870 + _globals['_LIMITERDECISION']._serialized_end=4444 + _globals['_LIMITERDECISION_TOKENSINFO']._serialized_start=3702 + _globals['_LIMITERDECISION_TOKENSINFO']._serialized_end=3798 + _globals['_LIMITERDECISION_RATELIMITERINFO']._serialized_start=3801 + _globals['_LIMITERDECISION_RATELIMITERINFO']._serialized_end=3932 + _globals['_LIMITERDECISION_SCHEDULERINFO']._serialized_start=3935 + _globals['_LIMITERDECISION_SCHEDULERINFO']._serialized_end=4109 + _globals['_LIMITERDECISION_SAMPLERINFO']._serialized_start=4111 + _globals['_LIMITERDECISION_SAMPLERINFO']._serialized_end=4146 + _globals['_LIMITERDECISION_QUOTASCHEDULERINFO']._serialized_start=4149 + _globals['_LIMITERDECISION_QUOTASCHEDULERINFO']._serialized_end=4350 + _globals['_LIMITERDECISION_LIMITERREASON']._serialized_start=4352 + _globals['_LIMITERDECISION_LIMITERREASON']._serialized_end=4433 + _globals['_FLUXMETERINFO']._serialized_start=4446 + _globals['_FLUXMETERINFO']._serialized_end=4501 + _globals['_FLOWCONTROLSERVICE']._serialized_start=5800 + _globals['_FLOWCONTROLSERVICE']._serialized_end=6162 # @@protoc_insertion_point(module_scope) diff --git a/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2.pyi b/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2.pyi index ea917b5eec..4801458c9b 100644 --- a/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2.pyi +++ b/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2.pyi @@ -8,6 +8,16 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor +class CacheLookupStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + HIT: _ClassVar[CacheLookupStatus] + MISS: _ClassVar[CacheLookupStatus] + +class CacheOperationStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SUCCESS: _ClassVar[CacheOperationStatus] + ERROR: _ClassVar[CacheOperationStatus] + class StatusCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () Empty: _ClassVar[StatusCode] @@ -67,6 +77,10 @@ class StatusCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): LoopDetected: _ClassVar[StatusCode] NotExtended: _ClassVar[StatusCode] NetworkAuthenticationRequired: _ClassVar[StatusCode] +HIT: CacheLookupStatus +MISS: CacheLookupStatus +SUCCESS: CacheOperationStatus +ERROR: CacheOperationStatus Empty: StatusCode Continue: StatusCode OK: StatusCode @@ -126,7 +140,7 @@ NotExtended: StatusCode NetworkAuthenticationRequired: StatusCode class CheckRequest(_message.Message): - __slots__ = ("control_point", "labels", "ramp_mode") + __slots__ = ("control_point", "labels", "ramp_mode", "cache_key") class LabelsEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -137,13 +151,15 @@ class CheckRequest(_message.Message): CONTROL_POINT_FIELD_NUMBER: _ClassVar[int] LABELS_FIELD_NUMBER: _ClassVar[int] RAMP_MODE_FIELD_NUMBER: _ClassVar[int] + CACHE_KEY_FIELD_NUMBER: _ClassVar[int] control_point: str labels: _containers.ScalarMap[str, str] ramp_mode: bool - def __init__(self, control_point: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ..., ramp_mode: bool = ...) -> None: ... + cache_key: str + def __init__(self, control_point: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ..., ramp_mode: bool = ..., cache_key: _Optional[str] = ...) -> None: ... class CheckResponse(_message.Message): - __slots__ = ("start", "end", "services", "control_point", "flow_label_keys", "telemetry_flow_labels", "decision_type", "reject_reason", "classifier_infos", "flux_meter_infos", "limiter_decisions", "wait_time", "denied_response_status_code") + __slots__ = ("start", "end", "services", "control_point", "flow_label_keys", "telemetry_flow_labels", "decision_type", "reject_reason", "classifier_infos", "flux_meter_infos", "limiter_decisions", "wait_time", "denied_response_status_code", "cached_value") class RejectReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () REJECT_REASON_NONE: _ClassVar[CheckResponse.RejectReason] @@ -182,6 +198,7 @@ class CheckResponse(_message.Message): LIMITER_DECISIONS_FIELD_NUMBER: _ClassVar[int] WAIT_TIME_FIELD_NUMBER: _ClassVar[int] DENIED_RESPONSE_STATUS_CODE_FIELD_NUMBER: _ClassVar[int] + CACHED_VALUE_FIELD_NUMBER: _ClassVar[int] start: _timestamp_pb2.Timestamp end: _timestamp_pb2.Timestamp services: _containers.RepeatedScalarFieldContainer[str] @@ -195,7 +212,56 @@ class CheckResponse(_message.Message): limiter_decisions: _containers.RepeatedCompositeFieldContainer[LimiterDecision] wait_time: _duration_pb2.Duration denied_response_status_code: StatusCode - def __init__(self, start: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., services: _Optional[_Iterable[str]] = ..., control_point: _Optional[str] = ..., flow_label_keys: _Optional[_Iterable[str]] = ..., telemetry_flow_labels: _Optional[_Mapping[str, str]] = ..., decision_type: _Optional[_Union[CheckResponse.DecisionType, str]] = ..., reject_reason: _Optional[_Union[CheckResponse.RejectReason, str]] = ..., classifier_infos: _Optional[_Iterable[_Union[ClassifierInfo, _Mapping]]] = ..., flux_meter_infos: _Optional[_Iterable[_Union[FluxMeterInfo, _Mapping]]] = ..., limiter_decisions: _Optional[_Iterable[_Union[LimiterDecision, _Mapping]]] = ..., wait_time: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., denied_response_status_code: _Optional[_Union[StatusCode, str]] = ...) -> None: ... + cached_value: CachedValue + def __init__(self, start: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., services: _Optional[_Iterable[str]] = ..., control_point: _Optional[str] = ..., flow_label_keys: _Optional[_Iterable[str]] = ..., telemetry_flow_labels: _Optional[_Mapping[str, str]] = ..., decision_type: _Optional[_Union[CheckResponse.DecisionType, str]] = ..., reject_reason: _Optional[_Union[CheckResponse.RejectReason, str]] = ..., classifier_infos: _Optional[_Iterable[_Union[ClassifierInfo, _Mapping]]] = ..., flux_meter_infos: _Optional[_Iterable[_Union[FluxMeterInfo, _Mapping]]] = ..., limiter_decisions: _Optional[_Iterable[_Union[LimiterDecision, _Mapping]]] = ..., wait_time: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., denied_response_status_code: _Optional[_Union[StatusCode, str]] = ..., cached_value: _Optional[_Union[CachedValue, _Mapping]] = ...) -> None: ... + +class CachedValue(_message.Message): + __slots__ = ("value", "lookup_status", "operation_status", "error") + VALUE_FIELD_NUMBER: _ClassVar[int] + LOOKUP_STATUS_FIELD_NUMBER: _ClassVar[int] + OPERATION_STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + value: bytes + lookup_status: CacheLookupStatus + operation_status: CacheOperationStatus + error: str + def __init__(self, value: _Optional[bytes] = ..., lookup_status: _Optional[_Union[CacheLookupStatus, str]] = ..., operation_status: _Optional[_Union[CacheOperationStatus, str]] = ..., error: _Optional[str] = ...) -> None: ... + +class CacheUpsertRequest(_message.Message): + __slots__ = ("control_point", "key", "value", "ttl") + CONTROL_POINT_FIELD_NUMBER: _ClassVar[int] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + TTL_FIELD_NUMBER: _ClassVar[int] + control_point: str + key: str + value: bytes + ttl: _duration_pb2.Duration + def __init__(self, control_point: _Optional[str] = ..., key: _Optional[str] = ..., value: _Optional[bytes] = ..., ttl: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class CacheUpsertResponse(_message.Message): + __slots__ = ("operation_status", "error") + OPERATION_STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + operation_status: CacheOperationStatus + error: str + def __init__(self, operation_status: _Optional[_Union[CacheOperationStatus, str]] = ..., error: _Optional[str] = ...) -> None: ... + +class CacheDeleteRequest(_message.Message): + __slots__ = ("control_point", "key") + CONTROL_POINT_FIELD_NUMBER: _ClassVar[int] + KEY_FIELD_NUMBER: _ClassVar[int] + control_point: str + key: str + def __init__(self, control_point: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ... + +class CacheDeleteResponse(_message.Message): + __slots__ = ("operation_status", "error") + OPERATION_STATUS_FIELD_NUMBER: _ClassVar[int] + ERROR_FIELD_NUMBER: _ClassVar[int] + operation_status: CacheOperationStatus + error: str + def __init__(self, operation_status: _Optional[_Union[CacheOperationStatus, str]] = ..., error: _Optional[str] = ...) -> None: ... class ClassifierInfo(_message.Message): __slots__ = ("policy_name", "policy_hash", "classifier_index", "error") diff --git a/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2_grpc.py b/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2_grpc.py index debb657de8..895ab1fb18 100644 --- a/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2_grpc.py +++ b/sdks/aperture-py/aperture_sdk/_gen/aperture/flowcontrol/check/v1/check_pb2_grpc.py @@ -20,6 +20,16 @@ def __init__(self, channel): request_serializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CheckRequest.SerializeToString, response_deserializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CheckResponse.FromString, ) + self.CacheUpsert = channel.unary_unary( + '/aperture.flowcontrol.check.v1.FlowControlService/CacheUpsert', + request_serializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheUpsertRequest.SerializeToString, + response_deserializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheUpsertResponse.FromString, + ) + self.CacheDelete = channel.unary_unary( + '/aperture.flowcontrol.check.v1.FlowControlService/CacheDelete', + request_serializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheDeleteRequest.SerializeToString, + response_deserializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheDeleteResponse.FromString, + ) class FlowControlServiceServicer(object): @@ -33,6 +43,18 @@ def Check(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def CacheUpsert(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def CacheDelete(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_FlowControlServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -41,6 +63,16 @@ def add_FlowControlServiceServicer_to_server(servicer, server): request_deserializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CheckRequest.FromString, response_serializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CheckResponse.SerializeToString, ), + 'CacheUpsert': grpc.unary_unary_rpc_method_handler( + servicer.CacheUpsert, + request_deserializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheUpsertRequest.FromString, + response_serializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheUpsertResponse.SerializeToString, + ), + 'CacheDelete': grpc.unary_unary_rpc_method_handler( + servicer.CacheDelete, + request_deserializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheDeleteRequest.FromString, + response_serializer=aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheDeleteResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'aperture.flowcontrol.check.v1.FlowControlService', rpc_method_handlers) @@ -68,3 +100,37 @@ def Check(request, aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CheckResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def CacheUpsert(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/aperture.flowcontrol.check.v1.FlowControlService/CacheUpsert', + aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheUpsertRequest.SerializeToString, + aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheUpsertResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def CacheDelete(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/aperture.flowcontrol.check.v1.FlowControlService/CacheDelete', + aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheDeleteRequest.SerializeToString, + aperture_dot_flowcontrol_dot_check_dot_v1_dot_check__pb2.CacheDeleteResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata)