diff --git a/components/delay_queue/interface_generated.go b/components/delay_queue/interface_generated.go new file mode 100644 index 0000000000..9d88794458 --- /dev/null +++ b/components/delay_queue/interface_generated.go @@ -0,0 +1,24 @@ +// Code generated by github.com/seeflood/protoc-gen-p6 . + +// Copyright 2021 Layotto Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package delay_queue + +import ( + context "context" +) + +type DelayQueue interface { + PublishDelayMessage(context.Context, *DelayMessageRequest) (*DelayMessageResponse, error) +} diff --git a/components/delay_queue/struct_generated.go b/components/delay_queue/struct_generated.go new file mode 100644 index 0000000000..7923049583 --- /dev/null +++ b/components/delay_queue/struct_generated.go @@ -0,0 +1,42 @@ +// Code generated by github.com/seeflood/protoc-gen-p6 . + +// Copyright 2021 Layotto Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package delay_queue + +// DelayMessageRequest is the message to publish +type DelayMessageRequest struct { + // Required. The name of the DelayQueue component + ComponentName string `json:"component_name,omitempty"` + // Required. The pubsub topic + Topic string `json:"topic,omitempty"` + // Required. The data which will be published to topic. + Data []byte `json:"data,omitempty"` + // The content type for the data (optional). + DataContentType string `json:"data_content_type,omitempty"` + // The length of time, in seconds, for which the delivery + // of this messages is delayed. Default: 0. + DelayInSeconds int32 `json:"delay_in_seconds,omitempty"` + // The metadata passing to pub components + // + // metadata property: + // - key : the key of the message. + Metadata map[string]string `json:"metadata,omitempty"` +} + +// DelayMessageResponse is the response +type DelayMessageResponse struct { + // The message identifier + MessageId string `json:"message_id,omitempty"` +} diff --git a/docs/_sidebar.md b/docs/_sidebar.md index e4846536d9..e07379e962 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -4,7 +4,9 @@ - Use Configuration API - [Use Apollo as configuration center](en/start/configuration/start-apollo.md) - [Use Etcd as configuration center](en/start/configuration/start.md) - - [Use Pub/Sub API](en/start/pubsub/start.md) + - Publish or subscribe messages + - [Use Pub/Sub API](en/start/pubsub/start.md) + - [(Under construction) Use DelayQueue API](en/start/delay_queue/start) - [Use Distributed Lock API](en/start/lock/start.md) - [Use Sequencer API](en/start/sequencer/start.md) - Use Secret API diff --git a/docs/api/v1/delay_queue.html b/docs/api/v1/delay_queue.html new file mode 100644 index 0000000000..54b3debfc8 --- /dev/null +++ b/docs/api/v1/delay_queue.html @@ -0,0 +1,553 @@ + + + + + Protocol Documentation + + + + + + + + + + +

Protocol Documentation

+ +

Table of Contents

+ +
+ +
+ + + +
+

delay_queue.proto

Top +
+

+ + +

[gRPC Service] DelayQueue

+

DelayQueue is a special kind of message queue, which lets you postpone the delivery of new messages to consumers.

+ + + + + + + + + + + + + + +
Method NameRequest TypeResponse TypeDescription
PublishDelayMessageDelayMessageRequestDelayMessageResponse

Publish a delay message

+ + + + +

DelayMessageRequest

+

DelayMessageRequest is the message to publish

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeLabelDescription
component_namestring

Required. The name of the DelayQueue component

topicstring

Required. The pubsub topic

databytes

Required. The data which will be published to topic.

data_content_typestring

The content type for the data (optional).

delay_in_secondsint32

The length of time, in seconds, for which the delivery +of this messages is delayed. Default: 0.

metadataDelayMessageRequest.MetadataEntryrepeated

The metadata passing to pub components + +metadata property: +- key : the key of the message.

+ + + + + +

DelayMessageRequest.MetadataEntry

+

+ + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeLabelDescription
keystring

valuestring

+ + + + + +

DelayMessageResponse

