| // Licensed to the Apache Software Foundation (ASF) under one or more | |
| // contributor license agreements. See the NOTICE file distributed with | |
| // this work for additional information regarding copyright ownership. | |
| // The ASF licenses this file to You under the Apache License, Version 2.0 | |
| // (the "License"); you may not use this file except in compliance with | |
| // the License. You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| // Minimal, self-contained subset of the Envoy Rate Limit Service protocol, | |
| // used by EnvoyRateLimiter in rate_limiter.py. Only the fields the client | |
| // touches are declared. Field numbers MUST match Envoy's rls.proto and | |
| // ratelimit.proto so this is wire-compatible with a real Envoy RLS server | |
| // (protobuf carries only field numbers and types on the wire, not message or | |
| // package names). This lets Beam use its standard protobuf/grpcio stack | |
| // instead of pulling in envoy-data-plane and its betterproto dependency. | |
| // | |
| // Regenerate rate_limit_pb2.py after editing this file: | |
| // cd sdks/python | |
| // python -m grpc_tools.protoc -I. --python_out=. \ | |
| // apache_beam/io/components/rate_limit.proto | |
| // then prepend the Apache license header and remove the generated | |
| // `runtime_version` guard so the module stays compatible with the full | |
| // protobuf runtime range Beam supports (see setup.py). | |
| syntax = "proto3"; | |
| package apache_beam.io.components.ratelimit; | |
| import "google/protobuf/duration.proto"; | |
| message RateLimitDescriptor { | |
| message Entry { | |
| string key = 1; | |
| string value = 2; | |
| } | |
| repeated Entry entries = 1; | |
| } | |
| message RateLimitRequest { | |
| string domain = 1; | |
| repeated RateLimitDescriptor descriptors = 2; | |
| uint32 hits_addend = 3; | |
| } | |
| message RateLimitResponse { | |
| enum Code { | |
| UNKNOWN = 0; | |
| OK = 1; | |
| OVER_LIMIT = 2; | |
| } | |
| message DescriptorStatus { | |
| Code code = 1; | |
| google.protobuf.Duration duration_until_reset = 4; | |
| } | |
| Code overall_code = 1; | |
| repeated DescriptorStatus statuses = 2; | |
| } |