diff --git a/management/proto/flow.pb.go b/management/proto/flow.pb.go new file mode 100644 index 000000000..67a10c0e5 --- /dev/null +++ b/management/proto/flow.pb.go @@ -0,0 +1,225 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.12 +// source: flow.proto + +package proto + +import ( + 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) +) + +type FlowEventRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Unique client event identifier + EventId string `protobuf:"bytes,1,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"` + // Unique client flow session identifier + FlowId string `protobuf:"bytes,2,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"` +} + +func (x *FlowEventRequest) Reset() { + *x = FlowEventRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_flow_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowEventRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowEventRequest) ProtoMessage() {} + +func (x *FlowEventRequest) ProtoReflect() protoreflect.Message { + mi := &file_flow_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 FlowEventRequest.ProtoReflect.Descriptor instead. +func (*FlowEventRequest) Descriptor() ([]byte, []int) { + return file_flow_proto_rawDescGZIP(), []int{0} +} + +func (x *FlowEventRequest) GetEventId() string { + if x != nil { + return x.EventId + } + return "" +} + +func (x *FlowEventRequest) GetFlowId() string { + if x != nil { + return x.FlowId + } + return "" +} + +type FlowEventResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Unique client event identifier that has been ack'ed + EventId string `protobuf:"bytes,1,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"` +} + +func (x *FlowEventResponse) Reset() { + *x = FlowEventResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_flow_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowEventResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowEventResponse) ProtoMessage() {} + +func (x *FlowEventResponse) ProtoReflect() protoreflect.Message { + mi := &file_flow_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 FlowEventResponse.ProtoReflect.Descriptor instead. +func (*FlowEventResponse) Descriptor() ([]byte, []int) { + return file_flow_proto_rawDescGZIP(), []int{1} +} + +func (x *FlowEventResponse) GetEventId() string { + if x != nil { + return x.EventId + } + return "" +} + +var File_flow_proto protoreflect.FileDescriptor + +var file_flow_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x10, 0x46, 0x6c, 0x6f, 0x77, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x6c, 0x6f, 0x77, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, + 0x22, 0x2e, 0x0a, 0x11, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x32, 0x5a, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x4b, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x08, 0x5a, 0x06, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_flow_proto_rawDescOnce sync.Once + file_flow_proto_rawDescData = file_flow_proto_rawDesc +) + +func file_flow_proto_rawDescGZIP() []byte { + file_flow_proto_rawDescOnce.Do(func() { + file_flow_proto_rawDescData = protoimpl.X.CompressGZIP(file_flow_proto_rawDescData) + }) + return file_flow_proto_rawDescData +} + +var file_flow_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_flow_proto_goTypes = []interface{}{ + (*FlowEventRequest)(nil), // 0: management.FlowEventRequest + (*FlowEventResponse)(nil), // 1: management.FlowEventResponse +} +var file_flow_proto_depIdxs = []int32{ + 0, // 0: management.FlowService.Events:input_type -> management.FlowEventRequest + 1, // 1: management.FlowService.Events:output_type -> management.FlowEventResponse + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] 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_flow_proto_init() } +func file_flow_proto_init() { + if File_flow_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_flow_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowEventRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_flow_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowEventResponse); 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_flow_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_flow_proto_goTypes, + DependencyIndexes: file_flow_proto_depIdxs, + MessageInfos: file_flow_proto_msgTypes, + }.Build() + File_flow_proto = out.File + file_flow_proto_rawDesc = nil + file_flow_proto_goTypes = nil + file_flow_proto_depIdxs = nil +} diff --git a/management/proto/flow.proto b/management/proto/flow.proto new file mode 100644 index 000000000..45489bd5b --- /dev/null +++ b/management/proto/flow.proto @@ -0,0 +1,26 @@ +syntax = "proto3"; + +option go_package = "/proto"; + +package management; + +service FlowService { + // Client to receiver streams of events and acknowledgements + rpc Events(stream FlowEventRequest) returns (stream FlowEventResponse) {} +} + +message FlowEventRequest { + // Unique client event identifier + string event_id = 1; + + // Unique client flow session identifier + string flow_id = 2; + + // @todo define event props +} + +message FlowEventResponse { + // Unique client event identifier that has been ack'ed + string event_id = 1; +} + diff --git a/management/proto/flow_grpc.pb.go b/management/proto/flow_grpc.pb.go new file mode 100644 index 000000000..7a7ca1519 --- /dev/null +++ b/management/proto/flow_grpc.pb.go @@ -0,0 +1,135 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package proto + +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 + +// FlowServiceClient is the client API for FlowService 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 FlowServiceClient interface { + // Client to receiver streams of events and acknowledgements + Events(ctx context.Context, opts ...grpc.CallOption) (FlowService_EventsClient, error) +} + +type flowServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewFlowServiceClient(cc grpc.ClientConnInterface) FlowServiceClient { + return &flowServiceClient{cc} +} + +func (c *flowServiceClient) Events(ctx context.Context, opts ...grpc.CallOption) (FlowService_EventsClient, error) { + stream, err := c.cc.NewStream(ctx, &FlowService_ServiceDesc.Streams[0], "/management.FlowService/Events", opts...) + if err != nil { + return nil, err + } + x := &flowServiceEventsClient{stream} + return x, nil +} + +type FlowService_EventsClient interface { + Send(*FlowEventRequest) error + Recv() (*FlowEventResponse, error) + grpc.ClientStream +} + +type flowServiceEventsClient struct { + grpc.ClientStream +} + +func (x *flowServiceEventsClient) Send(m *FlowEventRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *flowServiceEventsClient) Recv() (*FlowEventResponse, error) { + m := new(FlowEventResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// FlowServiceServer is the server API for FlowService service. +// All implementations must embed UnimplementedFlowServiceServer +// for forward compatibility +type FlowServiceServer interface { + // Client to receiver streams of events and acknowledgements + Events(FlowService_EventsServer) error + mustEmbedUnimplementedFlowServiceServer() +} + +// UnimplementedFlowServiceServer must be embedded to have forward compatible implementations. +type UnimplementedFlowServiceServer struct { +} + +func (UnimplementedFlowServiceServer) Events(FlowService_EventsServer) error { + return status.Errorf(codes.Unimplemented, "method Events not implemented") +} +func (UnimplementedFlowServiceServer) mustEmbedUnimplementedFlowServiceServer() {} + +// UnsafeFlowServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to FlowServiceServer will +// result in compilation errors. +type UnsafeFlowServiceServer interface { + mustEmbedUnimplementedFlowServiceServer() +} + +func RegisterFlowServiceServer(s grpc.ServiceRegistrar, srv FlowServiceServer) { + s.RegisterService(&FlowService_ServiceDesc, srv) +} + +func _FlowService_Events_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(FlowServiceServer).Events(&flowServiceEventsServer{stream}) +} + +type FlowService_EventsServer interface { + Send(*FlowEventResponse) error + Recv() (*FlowEventRequest, error) + grpc.ServerStream +} + +type flowServiceEventsServer struct { + grpc.ServerStream +} + +func (x *flowServiceEventsServer) Send(m *FlowEventResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *flowServiceEventsServer) Recv() (*FlowEventRequest, error) { + m := new(FlowEventRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// FlowService_ServiceDesc is the grpc.ServiceDesc for FlowService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var FlowService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "management.FlowService", + HandlerType: (*FlowServiceServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{ + { + StreamName: "Events", + Handler: _FlowService_Events_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "flow.proto", +} diff --git a/management/proto/generate.sh b/management/proto/generate.sh index 64aef891e..a7fbd720e 100755 --- a/management/proto/generate.sh +++ b/management/proto/generate.sh @@ -14,4 +14,5 @@ cd "$script_path" go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1 protoc -I ./ ./management.proto --go_out=../ --go-grpc_out=../ +protoc -I ./ ./flow.proto --go_out=../ --go-grpc_out=../ cd "$old_pwd" \ No newline at end of file