+

DelayMessageResponse is the response

+ + + + + + + + + + + + + + + + +
FieldTypeLabelDescription
message_idstring

The message identifier

+ + + + + + + + + + + + +

Scalar Value Types

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
.proto TypeNotesC++JavaPythonGoC#PHPRuby
doubledoubledoublefloatfloat64doublefloatFloat
floatfloatfloatfloatfloat32floatfloatFloat
int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)
+ + diff --git a/docs/en/api_reference/README.md b/docs/en/api_reference/README.md index 0731db1cef..4ec8a8284a 100644 --- a/docs/en/api_reference/README.md +++ b/docs/en/api_reference/README.md @@ -13,6 +13,10 @@ In addition to this, Layotto also provides some extension APIs, including: + + +delay_queue: [spec/proto/extension/v1/delay_queue](https://mosn.io/layotto/api/v1/delay_queue.html) + email: [spec/proto/extension/v1/email](https://mosn.io/layotto/api/v1/email.html) phone: [spec/proto/extension/v1/phone](https://mosn.io/layotto/api/v1/phone.html) diff --git a/docs/en/start/delay_queue/start.md b/docs/en/start/delay_queue/start.md new file mode 100644 index 0000000000..a69580dfd1 --- /dev/null +++ b/docs/en/start/delay_queue/start.md @@ -0,0 +1,122 @@ + +# DelayQueue API demo + +This example shows how to invoke Layotto DelayQueue API. + +DelayQueue is a special kind of message queue, which lets you postpone the delivery of new messages to consumers. + +## step 1. Deploy Layotto + +### **With Docker** +You can start Layotto with docker + +```bash +docker run -v "$(pwd)/configs/config_standalone.json:/runtime/configs/config.json" -d -p 34904:34904 --name layotto layotto/layotto start +``` + +### **Compile locally (not for Windows)** +You can compile and run Layotto locally. + +> [!TIP|label: Not for Windows users] +> Layotto fails to compile under Windows. Windows users are recommended to deploy using docker + +After downloading the project code to the local, switch the code directory and compile: + +```shell +cd ${project_path}/cmd/layotto +``` + +```shell @if.not.exist layotto +go build +``` + +Once finished, the layotto binary will be generated in the directory. + +Run it: + +```shell @background +./layotto start -c ../../configs/config_standalone.json +``` + + + +## step 2. Run the client program to invoke Layotto DelayQueue API + +### **Go** +Build and run the golang demo: + +```shell + cd ${project_path}/demo/delay_queue/common/ + go build -o client + ./client -s "demo" +``` + +If the following information is printed, the demo is successful: + +```bash +TODO +``` + +### **Java** + +Download java sdk and examples: + +```shell @if.not.exist java-sdk +git clone https://github.com/layotto/java-sdk +``` + +```shell +cd java-sdk +``` + +Build the demo: + +```shell @if.not.exist examples-delay_queue/target/examples-delay_queue-jar-with-dependencies.jar +# build example jar +mvn -f examples-delay_queue/pom.xml clean package +``` + +Run it: + +```shell +java -jar examples-delay_queue/target/examples-delay_queue-jar-with-dependencies.jar +``` + +If the following information is printed, the demo is successful: + +```bash +TODO +``` + + + +## step 3. Stop containers and release resources + +### **Destroy the Docker container** +If you started Layotto with docker, you can destroy the container as follows: + +```bash +docker rm -f layotto +``` + + + +## Next step +### What does this client program do? +The demo client program uses the SDK provided by Layotto to invoke the Layotto DelayQueue API. + +The golang sdk is located in the `sdk` directory, and the java sdk is in https://github.com/layotto/java-sdk + +In addition to using sdk, you can also interact with Layotto directly through grpc in any language you like. + +### Details later, let's continue to experience other APIs +Explore other Quickstarts through the navigation bar on the left. + +### Reference + +[API Reference](https://mosn.io/layotto/api/v1/delay_queue.html) + + + + + diff --git a/docs/zh/_sidebar.md b/docs/zh/_sidebar.md index dd66665be1..5d5eee06d3 100644 --- a/docs/zh/_sidebar.md +++ b/docs/zh/_sidebar.md @@ -4,7 +4,9 @@ - 使用Configuration API - [使用Apollo配置中心](zh/start/configuration/start-apollo.md) - [使用Etcd配置中心](zh/start/configuration/start.md) - - [使用Pub/Sub API](zh/start/pubsub/start.md) + - 发布、订阅消息 + - [使用Pub/Sub API](zh/start/pubsub/start.md) + - [(建设中) 使用 DelayQueue API](zh/start/delay_queue/start) - [使用分布式锁 API](zh/start/lock/start.md) - [使用Sequencer API生成分布式自增id](zh/start/sequencer/start.md) - 使用 Secret API diff --git a/docs/zh/api_reference/README.md b/docs/zh/api_reference/README.md index f0c3815cf3..a2a95e91f7 100644 --- a/docs/zh/api_reference/README.md +++ b/docs/zh/api_reference/README.md @@ -13,6 +13,10 @@ Layotto 有多个 gRPC proto 文件, 对应的接口文档在: + + +delay_queue: [spec/proto/extension/v1/delay_queue](https://mosn.io/layotto/api/v1/delay_queue.html) + email: [spec/proto/extension/v1/email](https://mosn.io/layotto/api/v1/email.html) phone: [spec/proto/extension/v1/phone](https://mosn.io/layotto/api/v1/phone.html) diff --git a/docs/zh/start/delay_queue/start.md b/docs/zh/start/delay_queue/start.md new file mode 100644 index 0000000000..15c59d9bf6 --- /dev/null +++ b/docs/zh/start/delay_queue/start.md @@ -0,0 +1,122 @@ + +# DelayQueue API demo + +本示例演示如何调用 Layotto DelayQueue API. + +DelayQueue is a special kind of message queue, which lets you postpone the delivery of new messages to consumers. + +## step 1. 运行 Layotto + +### **With Docker** +您可以用 Docker 启动 Layotto + +```bash +docker run -v "$(pwd)/configs/config_standalone.json:/runtime/configs/config.json" -d -p 34904:34904 --name layotto layotto/layotto start +``` + +### **本地编译(不适合 Windows)** +您可以本地编译、运行 Layotto。 +> [!TIP|label: 不适合 Windows 用户] +> Layotto 在 Windows 下会编译失败。建议 Windows 用户使用 docker 部署 + +将项目代码下载到本地后,切换代码目录: + +```shell +cd ${project_path}/cmd/layotto +``` + +构建: + +```shell @if.not.exist layotto +go build +``` + +完成后目录下会生成 Layotto文件,运行它: + +```shell @background +./layotto start -c ../../configs/config_standalone.json +``` + + + +## step 2. 运行客户端程序,调用 Layotto DelayQueue API + +### **Go** + +构建、运行 go 语言 demo: + +```shell + cd ${project_path}/demo/delay_queue/common/ + go build -o client + ./client -s "demo" +``` + +打印出如下信息则代表调用成功: + +```bash +TODO +``` + +### **Java** + +下载 java sdk 和示例代码: + +```shell @if.not.exist java-sdk +git clone https://github.com/layotto/java-sdk +``` + +```shell +cd java-sdk +``` + +构建 examples: + +```shell @if.not.exist examples-delay_queue/target/examples-delay_queue-jar-with-dependencies.jar +# build example jar +mvn -f examples-delay_queue/pom.xml clean package +``` + +运行: + +```shell +java -jar examples-delay_queue/target/examples-delay_queue-jar-with-dependencies.jar +``` + +打印出以下信息说明运行成功: + +```bash +TODO +``` + + + +## step 3. 销毁容器,释放资源 + +### **销毁 Docker container** +如果您是用 Docker 启动的 Layotto,可以按以下方式销毁容器: + +```bash +docker rm -f layotto +``` + + + +## 下一步 +### 这个客户端程序做了什么? +示例客户端程序中使用了 Layotto 提供的多语言 sdk,调用Layotto DelayQueue API。 + +go sdk位于`sdk`目录下,java sdk 在 https://github.com/layotto/java-sdk + +除了使用sdk调用Layotto提供的API,您也可以用任何您喜欢的语言、通过grpc直接和Layotto交互。 + +### 细节以后再说,继续体验其他API +通过左侧的导航栏,继续体验别的API吧! + +### Reference + +[API Reference](https://mosn.io/layotto/api/v1/delay_queue.html) + + + + + diff --git a/pkg/grpc/delay_queue/server.go b/pkg/grpc/delay_queue/server.go new file mode 100644 index 0000000000..f21a3242e2 --- /dev/null +++ b/pkg/grpc/delay_queue/server.go @@ -0,0 +1,107 @@ +// Code generated by github.com/seeflood/protoc-gen-p6. DO NOT EDIT. + +// Copyright 2021 Layotto Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package delay_queue + +import ( + "context" + "encoding/json" + "fmt" + + "mosn.io/pkg/log" + + delay_queue "mosn.io/layotto/components/delay_queue" + delay_queue1 "mosn.io/layotto/spec/proto/extension/v1/delay_queue" + + rawGRPC "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + grpc_api "mosn.io/layotto/pkg/grpc" +) + +func NewAPI(ac *grpc_api.ApplicationContext) grpc_api.GrpcAPI { + result := &server{ + appId: ac.AppId, + components: make(map[string]delay_queue.DelayQueue), + } + + for k, v := range ac.PubSubs { + comp, ok := v.(delay_queue.DelayQueue) + if !ok { + continue + } + // put it in the components map + result.components[k] = comp + } + return result +} + +type server struct { + appId string + components map[string]delay_queue.DelayQueue +} + +func (s *server) PublishDelayMessage(ctx context.Context, in *delay_queue1.DelayMessageRequest) (*delay_queue1.DelayMessageResponse, error) { + // find the component + comp := s.components[in.ComponentName] + if comp == nil { + return nil, invalidArgumentError("PublishDelayMessage", grpc_api.ErrComponentNotFound, "delay_queue1", in.ComponentName) + } + + // convert request + var req delay_queue.DelayMessageRequest + bytes, err := json.Marshal(in) + if err != nil { + return nil, status.Errorf(codes.Internal, "Error when json.Marshal the request: %s", err.Error()) + } + err = json.Unmarshal(bytes, &req) + if err != nil { + return nil, status.Errorf(codes.Internal, "Error when json.Unmarshal the request: %s", err.Error()) + } + + // delegate to the component + resp, err := comp.PublishDelayMessage(ctx, &req) + if err != nil { + return nil, status.Errorf(codes.Internal, err.Error()) + } + + // convert response + var out delay_queue1.DelayMessageResponse + bytes, err = json.Marshal(resp) + if err != nil { + return nil, status.Errorf(codes.Internal, "Error when json.Marshal the response: %s", err.Error()) + } + err = json.Unmarshal(bytes, &out) + if err != nil { + return nil, status.Errorf(codes.Internal, "Error when json.Unmarshal the response: %s", err.Error()) + } + return &out, nil +} + +func invalidArgumentError(method string, format string, a ...interface{}) error { + err := status.Errorf(codes.InvalidArgument, format, a...) + log.DefaultLogger.Errorf(fmt.Sprintf("%s fail: %+v", method, err)) + return err +} + +func (s *server) Init(conn *rawGRPC.ClientConn) error { + return nil +} + +func (s *server) Register(rawGrpcServer *rawGRPC.Server) error { + delay_queue1.RegisterDelayQueueServer(rawGrpcServer, s) + return nil +} diff --git a/pkg/runtime/extension_api_generated.go b/pkg/runtime/extension_api_generated.go new file mode 100644 index 0000000000..af9fe0e308 --- /dev/null +++ b/pkg/runtime/extension_api_generated.go @@ -0,0 +1,32 @@ +// Code generated by github.com/seeflood/protoc-gen-p6 . + +// Copyright 2021 Layotto Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package runtime + +import ( + delay_queue "mosn.io/layotto/pkg/grpc/delay_queue" + email "mosn.io/layotto/pkg/grpc/email" + s3 "mosn.io/layotto/pkg/grpc/extension/s3" + phone "mosn.io/layotto/pkg/grpc/phone" +) + +func WithExtensionGrpcAPI() Option { + return WithGrpcAPI( + s3.NewS3Server, + delay_queue.NewAPI, + email.NewAPI, + phone.NewAPI, + ) +} diff --git a/pkg/runtime/options_generated.go b/pkg/runtime/options_generated.go index df973bd898..4070d4c1e1 100644 --- a/pkg/runtime/options_generated.go +++ b/pkg/runtime/options_generated.go @@ -18,9 +18,6 @@ package runtime import ( email "mosn.io/layotto/components/email" phone "mosn.io/layotto/components/phone" - email1 "mosn.io/layotto/pkg/grpc/email" - s3 "mosn.io/layotto/pkg/grpc/extension/s3" - phone1 "mosn.io/layotto/pkg/grpc/phone" ) type extensionComponentFactorys struct { @@ -44,11 +41,3 @@ func WithPhoneCallServiceFactory(phone ...*phone.Factory) Option { o.services.phone = append(o.services.phone, phone...) } } - -func WithExtensionGrpcAPI() Option { - return WithGrpcAPI( - s3.NewS3Server, - email1.NewAPI, - phone1.NewAPI, - ) -} diff --git a/sdk/go-sdk/client/client_generated.go b/sdk/go-sdk/client/client_generated.go index 0524c93e04..831b9283c3 100644 --- a/sdk/go-sdk/client/client_generated.go +++ b/sdk/go-sdk/client/client_generated.go @@ -20,6 +20,7 @@ import ( grpc "google.golang.org/grpc" + delay_queue "mosn.io/layotto/spec/proto/extension/v1/delay_queue" email "mosn.io/layotto/spec/proto/extension/v1/email" phone "mosn.io/layotto/spec/proto/extension/v1/phone" s3 "mosn.io/layotto/spec/proto/extension/v1/s3" @@ -35,6 +36,9 @@ type Client interface { s3.ObjectStorageServiceClient + // "mosn.io/layotto/spec/proto/extension/v1/delay_queue" + delay_queue.DelayQueueClient + // "mosn.io/layotto/spec/proto/extension/v1/email" email.EmailServiceClient @@ -48,6 +52,9 @@ func NewClientWithConnection(conn *grpc.ClientConn) Client { connection: conn, protoClient: v1.NewRuntimeClient(conn), ObjectStorageServiceClient: s3.NewObjectStorageServiceClient(conn), + // "mosn.io/layotto/spec/proto/extension/v1/delay_queue" + DelayQueueClient: delay_queue.NewDelayQueueClient(conn), + // "mosn.io/layotto/spec/proto/extension/v1/email" EmailServiceClient: email.NewEmailServiceClient(conn), @@ -61,6 +68,8 @@ type GRPCClient struct { connection *grpc.ClientConn protoClient v1.RuntimeClient s3.ObjectStorageServiceClient + // "mosn.io/layotto/spec/proto/extension/v1/delay_queue" + delay_queue.DelayQueueClient // "mosn.io/layotto/spec/proto/extension/v1/email" email.EmailServiceClient // "mosn.io/layotto/spec/proto/extension/v1/phone" diff --git a/spec/proto/extension/v1/delay_queue/delay_queue.pb.go b/spec/proto/extension/v1/delay_queue/delay_queue.pb.go new file mode 100644 index 0000000000..36d2323321 --- /dev/null +++ b/spec/proto/extension/v1/delay_queue/delay_queue.pb.go @@ -0,0 +1,300 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.14.0 +// source: spec/proto/extension/v1/delay_queue/delay_queue.proto + +package delay_queue + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// DelayMessageRequest is the message to publish +type DelayMessageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the DelayQueue component + ComponentName string `protobuf:"bytes,1,opt,name=component_name,json=componentName,proto3" json:"component_name,omitempty"` + // Required. The pubsub topic + Topic string `protobuf:"bytes,2,opt,name=topic,proto3" json:"topic,omitempty"` + // Required. The data which will be published to topic. + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + // The content type for the data (optional). + DataContentType string `protobuf:"bytes,4,opt,name=data_content_type,json=dataContentType,proto3" json:"data_content_type,omitempty"` + // The length of time, in seconds, for which the delivery + // of this messages is delayed. Default: 0. + DelayInSeconds int32 `protobuf:"varint,5,opt,name=delay_in_seconds,json=delayInSeconds,proto3" json:"delay_in_seconds,omitempty"` + // The metadata passing to pub components + // + // metadata property: + // - key : the key of the message. + Metadata map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *DelayMessageRequest) Reset() { + *x = DelayMessageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_spec_proto_extension_v1_delay_queue_delay_queue_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DelayMessageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelayMessageRequest) ProtoMessage() {} + +func (x *DelayMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_spec_proto_extension_v1_delay_queue_delay_queue_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 DelayMessageRequest.ProtoReflect.Descriptor instead. +func (*DelayMessageRequest) Descriptor() ([]byte, []int) { + return file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescGZIP(), []int{0} +} + +func (x *DelayMessageRequest) GetComponentName() string { + if x != nil { + return x.ComponentName + } + return "" +} + +func (x *DelayMessageRequest) GetTopic() string { + if x != nil { + return x.Topic + } + return "" +} + +func (x *DelayMessageRequest) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *DelayMessageRequest) GetDataContentType() string { + if x != nil { + return x.DataContentType + } + return "" +} + +func (x *DelayMessageRequest) GetDelayInSeconds() int32 { + if x != nil { + return x.DelayInSeconds + } + return 0 +} + +func (x *DelayMessageRequest) GetMetadata() map[string]string { + if x != nil { + return x.Metadata + } + return nil +} + +// DelayMessageResponse is the response +type DelayMessageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The message identifier + MessageId string `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` +} + +func (x *DelayMessageResponse) Reset() { + *x = DelayMessageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_spec_proto_extension_v1_delay_queue_delay_queue_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DelayMessageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelayMessageResponse) ProtoMessage() {} + +func (x *DelayMessageResponse) ProtoReflect() protoreflect.Message { + mi := &file_spec_proto_extension_v1_delay_queue_delay_queue_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 DelayMessageResponse.ProtoReflect.Descriptor instead. +func (*DelayMessageResponse) Descriptor() ([]byte, []int) { + return file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescGZIP(), []int{1} +} + +func (x *DelayMessageResponse) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +var File_spec_proto_extension_v1_delay_queue_delay_queue_proto protoreflect.FileDescriptor + +var file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDesc = []byte{ + 0x0a, 0x35, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x2f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x22, 0xdd, 0x02, 0x0a, + 0x13, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x6f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x49, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x62, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x71, 0x75, + 0x65, 0x75, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, + 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 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, 0x35, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x49, 0x64, 0x32, 0x9b, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x2e, 0x73, 0x70, 0x65, + 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x64, + 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x42, 0x41, 0x5a, 0x3f, 0x6d, 0x6f, 0x73, 0x6e, 0x2e, 0x69, 0x6f, 0x2f, 0x6c, 0x61, 0x79, + 0x6f, 0x74, 0x74, 0x6f, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x3b, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x71, + 0x75, 0x65, 0x75, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescOnce sync.Once + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescData = file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDesc +) + +func file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescGZIP() []byte { + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescOnce.Do(func() { + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescData = protoimpl.X.CompressGZIP(file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescData) + }) + return file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDescData +} + +var file_spec_proto_extension_v1_delay_queue_delay_queue_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_spec_proto_extension_v1_delay_queue_delay_queue_proto_goTypes = []interface{}{ + (*DelayMessageRequest)(nil), // 0: spec.proto.extension.v1.delay_queue.DelayMessageRequest + (*DelayMessageResponse)(nil), // 1: spec.proto.extension.v1.delay_queue.DelayMessageResponse + nil, // 2: spec.proto.extension.v1.delay_queue.DelayMessageRequest.MetadataEntry +} +var file_spec_proto_extension_v1_delay_queue_delay_queue_proto_depIdxs = []int32{ + 2, // 0: spec.proto.extension.v1.delay_queue.DelayMessageRequest.metadata:type_name -> spec.proto.extension.v1.delay_queue.DelayMessageRequest.MetadataEntry + 0, // 1: spec.proto.extension.v1.delay_queue.DelayQueue.PublishDelayMessage:input_type -> spec.proto.extension.v1.delay_queue.DelayMessageRequest + 1, // 2: spec.proto.extension.v1.delay_queue.DelayQueue.PublishDelayMessage:output_type -> spec.proto.extension.v1.delay_queue.DelayMessageResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_spec_proto_extension_v1_delay_queue_delay_queue_proto_init() } +func file_spec_proto_extension_v1_delay_queue_delay_queue_proto_init() { + if File_spec_proto_extension_v1_delay_queue_delay_queue_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DelayMessageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DelayMessageResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_spec_proto_extension_v1_delay_queue_delay_queue_proto_goTypes, + DependencyIndexes: file_spec_proto_extension_v1_delay_queue_delay_queue_proto_depIdxs, + MessageInfos: file_spec_proto_extension_v1_delay_queue_delay_queue_proto_msgTypes, + }.Build() + File_spec_proto_extension_v1_delay_queue_delay_queue_proto = out.File + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_rawDesc = nil + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_goTypes = nil + file_spec_proto_extension_v1_delay_queue_delay_queue_proto_depIdxs = nil +} diff --git a/spec/proto/extension/v1/delay_queue/delay_queue.proto b/spec/proto/extension/v1/delay_queue/delay_queue.proto new file mode 100644 index 0000000000..6bd4dcddcc --- /dev/null +++ b/spec/proto/extension/v1/delay_queue/delay_queue.proto @@ -0,0 +1,48 @@ +syntax = "proto3"; + +package spec.proto.extension.v1.delay_queue; + +option go_package = "mosn.io/layotto/spec/proto/extension/v1/delay_queue;delay_queue"; + +/* @exclude extends pub_subs */ +// DelayQueue is a special kind of message queue, which lets you postpone the delivery of new messages to consumers. +service DelayQueue { + + // Publish a delay message + rpc PublishDelayMessage(DelayMessageRequest) returns (DelayMessageResponse) {} + +} + +// DelayMessageRequest is the message to publish +message DelayMessageRequest { + + // Required. The name of the DelayQueue component + string component_name = 1; + + // Required. The pubsub topic + string topic = 2; + + // Required. The data which will be published to topic. + bytes data = 3; + + // The content type for the data (optional). + string data_content_type = 4; + + + // The length of time, in seconds, for which the delivery + // of this messages is delayed. Default: 0. + int32 delay_in_seconds = 5; + + // The metadata passing to pub components + // + // metadata property: + // - key : the key of the message. + map metadata = 6; +} + +// DelayMessageResponse is the response +message DelayMessageResponse { + + // The message identifier + string message_id = 1; +} diff --git a/spec/proto/extension/v1/delay_queue/delay_queue_grpc.pb.go b/spec/proto/extension/v1/delay_queue/delay_queue_grpc.pb.go new file mode 100644 index 0000000000..b22571868c --- /dev/null +++ b/spec/proto/extension/v1/delay_queue/delay_queue_grpc.pb.go @@ -0,0 +1,102 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package delay_queue + +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 + +// DelayQueueClient is the client API for DelayQueue 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 DelayQueueClient interface { + // Publish a delay message + PublishDelayMessage(ctx context.Context, in *DelayMessageRequest, opts ...grpc.CallOption) (*DelayMessageResponse, error) +} + +type delayQueueClient struct { + cc grpc.ClientConnInterface +} + +func NewDelayQueueClient(cc grpc.ClientConnInterface) DelayQueueClient { + return &delayQueueClient{cc} +} + +func (c *delayQueueClient) PublishDelayMessage(ctx context.Context, in *DelayMessageRequest, opts ...grpc.CallOption) (*DelayMessageResponse, error) { + out := new(DelayMessageResponse) + err := c.cc.Invoke(ctx, "/spec.proto.extension.v1.delay_queue.DelayQueue/PublishDelayMessage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// DelayQueueServer is the server API for DelayQueue service. +// All implementations should embed UnimplementedDelayQueueServer +// for forward compatibility +type DelayQueueServer interface { + // Publish a delay message + PublishDelayMessage(context.Context, *DelayMessageRequest) (*DelayMessageResponse, error) +} + +// UnimplementedDelayQueueServer should be embedded to have forward compatible implementations. +type UnimplementedDelayQueueServer struct { +} + +func (UnimplementedDelayQueueServer) PublishDelayMessage(context.Context, *DelayMessageRequest) (*DelayMessageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PublishDelayMessage not implemented") +} + +// UnsafeDelayQueueServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DelayQueueServer will +// result in compilation errors. +type UnsafeDelayQueueServer interface { + mustEmbedUnimplementedDelayQueueServer() +} + +func RegisterDelayQueueServer(s grpc.ServiceRegistrar, srv DelayQueueServer) { + s.RegisterService(&DelayQueue_ServiceDesc, srv) +} + +func _DelayQueue_PublishDelayMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DelayMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DelayQueueServer).PublishDelayMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/spec.proto.extension.v1.delay_queue.DelayQueue/PublishDelayMessage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DelayQueueServer).PublishDelayMessage(ctx, req.(*DelayMessageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// DelayQueue_ServiceDesc is the grpc.ServiceDesc for DelayQueue service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DelayQueue_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "spec.proto.extension.v1.delay_queue.DelayQueue", + HandlerType: (*DelayQueueServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "PublishDelayMessage", + Handler: _DelayQueue_PublishDelayMessage_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "spec/proto/extension/v1/delay_queue/delay_queue.proto", +} diff --git a/spec/proto/extension/v1/s3/oss.pb.go b/spec/proto/extension/v1/s3/oss.pb.go index e6a55c6a19..a07b9735be 100644 --- a/spec/proto/extension/v1/s3/oss.pb.go +++ b/spec/proto/extension/v1/s3/oss.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 +// protoc-gen-go v1.28.1 // protoc v3.17.3 // source: oss.proto diff --git a/spec/proto/runtime/v1/appcallback.pb.go b/spec/proto/runtime/v1/appcallback.pb.go index 0575000e72..9e6f1cc462 100644 --- a/spec/proto/runtime/v1/appcallback.pb.go +++ b/spec/proto/runtime/v1/appcallback.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 +// protoc-gen-go v1.28.1 // protoc v3.17.3 // source: appcallback.proto diff --git a/spec/proto/runtime/v1/lifecycle.pb.go b/spec/proto/runtime/v1/lifecycle.pb.go index c27533794e..86dfb9e917 100644 --- a/spec/proto/runtime/v1/lifecycle.pb.go +++ b/spec/proto/runtime/v1/lifecycle.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 +// protoc-gen-go v1.28.1 // protoc v3.17.3 // source: lifecycle.proto diff --git a/spec/proto/runtime/v1/runtime.pb.go b/spec/proto/runtime/v1/runtime.pb.go index 60480c17ae..713c22f4fc 100644 --- a/spec/proto/runtime/v1/runtime.pb.go +++ b/spec/proto/runtime/v1/runtime.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.0 +// protoc-gen-go v1.28.1 // protoc v3.17.3 // source: runtime.proto