From 8cd3e1c20eebd3f7c4eb701a30a844489b0765e8 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 28 May 2026 13:22:06 -0400 Subject: [PATCH] client/go: regenerate protos for BrowseChildren --- .../generated/galaxy_repository.pb.go | 335 ++++++++++++++++-- .../generated/galaxy_repository_grpc.pb.go | 48 ++- .../internal/generated/mxaccess_gateway.pb.go | 7 +- .../generated/mxaccess_gateway_grpc.pb.go | 8 +- 4 files changed, 369 insertions(+), 29 deletions(-) diff --git a/clients/go/internal/generated/galaxy_repository.pb.go b/clients/go/internal/generated/galaxy_repository.pb.go index 003ffed..77f7202 100644 --- a/clients/go/internal/generated/galaxy_repository.pb.go +++ b/clients/go/internal/generated/galaxy_repository.pb.go @@ -824,6 +824,260 @@ func (x *GalaxyAttribute) GetIsAlarm() bool { return false } +type BrowseChildrenRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Parent selector. Empty oneof returns root objects (parent_gobject_id == 0). + // + // Types that are valid to be assigned to Parent: + // + // *BrowseChildrenRequest_ParentGobjectId + // *BrowseChildrenRequest_ParentTagName + // *BrowseChildrenRequest_ParentContainedPath + Parent isBrowseChildrenRequest_Parent `protobuf_oneof:"parent"` + // Maximum number of direct children to return. Server default 500; cap 5000. + PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Opaque token returned by a previous BrowseChildren response. Bound to the + // cache sequence, parent selector, and the filter set; a mismatch returns + // InvalidArgument. + PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // --- Filter parity with DiscoverHierarchy. AND-combined. --- + CategoryIds []int32 `protobuf:"varint,6,rep,packed,name=category_ids,json=categoryIds,proto3" json:"category_ids,omitempty"` + TemplateChainContains []string `protobuf:"bytes,7,rep,name=template_chain_contains,json=templateChainContains,proto3" json:"template_chain_contains,omitempty"` + TagNameGlob string `protobuf:"bytes,8,opt,name=tag_name_glob,json=tagNameGlob,proto3" json:"tag_name_glob,omitempty"` + IncludeAttributes *bool `protobuf:"varint,9,opt,name=include_attributes,json=includeAttributes,proto3,oneof" json:"include_attributes,omitempty"` + AlarmBearingOnly bool `protobuf:"varint,10,opt,name=alarm_bearing_only,json=alarmBearingOnly,proto3" json:"alarm_bearing_only,omitempty"` + HistorizedOnly bool `protobuf:"varint,11,opt,name=historized_only,json=historizedOnly,proto3" json:"historized_only,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BrowseChildrenRequest) Reset() { + *x = BrowseChildrenRequest{} + mi := &file_galaxy_repository_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BrowseChildrenRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BrowseChildrenRequest) ProtoMessage() {} + +func (x *BrowseChildrenRequest) ProtoReflect() protoreflect.Message { + mi := &file_galaxy_repository_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BrowseChildrenRequest.ProtoReflect.Descriptor instead. +func (*BrowseChildrenRequest) Descriptor() ([]byte, []int) { + return file_galaxy_repository_proto_rawDescGZIP(), []int{10} +} + +func (x *BrowseChildrenRequest) GetParent() isBrowseChildrenRequest_Parent { + if x != nil { + return x.Parent + } + return nil +} + +func (x *BrowseChildrenRequest) GetParentGobjectId() int32 { + if x != nil { + if x, ok := x.Parent.(*BrowseChildrenRequest_ParentGobjectId); ok { + return x.ParentGobjectId + } + } + return 0 +} + +func (x *BrowseChildrenRequest) GetParentTagName() string { + if x != nil { + if x, ok := x.Parent.(*BrowseChildrenRequest_ParentTagName); ok { + return x.ParentTagName + } + } + return "" +} + +func (x *BrowseChildrenRequest) GetParentContainedPath() string { + if x != nil { + if x, ok := x.Parent.(*BrowseChildrenRequest_ParentContainedPath); ok { + return x.ParentContainedPath + } + } + return "" +} + +func (x *BrowseChildrenRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *BrowseChildrenRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *BrowseChildrenRequest) GetCategoryIds() []int32 { + if x != nil { + return x.CategoryIds + } + return nil +} + +func (x *BrowseChildrenRequest) GetTemplateChainContains() []string { + if x != nil { + return x.TemplateChainContains + } + return nil +} + +func (x *BrowseChildrenRequest) GetTagNameGlob() string { + if x != nil { + return x.TagNameGlob + } + return "" +} + +func (x *BrowseChildrenRequest) GetIncludeAttributes() bool { + if x != nil && x.IncludeAttributes != nil { + return *x.IncludeAttributes + } + return false +} + +func (x *BrowseChildrenRequest) GetAlarmBearingOnly() bool { + if x != nil { + return x.AlarmBearingOnly + } + return false +} + +func (x *BrowseChildrenRequest) GetHistorizedOnly() bool { + if x != nil { + return x.HistorizedOnly + } + return false +} + +type isBrowseChildrenRequest_Parent interface { + isBrowseChildrenRequest_Parent() +} + +type BrowseChildrenRequest_ParentGobjectId struct { + ParentGobjectId int32 `protobuf:"varint,1,opt,name=parent_gobject_id,json=parentGobjectId,proto3,oneof"` +} + +type BrowseChildrenRequest_ParentTagName struct { + ParentTagName string `protobuf:"bytes,2,opt,name=parent_tag_name,json=parentTagName,proto3,oneof"` +} + +type BrowseChildrenRequest_ParentContainedPath struct { + ParentContainedPath string `protobuf:"bytes,3,opt,name=parent_contained_path,json=parentContainedPath,proto3,oneof"` +} + +func (*BrowseChildrenRequest_ParentGobjectId) isBrowseChildrenRequest_Parent() {} + +func (*BrowseChildrenRequest_ParentTagName) isBrowseChildrenRequest_Parent() {} + +func (*BrowseChildrenRequest_ParentContainedPath) isBrowseChildrenRequest_Parent() {} + +type BrowseChildrenReply struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Direct children matching the filter, sorted areas-first then by + // case-insensitive display name (same order as the dashboard tree). + Children []*GalaxyObject `protobuf:"bytes,1,rep,name=children,proto3" json:"children,omitempty"` + // Non-empty when another page of siblings is available. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Total matching direct children of the parent (post-filter). + TotalChildCount int32 `protobuf:"varint,3,opt,name=total_child_count,json=totalChildCount,proto3" json:"total_child_count,omitempty"` + // Parallel array, indexed with `children`. True when the child has at least + // one matching descendant under the same filter set. Lets a UI choose + // whether to draw an expand triangle without an extra round trip. + ChildHasChildren []bool `protobuf:"varint,4,rep,packed,name=child_has_children,json=childHasChildren,proto3" json:"child_has_children,omitempty"` + // Cache sequence this reply was projected from. Clients may pass it back as + // part of the page_token contract. Mismatch on the next page -> InvalidArgument. + CacheSequence uint64 `protobuf:"varint,5,opt,name=cache_sequence,json=cacheSequence,proto3" json:"cache_sequence,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BrowseChildrenReply) Reset() { + *x = BrowseChildrenReply{} + mi := &file_galaxy_repository_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BrowseChildrenReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BrowseChildrenReply) ProtoMessage() {} + +func (x *BrowseChildrenReply) ProtoReflect() protoreflect.Message { + mi := &file_galaxy_repository_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BrowseChildrenReply.ProtoReflect.Descriptor instead. +func (*BrowseChildrenReply) Descriptor() ([]byte, []int) { + return file_galaxy_repository_proto_rawDescGZIP(), []int{11} +} + +func (x *BrowseChildrenReply) GetChildren() []*GalaxyObject { + if x != nil { + return x.Children + } + return nil +} + +func (x *BrowseChildrenReply) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +func (x *BrowseChildrenReply) GetTotalChildCount() int32 { + if x != nil { + return x.TotalChildCount + } + return 0 +} + +func (x *BrowseChildrenReply) GetChildHasChildren() []bool { + if x != nil { + return x.ChildHasChildren + } + return nil +} + +func (x *BrowseChildrenReply) GetCacheSequence() uint64 { + if x != nil { + return x.CacheSequence + } + return 0 +} + var File_galaxy_repository_proto protoreflect.FileDescriptor const file_galaxy_repository_proto_rawDesc = "" + @@ -897,12 +1151,35 @@ const file_galaxy_repository_proto_rawDesc = "" + "\x17security_classification\x18\t \x01(\x05R\x16securityClassification\x12#\n" + "\ris_historized\x18\n" + " \x01(\bR\fisHistorized\x12\x19\n" + - "\bis_alarm\x18\v \x01(\bR\aisAlarm2\xcc\x03\n" + + "\bis_alarm\x18\v \x01(\bR\aisAlarm\"\x8c\x04\n" + + "\x15BrowseChildrenRequest\x12,\n" + + "\x11parent_gobject_id\x18\x01 \x01(\x05H\x00R\x0fparentGobjectId\x12(\n" + + "\x0fparent_tag_name\x18\x02 \x01(\tH\x00R\rparentTagName\x124\n" + + "\x15parent_contained_path\x18\x03 \x01(\tH\x00R\x13parentContainedPath\x12\x1b\n" + + "\tpage_size\x18\x04 \x01(\x05R\bpageSize\x12\x1d\n" + + "\n" + + "page_token\x18\x05 \x01(\tR\tpageToken\x12!\n" + + "\fcategory_ids\x18\x06 \x03(\x05R\vcategoryIds\x126\n" + + "\x17template_chain_contains\x18\a \x03(\tR\x15templateChainContains\x12\"\n" + + "\rtag_name_glob\x18\b \x01(\tR\vtagNameGlob\x122\n" + + "\x12include_attributes\x18\t \x01(\bH\x01R\x11includeAttributes\x88\x01\x01\x12,\n" + + "\x12alarm_bearing_only\x18\n" + + " \x01(\bR\x10alarmBearingOnly\x12'\n" + + "\x0fhistorized_only\x18\v \x01(\bR\x0ehistorizedOnlyB\b\n" + + "\x06parentB\x15\n" + + "\x13_include_attributes\"\xfe\x01\n" + + "\x13BrowseChildrenReply\x12>\n" + + "\bchildren\x18\x01 \x03(\v2\".galaxy_repository.v1.GalaxyObjectR\bchildren\x12&\n" + + "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12*\n" + + "\x11total_child_count\x18\x03 \x01(\x05R\x0ftotalChildCount\x12,\n" + + "\x12child_has_children\x18\x04 \x03(\bR\x10childHasChildren\x12%\n" + + "\x0ecache_sequence\x18\x05 \x01(\x04R\rcacheSequence2\xb6\x04\n" + "\x10GalaxyRepository\x12h\n" + "\x0eTestConnection\x12+.galaxy_repository.v1.TestConnectionRequest\x1a).galaxy_repository.v1.TestConnectionReply\x12q\n" + "\x11GetLastDeployTime\x12..galaxy_repository.v1.GetLastDeployTimeRequest\x1a,.galaxy_repository.v1.GetLastDeployTimeReply\x12q\n" + "\x11DiscoverHierarchy\x12..galaxy_repository.v1.DiscoverHierarchyRequest\x1a,.galaxy_repository.v1.DiscoverHierarchyReply\x12h\n" + - "\x11WatchDeployEvents\x12..galaxy_repository.v1.WatchDeployEventsRequest\x1a!.galaxy_repository.v1.DeployEvent0\x01B-\xaa\x02*ZB.MOM.WW.MxGateway.Contracts.Proto.Galaxyb\x06proto3" + "\x11WatchDeployEvents\x12..galaxy_repository.v1.WatchDeployEventsRequest\x1a!.galaxy_repository.v1.DeployEvent0\x01\x12h\n" + + "\x0eBrowseChildren\x12+.galaxy_repository.v1.BrowseChildrenRequest\x1a).galaxy_repository.v1.BrowseChildrenReplyB-\xaa\x02*ZB.MOM.WW.MxGateway.Contracts.Proto.Galaxyb\x06proto3" var ( file_galaxy_repository_proto_rawDescOnce sync.Once @@ -916,7 +1193,7 @@ func file_galaxy_repository_proto_rawDescGZIP() []byte { return file_galaxy_repository_proto_rawDescData } -var file_galaxy_repository_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_galaxy_repository_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_galaxy_repository_proto_goTypes = []any{ (*TestConnectionRequest)(nil), // 0: galaxy_repository.v1.TestConnectionRequest (*TestConnectionReply)(nil), // 1: galaxy_repository.v1.TestConnectionReply @@ -928,30 +1205,35 @@ var file_galaxy_repository_proto_goTypes = []any{ (*DeployEvent)(nil), // 7: galaxy_repository.v1.DeployEvent (*GalaxyObject)(nil), // 8: galaxy_repository.v1.GalaxyObject (*GalaxyAttribute)(nil), // 9: galaxy_repository.v1.GalaxyAttribute - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp - (*wrapperspb.Int32Value)(nil), // 11: google.protobuf.Int32Value + (*BrowseChildrenRequest)(nil), // 10: galaxy_repository.v1.BrowseChildrenRequest + (*BrowseChildrenReply)(nil), // 11: galaxy_repository.v1.BrowseChildrenReply + (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp + (*wrapperspb.Int32Value)(nil), // 13: google.protobuf.Int32Value } var file_galaxy_repository_proto_depIdxs = []int32{ - 10, // 0: galaxy_repository.v1.GetLastDeployTimeReply.time_of_last_deploy:type_name -> google.protobuf.Timestamp - 11, // 1: galaxy_repository.v1.DiscoverHierarchyRequest.max_depth:type_name -> google.protobuf.Int32Value + 12, // 0: galaxy_repository.v1.GetLastDeployTimeReply.time_of_last_deploy:type_name -> google.protobuf.Timestamp + 13, // 1: galaxy_repository.v1.DiscoverHierarchyRequest.max_depth:type_name -> google.protobuf.Int32Value 8, // 2: galaxy_repository.v1.DiscoverHierarchyReply.objects:type_name -> galaxy_repository.v1.GalaxyObject - 10, // 3: galaxy_repository.v1.WatchDeployEventsRequest.last_seen_deploy_time:type_name -> google.protobuf.Timestamp - 10, // 4: galaxy_repository.v1.DeployEvent.observed_at:type_name -> google.protobuf.Timestamp - 10, // 5: galaxy_repository.v1.DeployEvent.time_of_last_deploy:type_name -> google.protobuf.Timestamp + 12, // 3: galaxy_repository.v1.WatchDeployEventsRequest.last_seen_deploy_time:type_name -> google.protobuf.Timestamp + 12, // 4: galaxy_repository.v1.DeployEvent.observed_at:type_name -> google.protobuf.Timestamp + 12, // 5: galaxy_repository.v1.DeployEvent.time_of_last_deploy:type_name -> google.protobuf.Timestamp 9, // 6: galaxy_repository.v1.GalaxyObject.attributes:type_name -> galaxy_repository.v1.GalaxyAttribute - 0, // 7: galaxy_repository.v1.GalaxyRepository.TestConnection:input_type -> galaxy_repository.v1.TestConnectionRequest - 2, // 8: galaxy_repository.v1.GalaxyRepository.GetLastDeployTime:input_type -> galaxy_repository.v1.GetLastDeployTimeRequest - 4, // 9: galaxy_repository.v1.GalaxyRepository.DiscoverHierarchy:input_type -> galaxy_repository.v1.DiscoverHierarchyRequest - 6, // 10: galaxy_repository.v1.GalaxyRepository.WatchDeployEvents:input_type -> galaxy_repository.v1.WatchDeployEventsRequest - 1, // 11: galaxy_repository.v1.GalaxyRepository.TestConnection:output_type -> galaxy_repository.v1.TestConnectionReply - 3, // 12: galaxy_repository.v1.GalaxyRepository.GetLastDeployTime:output_type -> galaxy_repository.v1.GetLastDeployTimeReply - 5, // 13: galaxy_repository.v1.GalaxyRepository.DiscoverHierarchy:output_type -> galaxy_repository.v1.DiscoverHierarchyReply - 7, // 14: galaxy_repository.v1.GalaxyRepository.WatchDeployEvents:output_type -> galaxy_repository.v1.DeployEvent - 11, // [11:15] is the sub-list for method output_type - 7, // [7:11] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 8, // 7: galaxy_repository.v1.BrowseChildrenReply.children:type_name -> galaxy_repository.v1.GalaxyObject + 0, // 8: galaxy_repository.v1.GalaxyRepository.TestConnection:input_type -> galaxy_repository.v1.TestConnectionRequest + 2, // 9: galaxy_repository.v1.GalaxyRepository.GetLastDeployTime:input_type -> galaxy_repository.v1.GetLastDeployTimeRequest + 4, // 10: galaxy_repository.v1.GalaxyRepository.DiscoverHierarchy:input_type -> galaxy_repository.v1.DiscoverHierarchyRequest + 6, // 11: galaxy_repository.v1.GalaxyRepository.WatchDeployEvents:input_type -> galaxy_repository.v1.WatchDeployEventsRequest + 10, // 12: galaxy_repository.v1.GalaxyRepository.BrowseChildren:input_type -> galaxy_repository.v1.BrowseChildrenRequest + 1, // 13: galaxy_repository.v1.GalaxyRepository.TestConnection:output_type -> galaxy_repository.v1.TestConnectionReply + 3, // 14: galaxy_repository.v1.GalaxyRepository.GetLastDeployTime:output_type -> galaxy_repository.v1.GetLastDeployTimeReply + 5, // 15: galaxy_repository.v1.GalaxyRepository.DiscoverHierarchy:output_type -> galaxy_repository.v1.DiscoverHierarchyReply + 7, // 16: galaxy_repository.v1.GalaxyRepository.WatchDeployEvents:output_type -> galaxy_repository.v1.DeployEvent + 11, // 17: galaxy_repository.v1.GalaxyRepository.BrowseChildren:output_type -> galaxy_repository.v1.BrowseChildrenReply + 13, // [13:18] is the sub-list for method output_type + 8, // [8:13] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_galaxy_repository_proto_init() } @@ -964,13 +1246,18 @@ func file_galaxy_repository_proto_init() { (*DiscoverHierarchyRequest_RootTagName)(nil), (*DiscoverHierarchyRequest_RootContainedPath)(nil), } + file_galaxy_repository_proto_msgTypes[10].OneofWrappers = []any{ + (*BrowseChildrenRequest_ParentGobjectId)(nil), + (*BrowseChildrenRequest_ParentTagName)(nil), + (*BrowseChildrenRequest_ParentContainedPath)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_galaxy_repository_proto_rawDesc), len(file_galaxy_repository_proto_rawDesc)), NumEnums: 0, - NumMessages: 10, + NumMessages: 12, NumExtensions: 0, NumServices: 1, }, diff --git a/clients/go/internal/generated/galaxy_repository_grpc.pb.go b/clients/go/internal/generated/galaxy_repository_grpc.pb.go index b2cdcc5..a8def5b 100644 --- a/clients/go/internal/generated/galaxy_repository_grpc.pb.go +++ b/clients/go/internal/generated/galaxy_repository_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.1 +// - protoc-gen-go-grpc v1.6.2 // - protoc v7.34.1 // source: galaxy_repository.proto @@ -23,6 +23,7 @@ const ( GalaxyRepository_GetLastDeployTime_FullMethodName = "/galaxy_repository.v1.GalaxyRepository/GetLastDeployTime" GalaxyRepository_DiscoverHierarchy_FullMethodName = "/galaxy_repository.v1.GalaxyRepository/DiscoverHierarchy" GalaxyRepository_WatchDeployEvents_FullMethodName = "/galaxy_repository.v1.GalaxyRepository/WatchDeployEvents" + GalaxyRepository_BrowseChildren_FullMethodName = "/galaxy_repository.v1.GalaxyRepository/BrowseChildren" ) // GalaxyRepositoryClient is the client API for GalaxyRepository service. @@ -44,6 +45,11 @@ type GalaxyRepositoryClient interface { // increasing per server start; gaps indicate the per-subscriber buffer dropped // older events because the client was too slow. WatchDeployEvents(ctx context.Context, in *WatchDeployEventsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[DeployEvent], error) + // Returns the direct children of a parent object (or the root objects when + // `parent` is unset). Designed for OPC UA-style lazy expand: clients walk + // one level at a time instead of paging the full hierarchy. Filters mirror + // DiscoverHierarchy exactly. Backed by the same shared hierarchy cache. + BrowseChildren(ctx context.Context, in *BrowseChildrenRequest, opts ...grpc.CallOption) (*BrowseChildrenReply, error) } type galaxyRepositoryClient struct { @@ -103,6 +109,16 @@ func (c *galaxyRepositoryClient) WatchDeployEvents(ctx context.Context, in *Watc // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. type GalaxyRepository_WatchDeployEventsClient = grpc.ServerStreamingClient[DeployEvent] +func (c *galaxyRepositoryClient) BrowseChildren(ctx context.Context, in *BrowseChildrenRequest, opts ...grpc.CallOption) (*BrowseChildrenReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(BrowseChildrenReply) + err := c.cc.Invoke(ctx, GalaxyRepository_BrowseChildren_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // GalaxyRepositoryServer is the server API for GalaxyRepository service. // All implementations must embed UnimplementedGalaxyRepositoryServer // for forward compatibility. @@ -122,6 +138,11 @@ type GalaxyRepositoryServer interface { // increasing per server start; gaps indicate the per-subscriber buffer dropped // older events because the client was too slow. WatchDeployEvents(*WatchDeployEventsRequest, grpc.ServerStreamingServer[DeployEvent]) error + // Returns the direct children of a parent object (or the root objects when + // `parent` is unset). Designed for OPC UA-style lazy expand: clients walk + // one level at a time instead of paging the full hierarchy. Filters mirror + // DiscoverHierarchy exactly. Backed by the same shared hierarchy cache. + BrowseChildren(context.Context, *BrowseChildrenRequest) (*BrowseChildrenReply, error) mustEmbedUnimplementedGalaxyRepositoryServer() } @@ -144,6 +165,9 @@ func (UnimplementedGalaxyRepositoryServer) DiscoverHierarchy(context.Context, *D func (UnimplementedGalaxyRepositoryServer) WatchDeployEvents(*WatchDeployEventsRequest, grpc.ServerStreamingServer[DeployEvent]) error { return status.Error(codes.Unimplemented, "method WatchDeployEvents not implemented") } +func (UnimplementedGalaxyRepositoryServer) BrowseChildren(context.Context, *BrowseChildrenRequest) (*BrowseChildrenReply, error) { + return nil, status.Error(codes.Unimplemented, "method BrowseChildren not implemented") +} func (UnimplementedGalaxyRepositoryServer) mustEmbedUnimplementedGalaxyRepositoryServer() {} func (UnimplementedGalaxyRepositoryServer) testEmbeddedByValue() {} @@ -230,6 +254,24 @@ func _GalaxyRepository_WatchDeployEvents_Handler(srv interface{}, stream grpc.Se // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. type GalaxyRepository_WatchDeployEventsServer = grpc.ServerStreamingServer[DeployEvent] +func _GalaxyRepository_BrowseChildren_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BrowseChildrenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GalaxyRepositoryServer).BrowseChildren(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: GalaxyRepository_BrowseChildren_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GalaxyRepositoryServer).BrowseChildren(ctx, req.(*BrowseChildrenRequest)) + } + return interceptor(ctx, in, info, handler) +} + // GalaxyRepository_ServiceDesc is the grpc.ServiceDesc for GalaxyRepository service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -249,6 +291,10 @@ var GalaxyRepository_ServiceDesc = grpc.ServiceDesc{ MethodName: "DiscoverHierarchy", Handler: _GalaxyRepository_DiscoverHierarchy_Handler, }, + { + MethodName: "BrowseChildren", + Handler: _GalaxyRepository_BrowseChildren_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/clients/go/internal/generated/mxaccess_gateway.pb.go b/clients/go/internal/generated/mxaccess_gateway.pb.go index d3a05f7..d7ecd5f 100644 --- a/clients/go/internal/generated/mxaccess_gateway.pb.go +++ b/clients/go/internal/generated/mxaccess_gateway.pb.go @@ -725,9 +725,10 @@ func (SessionState) EnumDescriptor() ([]byte, []int) { return file_mxaccess_gateway_proto_rawDescGZIP(), []int{8} } -// Public request shape for QueryActiveAlarms. session_id is currently unused -// (the snapshot is session-less) but reserved so a future per-session view -// can be added without a wire break. +// Public request shape for QueryActiveAlarms. +// Clients may leave `session_id` empty; the gateway currently ignores it and +// serves the session-less central-monitor cache. A future version may use it +// to scope the snapshot to one session. type QueryActiveAlarmsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` diff --git a/clients/go/internal/generated/mxaccess_gateway_grpc.pb.go b/clients/go/internal/generated/mxaccess_gateway_grpc.pb.go index 2d412bb..16846de 100644 --- a/clients/go/internal/generated/mxaccess_gateway_grpc.pb.go +++ b/clients/go/internal/generated/mxaccess_gateway_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.1 +// - protoc-gen-go-grpc v1.6.2 // - protoc v7.34.1 // source: mxaccess_gateway.proto @@ -50,6 +50,9 @@ type MxAccessGatewayClient interface { // reconnect to seed Part 9 client state, or to reconcile alarms that may // have been missed during a transport blip. Streamed so callers can // begin processing without buffering the full set. + // `QueryActiveAlarmsRequest.alarm_filter_prefix` optionally narrows the + // snapshot to alarms whose `alarm_full_reference` starts with the given + // prefix; an empty prefix returns the full set. QueryActiveAlarms(ctx context.Context, in *QueryActiveAlarmsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ActiveAlarmSnapshot], error) } @@ -180,6 +183,9 @@ type MxAccessGatewayServer interface { // reconnect to seed Part 9 client state, or to reconcile alarms that may // have been missed during a transport blip. Streamed so callers can // begin processing without buffering the full set. + // `QueryActiveAlarmsRequest.alarm_filter_prefix` optionally narrows the + // snapshot to alarms whose `alarm_full_reference` starts with the given + // prefix; an empty prefix returns the full set. QueryActiveAlarms(*QueryActiveAlarmsRequest, grpc.ServerStreamingServer[ActiveAlarmSnapshot]) error mustEmbedUnimplementedMxAccessGatewayServer() }