From 77c7563bd01ec756d900987b0ae1e9f8b5f8502c Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Sun, 28 Feb 2021 00:37:11 +0300 Subject: [PATCH] add micro specific proto stuff Signed-off-by: Vasiliy Tolstov --- api/annotations.pb.go | 91 ++++++++++---- api/annotations.proto | 11 ++ api/micro.pb.go | 280 ++++++++++++++++++++++++++++++++++++++++++ api/micro.proto | 46 +++++++ generate.go | 1 + 5 files changed, 408 insertions(+), 21 deletions(-) create mode 100644 api/micro.pb.go create mode 100644 api/micro.proto diff --git a/api/annotations.pb.go b/api/annotations.pb.go index 82623fa..1368de3 100644 --- a/api/annotations.pb.go +++ b/api/annotations.pb.go @@ -48,6 +48,22 @@ var file_api_annotations_proto_extTypes = []protoimpl.ExtensionInfo{ Tag: "bytes,72295728,opt,name=http", Filename: "api/annotations.proto", }, + { + ExtendedType: (*descriptor.MethodOptions)(nil), + ExtensionType: (*MicroMethod)(nil), + Field: 65535655, + Name: "micro.api.micro_method", + Tag: "bytes,65535655,opt,name=micro_method", + Filename: "api/annotations.proto", + }, + { + ExtendedType: (*descriptor.ServiceOptions)(nil), + ExtensionType: (*MicroService)(nil), + Field: 65535655, + Name: "micro.api.micro_service", + Tag: "bytes,65535655,opt,name=micro_service", + Filename: "api/annotations.proto", + }, } // Extension fields to descriptor.MethodOptions. @@ -56,6 +72,18 @@ var ( // // optional micro.api.HttpRule http = 72295728; E_Http = &file_api_annotations_proto_extTypes[0] + // See `MicroMethod`. + // + // optional micro.api.MicroMethod micro_method = 65535655; + E_MicroMethod = &file_api_annotations_proto_extTypes[1] +) + +// Extension fields to descriptor.ServiceOptions. +var ( + // See `MicroService` + // + // optional micro.api.MicroService micro_service = 65535655; + E_MicroService = &file_api_annotations_proto_extTypes[2] ) var File_api_annotations_proto protoreflect.FileDescriptor @@ -64,32 +92,52 @@ var file_api_annotations_proto_rawDesc = []byte{ 0x0a, 0x15, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x1a, 0x0e, 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x3a, 0x4a, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, 0x1e, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0xca, 0xbc, - 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, - 0x42, 0x53, 0x0a, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x10, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, - 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, - 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0xa2, 0x02, - 0x04, 0x4d, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x1a, 0x0f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3a, 0x4a, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, 0x1e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xb0, 0xca, + 0xbc, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x5c, 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa7, 0xfd, 0x9f, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x63, + 0x72, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x52, 0x0b, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x3a, + 0x60, 0x0a, 0x0d, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xa7, 0xfd, 0x9f, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x63, + 0x72, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x42, 0x53, 0x0a, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x10, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, + 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x6d, 0x69, 0x63, 0x72, + 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0xa2, + 0x02, 0x04, 0x4d, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_api_annotations_proto_goTypes = []interface{}{ - (*descriptor.MethodOptions)(nil), // 0: google.protobuf.MethodOptions - (*HttpRule)(nil), // 1: micro.api.HttpRule + (*descriptor.MethodOptions)(nil), // 0: google.protobuf.MethodOptions + (*descriptor.ServiceOptions)(nil), // 1: google.protobuf.ServiceOptions + (*HttpRule)(nil), // 2: micro.api.HttpRule + (*MicroMethod)(nil), // 3: micro.api.MicroMethod + (*MicroService)(nil), // 4: micro.api.MicroService } var file_api_annotations_proto_depIdxs = []int32{ 0, // 0: micro.api.http:extendee -> google.protobuf.MethodOptions - 1, // 1: micro.api.http:type_name -> micro.api.HttpRule - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 1, // [1:2] is the sub-list for extension type_name - 0, // [0:1] is the sub-list for extension extendee + 0, // 1: micro.api.micro_method:extendee -> google.protobuf.MethodOptions + 1, // 2: micro.api.micro_service:extendee -> google.protobuf.ServiceOptions + 2, // 3: micro.api.http:type_name -> micro.api.HttpRule + 3, // 4: micro.api.micro_method:type_name -> micro.api.MicroMethod + 4, // 5: micro.api.micro_service:type_name -> micro.api.MicroService + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 3, // [3:6] is the sub-list for extension type_name + 0, // [0:3] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name } @@ -99,6 +147,7 @@ func file_api_annotations_proto_init() { return } file_api_http_proto_init() + file_api_micro_proto_init() type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ @@ -106,7 +155,7 @@ func file_api_annotations_proto_init() { RawDescriptor: file_api_annotations_proto_rawDesc, NumEnums: 0, NumMessages: 0, - NumExtensions: 1, + NumExtensions: 3, NumServices: 0, }, GoTypes: file_api_annotations_proto_goTypes, diff --git a/api/annotations.proto b/api/annotations.proto index b13cfbd..dba854a 100644 --- a/api/annotations.proto +++ b/api/annotations.proto @@ -17,6 +17,7 @@ syntax = "proto3"; package micro.api; import "api/http.proto"; +import "api/micro.proto"; import "google/protobuf/descriptor.proto"; option go_package = "github.com/unistack-org/micro-proto/api;api"; @@ -29,3 +30,13 @@ extend google.protobuf.MethodOptions { // See `HttpRule`. HttpRule http = 72295728; } + +extend google.protobuf.MethodOptions { + // See `MicroMethod`. + MicroMethod micro_method = 65535655; +} + +extend google.protobuf.ServiceOptions { + // See `MicroService` + MicroService micro_service = 65535655; +} diff --git a/api/micro.pb.go b/api/micro.pb.go new file mode 100644 index 0000000..7da8d32 --- /dev/null +++ b/api/micro.pb.go @@ -0,0 +1,280 @@ +// Copyright 2020 Unistack LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0-devel +// protoc v3.6.1 +// source: api/micro.proto + +package api + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// Defines the Micro configuration for a method. It contains a +// [MicroMethod][micro.api.MicroMethod] +type MicroMethod struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Timeout for handler + Timeout int32 `protobuf:"varint,1,opt,name=timeout,proto3" json:"timeout,omitempty"` + // ServerOptions contains options for server + ServerOptions []string `protobuf:"bytes,2,rep,name=server_options,json=serverOptions,proto3" json:"server_options,omitempty"` + // ClientOptions contains options for client + ClientOptions []string `protobuf:"bytes,3,rep,name=client_options,json=clientOptions,proto3" json:"client_options,omitempty"` + // Type rpc/pub/sub + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *MicroMethod) Reset() { + *x = MicroMethod{} + if protoimpl.UnsafeEnabled { + mi := &file_api_micro_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MicroMethod) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MicroMethod) ProtoMessage() {} + +func (x *MicroMethod) ProtoReflect() protoreflect.Message { + mi := &file_api_micro_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 MicroMethod.ProtoReflect.Descriptor instead. +func (*MicroMethod) Descriptor() ([]byte, []int) { + return file_api_micro_proto_rawDescGZIP(), []int{0} +} + +func (x *MicroMethod) GetTimeout() int32 { + if x != nil { + return x.Timeout + } + return 0 +} + +func (x *MicroMethod) GetServerOptions() []string { + if x != nil { + return x.ServerOptions + } + return nil +} + +func (x *MicroMethod) GetClientOptions() []string { + if x != nil { + return x.ClientOptions + } + return nil +} + +func (x *MicroMethod) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// Defines the Micro configuration for a method. It contains a +// [MicroService][micro.api.MicroService] +type MicroService struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // ServerWrappers contains wrappers for server + ServerWrappers []string `protobuf:"bytes,1,rep,name=server_wrappers,json=serverWrappers,proto3" json:"server_wrappers,omitempty"` + // ClientWrappers contains wrappers for client + ClientWrappers []string `protobuf:"bytes,2,rep,name=client_wrappers,json=clientWrappers,proto3" json:"client_wrappers,omitempty"` +} + +func (x *MicroService) Reset() { + *x = MicroService{} + if protoimpl.UnsafeEnabled { + mi := &file_api_micro_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MicroService) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MicroService) ProtoMessage() {} + +func (x *MicroService) ProtoReflect() protoreflect.Message { + mi := &file_api_micro_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 MicroService.ProtoReflect.Descriptor instead. +func (*MicroService) Descriptor() ([]byte, []int) { + return file_api_micro_proto_rawDescGZIP(), []int{1} +} + +func (x *MicroService) GetServerWrappers() []string { + if x != nil { + return x.ServerWrappers + } + return nil +} + +func (x *MicroService) GetClientWrappers() []string { + if x != nil { + return x.ClientWrappers + } + return nil +} + +var File_api_micro_proto protoreflect.FileDescriptor + +var file_api_micro_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x22, 0x89, 0x01, 0x0a, + 0x0b, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, + 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x0c, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x42, 0x50, 0x0a, 0x09, 0x6d, 0x69, + 0x63, 0x72, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x42, 0x0a, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x6d, + 0x69, 0x63, 0x72, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, + 0x70, 0x69, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x04, 0x4d, 0x41, 0x50, 0x49, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_api_micro_proto_rawDescOnce sync.Once + file_api_micro_proto_rawDescData = file_api_micro_proto_rawDesc +) + +func file_api_micro_proto_rawDescGZIP() []byte { + file_api_micro_proto_rawDescOnce.Do(func() { + file_api_micro_proto_rawDescData = protoimpl.X.CompressGZIP(file_api_micro_proto_rawDescData) + }) + return file_api_micro_proto_rawDescData +} + +var file_api_micro_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_api_micro_proto_goTypes = []interface{}{ + (*MicroMethod)(nil), // 0: micro.api.MicroMethod + (*MicroService)(nil), // 1: micro.api.MicroService +} +var file_api_micro_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_api_micro_proto_init() } +func file_api_micro_proto_init() { + if File_api_micro_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_api_micro_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MicroMethod); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_micro_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MicroService); 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_api_micro_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_api_micro_proto_goTypes, + DependencyIndexes: file_api_micro_proto_depIdxs, + MessageInfos: file_api_micro_proto_msgTypes, + }.Build() + File_api_micro_proto = out.File + file_api_micro_proto_rawDesc = nil + file_api_micro_proto_goTypes = nil + file_api_micro_proto_depIdxs = nil +} diff --git a/api/micro.proto b/api/micro.proto new file mode 100644 index 0000000..17fcbb3 --- /dev/null +++ b/api/micro.proto @@ -0,0 +1,46 @@ +// Copyright 2020 Unistack LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package micro.api; + +option cc_enable_arenas = true; +option go_package = "github.com/unistack-org/micro-proto/api;api"; +option java_multiple_files = true; +option java_outer_classname = "MicroProto"; +option java_package = "micro.api"; +option objc_class_prefix = "MAPI"; + +// Defines the Micro configuration for a method. It contains a +// [MicroMethod][micro.api.MicroMethod] +message MicroMethod { + // Timeout for handler + int32 timeout = 1; + // ServerOptions contains options for server + repeated string server_options = 2; + // ClientOptions contains options for client + repeated string client_options = 3; + // Type rpc/pub/sub + string type = 4; +} + +// Defines the Micro configuration for a method. It contains a +// [MicroService][micro.api.MicroService] +message MicroService { + // ServerWrappers contains wrappers for server + repeated string server_wrappers = 1; + // ClientWrappers contains wrappers for client + repeated string client_wrappers = 2; +} diff --git a/generate.go b/generate.go index 9d58bb5..11a57e5 100644 --- a/generate.go +++ b/generate.go @@ -2,6 +2,7 @@ package main //go:generate protoc -I. -I./api --go_out=paths=source_relative:. ./api/annotations.proto //go:generate protoc -I. -I./api --go_out=paths=source_relative:. ./api/http.proto +//go:generate protoc -I. -I./api --go_out=paths=source_relative:. ./api/micro.proto //go:generate protoc -I. -I./api --go_out=paths=source_relative:. ./api/field_behavior.proto //go:generate protoc -I. -I./api --go_out=paths=source_relative:. ./api/httpbody.proto //go:generate protoc -I. -I./openapiv2 --go_out=paths=source_relative:. ./openapiv2/annotations.proto