diff --git a/clients/dotnet/README.md b/clients/dotnet/README.md index bad5b6e..6a2864d 100644 --- a/clients/dotnet/README.md +++ b/clients/dotnet/README.md @@ -156,6 +156,16 @@ poll. Treat the set as possibly incomplete rather than reconciling deletions from it. It is set-level degraded status, not a comment on the record's own fidelity, and is distinct from `Degraded` (the subtag fallback provider). +`StreamAlarmsAsync` also carries that completeness verdict at feed level, as an +`AlarmFeedMessage.PayloadOneofCase.SnapshotStatus` frame whose +`SnapshotStatus.Truncated` is true while the monitor's cached set derives from a +truncated fetch. One arrives at stream open (after the `ProviderStatus` frame, +before the cached `ActiveAlarm` frames) so a late joiner learns the current +verdict, then one on every verdict change — including the clearing frame sent +when the gateway's alarm monitor restarts and drops a truncated verdict. Track +it if you need set completeness on a live feed without polling +`QueryActiveAlarmsAsync`. + `MxGatewaySession.CloseAsync` is explicit and idempotent. Repeated calls return the first `CloseSessionReply` instead of sending another close request. diff --git a/clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli/MxGatewayClientCli.cs b/clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli/MxGatewayClientCli.cs index cdd6e7d..353c21a 100644 --- a/clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli/MxGatewayClientCli.cs +++ b/clients/dotnet/ZB.MOM.WW.MxGateway.Client.Cli/MxGatewayClientCli.cs @@ -1546,8 +1546,9 @@ public static class MxGatewayClientCli /// /// Renders one for the human-readable /// (non-JSON) stream-alarms output, distinguishing the payload oneof - /// arms: a snapshot active alarm, the snapshot-complete sentinel, or a live - /// transition. + /// arms: a snapshot active alarm, the snapshot-complete sentinel, a live + /// transition, the provider-mode status, or the feed-level + /// snapshot-completeness status. /// private static string FormatAlarmFeedMessage(AlarmFeedMessage feedMessage) { @@ -1559,6 +1560,10 @@ public static class MxGatewayClientCli $"snapshot-complete {feedMessage.SnapshotComplete}", AlarmFeedMessage.PayloadOneofCase.Transition => $"transition {ProtobufJsonFormatter.Format(feedMessage.Transition)}", + AlarmFeedMessage.PayloadOneofCase.ProviderStatus => + $"provider-status {ProtobufJsonFormatter.Format(feedMessage.ProviderStatus)}", + AlarmFeedMessage.PayloadOneofCase.SnapshotStatus => + $"snapshot-status {ProtobufJsonFormatter.Format(feedMessage.SnapshotStatus)}", _ => $"unknown-payload {feedMessage.PayloadCase}", }; } diff --git a/clients/go/README.md b/clients/go/README.md index 86f9f62..84ea96a 100644 --- a/clients/go/README.md +++ b/clients/go/README.md @@ -153,6 +153,15 @@ deletions from it. It is set-level degraded status, not a comment on the record's own fidelity, and is distinct from `Degraded` (the subtag fallback provider). +`StreamAlarms` also carries that completeness verdict at feed level, as a frame +whose `GetSnapshotStatus()` is non-nil and whose `GetTruncated()` is true while +the monitor's cached set derives from a truncated fetch. One arrives at stream +open (after the `GetProviderStatus()` frame, before the cached +`GetActiveAlarm()` frames) so a late joiner learns the current verdict, then one +on every verdict change — including the clearing frame sent when the gateway's +alarm monitor restarts and drops a truncated verdict. Track it if you need set +completeness on a live feed without polling `QueryActiveAlarms`. + ## Write Semantics And Common Pitfalls These are MXAccess parity behaviors that surprise new callers. The gateway diff --git a/clients/go/cmd/mxgw-go/main.go b/clients/go/cmd/mxgw-go/main.go index 95898d1..159d3a2 100644 --- a/clients/go/cmd/mxgw-go/main.go +++ b/clients/go/cmd/mxgw-go/main.go @@ -1097,7 +1097,8 @@ func runStreamAlarms(ctx context.Context, args []string, stdout, stderr io.Write // formatAlarmFeedMessage renders one AlarmFeedMessage in the CLI's plain-text // output style, distinguishing the active-alarm snapshot, snapshot-complete -// sentinel, and transition cases of the message's payload oneof. +// sentinel, transition, provider-status, and snapshot-status cases of the +// message's payload oneof. func formatAlarmFeedMessage(message *mxgateway.AlarmFeedMessage) string { switch { case message.GetActiveAlarm() != nil: @@ -1108,6 +1109,11 @@ func formatAlarmFeedMessage(message *mxgateway.AlarmFeedMessage) string { case message.GetTransition() != nil: transition := message.GetTransition() return fmt.Sprintf("transition %s kind=%s severity=%d", transition.GetAlarmFullReference(), transition.GetTransitionKind(), transition.GetSeverity()) + case message.GetProviderStatus() != nil: + status := message.GetProviderStatus() + return fmt.Sprintf("provider-status mode=%s degraded=%t reason=%q", status.GetMode(), status.GetDegraded(), status.GetReason()) + case message.GetSnapshotStatus() != nil: + return fmt.Sprintf("snapshot-status truncated=%t", message.GetSnapshotStatus().GetTruncated()) default: return "unknown" } diff --git a/clients/go/internal/generated/mxaccess_gateway.pb.go b/clients/go/internal/generated/mxaccess_gateway.pb.go index f183bb9..4ef7d3a 100644 --- a/clients/go/internal/generated/mxaccess_gateway.pb.go +++ b/clients/go/internal/generated/mxaccess_gateway.pb.go @@ -7353,6 +7353,7 @@ type AlarmFeedMessage struct { // *AlarmFeedMessage_SnapshotComplete // *AlarmFeedMessage_Transition // *AlarmFeedMessage_ProviderStatus + // *AlarmFeedMessage_SnapshotStatus Payload isAlarmFeedMessage_Payload `protobuf_oneof:"payload"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -7431,6 +7432,15 @@ func (x *AlarmFeedMessage) GetProviderStatus() *AlarmProviderStatus { return nil } +func (x *AlarmFeedMessage) GetSnapshotStatus() *AlarmSnapshotStatus { + if x != nil { + if x, ok := x.Payload.(*AlarmFeedMessage_SnapshotStatus); ok { + return x.SnapshotStatus + } + } + return nil +} + type isAlarmFeedMessage_Payload interface { isAlarmFeedMessage_Payload() } @@ -7457,6 +7467,13 @@ type AlarmFeedMessage_ProviderStatus struct { ProviderStatus *AlarmProviderStatus `protobuf:"bytes,4,opt,name=provider_status,json=providerStatus,proto3,oneof"` } +type AlarmFeedMessage_SnapshotStatus struct { + // Snapshot-completeness status. Emitted once on stream open and again on + // every change of the truncation verdict, so late joiners learn whether the + // feed's active-alarm set may be incomplete. + SnapshotStatus *AlarmSnapshotStatus `protobuf:"bytes,5,opt,name=snapshot_status,json=snapshotStatus,proto3,oneof"` +} + func (*AlarmFeedMessage_ActiveAlarm) isAlarmFeedMessage_Payload() {} func (*AlarmFeedMessage_SnapshotComplete) isAlarmFeedMessage_Payload() {} @@ -7465,6 +7482,8 @@ func (*AlarmFeedMessage_Transition) isAlarmFeedMessage_Payload() {} func (*AlarmFeedMessage_ProviderStatus) isAlarmFeedMessage_Payload() {} +func (*AlarmFeedMessage_SnapshotStatus) isAlarmFeedMessage_Payload() {} + type AlarmProviderStatus struct { state protoimpl.MessageState `protogen:"open.v1"` Mode AlarmProviderMode `protobuf:"varint,1,opt,name=mode,proto3,enum=mxaccess_gateway.v1.AlarmProviderMode" json:"mode,omitempty"` @@ -7533,6 +7552,63 @@ func (x *AlarmProviderStatus) GetSince() *timestamppb.Timestamp { return nil } +// Feed-level snapshot-completeness status. Emitted once on StreamAlarms open +// (after the initial provider_status frame, before the cached active_alarm +// frames) so late joiners learn the current verdict, and again on every change +// of the truncation verdict — when a reconcile reports a different verdict, and +// when the gateway's alarm monitor restarts and drops a truncated verdict with +// the cache generation it described (feed subscribers outlive that monitor +// session, so they are sent the clearing frame). Mirrors the per-record +// ActiveAlarmSnapshot.from_truncated_snapshot caveat at feed level so live +// consumers can reason about completeness without polling QueryActiveAlarms. +type AlarmSnapshotStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + // True while the monitor's cached active-alarm set derives from a truncated + // (capped) worker fetch — the set may be missing alarms. Distinct from + // provider degradation (AlarmProviderStatus.degraded), which describes the + // fidelity of the records rather than the completeness of the set. + Truncated bool `protobuf:"varint,1,opt,name=truncated,proto3" json:"truncated,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlarmSnapshotStatus) Reset() { + *x = AlarmSnapshotStatus{} + mi := &file_mxaccess_gateway_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlarmSnapshotStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlarmSnapshotStatus) ProtoMessage() {} + +func (x *AlarmSnapshotStatus) ProtoReflect() protoreflect.Message { + mi := &file_mxaccess_gateway_proto_msgTypes[87] + 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 AlarmSnapshotStatus.ProtoReflect.Descriptor instead. +func (*AlarmSnapshotStatus) Descriptor() ([]byte, []int) { + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{87} +} + +func (x *AlarmSnapshotStatus) GetTruncated() bool { + if x != nil { + return x.Truncated + } + return false +} + type MxStatusProxy struct { state protoimpl.MessageState `protogen:"open.v1"` // Mirrors the `success` member of the MXAccess MXSTATUS_PROXY struct @@ -7557,7 +7633,7 @@ type MxStatusProxy struct { func (x *MxStatusProxy) Reset() { *x = MxStatusProxy{} - mi := &file_mxaccess_gateway_proto_msgTypes[87] + mi := &file_mxaccess_gateway_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7569,7 +7645,7 @@ func (x *MxStatusProxy) String() string { func (*MxStatusProxy) ProtoMessage() {} func (x *MxStatusProxy) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[87] + mi := &file_mxaccess_gateway_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7582,7 +7658,7 @@ func (x *MxStatusProxy) ProtoReflect() protoreflect.Message { // Deprecated: Use MxStatusProxy.ProtoReflect.Descriptor instead. func (*MxStatusProxy) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{87} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{88} } func (x *MxStatusProxy) GetSuccess() int32 { @@ -7660,7 +7736,7 @@ type MxValue struct { func (x *MxValue) Reset() { *x = MxValue{} - mi := &file_mxaccess_gateway_proto_msgTypes[88] + mi := &file_mxaccess_gateway_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7672,7 +7748,7 @@ func (x *MxValue) String() string { func (*MxValue) ProtoMessage() {} func (x *MxValue) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[88] + mi := &file_mxaccess_gateway_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7685,7 +7761,7 @@ func (x *MxValue) ProtoReflect() protoreflect.Message { // Deprecated: Use MxValue.ProtoReflect.Descriptor instead. func (*MxValue) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{88} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{89} } func (x *MxValue) GetDataType() MxDataType { @@ -7908,7 +7984,7 @@ type MxArray struct { func (x *MxArray) Reset() { *x = MxArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[89] + mi := &file_mxaccess_gateway_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7920,7 +7996,7 @@ func (x *MxArray) String() string { func (*MxArray) ProtoMessage() {} func (x *MxArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[89] + mi := &file_mxaccess_gateway_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7933,7 +8009,7 @@ func (x *MxArray) ProtoReflect() protoreflect.Message { // Deprecated: Use MxArray.ProtoReflect.Descriptor instead. func (*MxArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{89} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{90} } func (x *MxArray) GetElementDataType() MxDataType { @@ -8117,7 +8193,7 @@ type MxSparseArray struct { func (x *MxSparseArray) Reset() { *x = MxSparseArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[90] + mi := &file_mxaccess_gateway_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8129,7 +8205,7 @@ func (x *MxSparseArray) String() string { func (*MxSparseArray) ProtoMessage() {} func (x *MxSparseArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[90] + mi := &file_mxaccess_gateway_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8142,7 +8218,7 @@ func (x *MxSparseArray) ProtoReflect() protoreflect.Message { // Deprecated: Use MxSparseArray.ProtoReflect.Descriptor instead. func (*MxSparseArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{90} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{91} } func (x *MxSparseArray) GetElementDataType() MxDataType { @@ -8176,7 +8252,7 @@ type MxSparseElement struct { func (x *MxSparseElement) Reset() { *x = MxSparseElement{} - mi := &file_mxaccess_gateway_proto_msgTypes[91] + mi := &file_mxaccess_gateway_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8188,7 +8264,7 @@ func (x *MxSparseElement) String() string { func (*MxSparseElement) ProtoMessage() {} func (x *MxSparseElement) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[91] + mi := &file_mxaccess_gateway_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8201,7 +8277,7 @@ func (x *MxSparseElement) ProtoReflect() protoreflect.Message { // Deprecated: Use MxSparseElement.ProtoReflect.Descriptor instead. func (*MxSparseElement) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{91} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{92} } func (x *MxSparseElement) GetIndex() uint32 { @@ -8227,7 +8303,7 @@ type BoolArray struct { func (x *BoolArray) Reset() { *x = BoolArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[92] + mi := &file_mxaccess_gateway_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8239,7 +8315,7 @@ func (x *BoolArray) String() string { func (*BoolArray) ProtoMessage() {} func (x *BoolArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[92] + mi := &file_mxaccess_gateway_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8252,7 +8328,7 @@ func (x *BoolArray) ProtoReflect() protoreflect.Message { // Deprecated: Use BoolArray.ProtoReflect.Descriptor instead. func (*BoolArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{92} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{93} } func (x *BoolArray) GetValues() []bool { @@ -8271,7 +8347,7 @@ type Int32Array struct { func (x *Int32Array) Reset() { *x = Int32Array{} - mi := &file_mxaccess_gateway_proto_msgTypes[93] + mi := &file_mxaccess_gateway_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8283,7 +8359,7 @@ func (x *Int32Array) String() string { func (*Int32Array) ProtoMessage() {} func (x *Int32Array) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[93] + mi := &file_mxaccess_gateway_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8296,7 +8372,7 @@ func (x *Int32Array) ProtoReflect() protoreflect.Message { // Deprecated: Use Int32Array.ProtoReflect.Descriptor instead. func (*Int32Array) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{93} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{94} } func (x *Int32Array) GetValues() []int32 { @@ -8315,7 +8391,7 @@ type Int64Array struct { func (x *Int64Array) Reset() { *x = Int64Array{} - mi := &file_mxaccess_gateway_proto_msgTypes[94] + mi := &file_mxaccess_gateway_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8327,7 +8403,7 @@ func (x *Int64Array) String() string { func (*Int64Array) ProtoMessage() {} func (x *Int64Array) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[94] + mi := &file_mxaccess_gateway_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8340,7 +8416,7 @@ func (x *Int64Array) ProtoReflect() protoreflect.Message { // Deprecated: Use Int64Array.ProtoReflect.Descriptor instead. func (*Int64Array) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{94} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{95} } func (x *Int64Array) GetValues() []int64 { @@ -8359,7 +8435,7 @@ type FloatArray struct { func (x *FloatArray) Reset() { *x = FloatArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[95] + mi := &file_mxaccess_gateway_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8371,7 +8447,7 @@ func (x *FloatArray) String() string { func (*FloatArray) ProtoMessage() {} func (x *FloatArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[95] + mi := &file_mxaccess_gateway_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8384,7 +8460,7 @@ func (x *FloatArray) ProtoReflect() protoreflect.Message { // Deprecated: Use FloatArray.ProtoReflect.Descriptor instead. func (*FloatArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{95} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{96} } func (x *FloatArray) GetValues() []float32 { @@ -8403,7 +8479,7 @@ type DoubleArray struct { func (x *DoubleArray) Reset() { *x = DoubleArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[96] + mi := &file_mxaccess_gateway_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8415,7 +8491,7 @@ func (x *DoubleArray) String() string { func (*DoubleArray) ProtoMessage() {} func (x *DoubleArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[96] + mi := &file_mxaccess_gateway_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8428,7 +8504,7 @@ func (x *DoubleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DoubleArray.ProtoReflect.Descriptor instead. func (*DoubleArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{96} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{97} } func (x *DoubleArray) GetValues() []float64 { @@ -8447,7 +8523,7 @@ type StringArray struct { func (x *StringArray) Reset() { *x = StringArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[97] + mi := &file_mxaccess_gateway_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8459,7 +8535,7 @@ func (x *StringArray) String() string { func (*StringArray) ProtoMessage() {} func (x *StringArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[97] + mi := &file_mxaccess_gateway_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8472,7 +8548,7 @@ func (x *StringArray) ProtoReflect() protoreflect.Message { // Deprecated: Use StringArray.ProtoReflect.Descriptor instead. func (*StringArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{97} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{98} } func (x *StringArray) GetValues() []string { @@ -8491,7 +8567,7 @@ type TimestampArray struct { func (x *TimestampArray) Reset() { *x = TimestampArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[98] + mi := &file_mxaccess_gateway_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8503,7 +8579,7 @@ func (x *TimestampArray) String() string { func (*TimestampArray) ProtoMessage() {} func (x *TimestampArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[98] + mi := &file_mxaccess_gateway_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8516,7 +8592,7 @@ func (x *TimestampArray) ProtoReflect() protoreflect.Message { // Deprecated: Use TimestampArray.ProtoReflect.Descriptor instead. func (*TimestampArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{98} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{99} } func (x *TimestampArray) GetValues() []*timestamppb.Timestamp { @@ -8535,7 +8611,7 @@ type RawArray struct { func (x *RawArray) Reset() { *x = RawArray{} - mi := &file_mxaccess_gateway_proto_msgTypes[99] + mi := &file_mxaccess_gateway_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8547,7 +8623,7 @@ func (x *RawArray) String() string { func (*RawArray) ProtoMessage() {} func (x *RawArray) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[99] + mi := &file_mxaccess_gateway_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8560,7 +8636,7 @@ func (x *RawArray) ProtoReflect() protoreflect.Message { // Deprecated: Use RawArray.ProtoReflect.Descriptor instead. func (*RawArray) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{99} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{100} } func (x *RawArray) GetValues() [][]byte { @@ -8580,7 +8656,7 @@ type ProtocolStatus struct { func (x *ProtocolStatus) Reset() { *x = ProtocolStatus{} - mi := &file_mxaccess_gateway_proto_msgTypes[100] + mi := &file_mxaccess_gateway_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8592,7 +8668,7 @@ func (x *ProtocolStatus) String() string { func (*ProtocolStatus) ProtoMessage() {} func (x *ProtocolStatus) ProtoReflect() protoreflect.Message { - mi := &file_mxaccess_gateway_proto_msgTypes[100] + mi := &file_mxaccess_gateway_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8605,7 +8681,7 @@ func (x *ProtocolStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolStatus.ProtoReflect.Descriptor instead. func (*ProtocolStatus) Descriptor() ([]byte, []int) { - return file_mxaccess_gateway_proto_rawDescGZIP(), []int{100} + return file_mxaccess_gateway_proto_rawDescGZIP(), []int{101} } func (x *ProtocolStatus) GetCode() ProtocolStatusCode { @@ -9115,20 +9191,23 @@ const file_mxaccess_gateway_proto_rawDesc = "" + "session_id\"y\n" + "\x13StreamAlarmsRequest\x122\n" + "\x15client_correlation_id\x18\x01 \x01(\tR\x13clientCorrelationId\x12.\n" + - "\x13alarm_filter_prefix\x18\x02 \x01(\tR\x11alarmFilterPrefix\"\xbf\x02\n" + + "\x13alarm_filter_prefix\x18\x02 \x01(\tR\x11alarmFilterPrefix\"\x94\x03\n" + "\x10AlarmFeedMessage\x12M\n" + "\factive_alarm\x18\x01 \x01(\v2(.mxaccess_gateway.v1.ActiveAlarmSnapshotH\x00R\vactiveAlarm\x12-\n" + "\x11snapshot_complete\x18\x02 \x01(\bH\x00R\x10snapshotComplete\x12M\n" + "\n" + "transition\x18\x03 \x01(\v2+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00R\n" + "transition\x12S\n" + - "\x0fprovider_status\x18\x04 \x01(\v2(.mxaccess_gateway.v1.AlarmProviderStatusH\x00R\x0eproviderStatusB\t\n" + + "\x0fprovider_status\x18\x04 \x01(\v2(.mxaccess_gateway.v1.AlarmProviderStatusH\x00R\x0eproviderStatus\x12S\n" + + "\x0fsnapshot_status\x18\x05 \x01(\v2(.mxaccess_gateway.v1.AlarmSnapshotStatusH\x00R\x0esnapshotStatusB\t\n" + "\apayload\"\xb7\x01\n" + "\x13AlarmProviderStatus\x12:\n" + "\x04mode\x18\x01 \x01(\x0e2&.mxaccess_gateway.v1.AlarmProviderModeR\x04mode\x12\x1a\n" + "\bdegraded\x18\x02 \x01(\bR\bdegraded\x12\x16\n" + "\x06reason\x18\x03 \x01(\tR\x06reason\x120\n" + - "\x05since\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\x05since\"\xbe\x02\n" + + "\x05since\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\x05since\"3\n" + + "\x13AlarmSnapshotStatus\x12\x1c\n" + + "\ttruncated\x18\x01 \x01(\bR\ttruncated\"\xbe\x02\n" + "\rMxStatusProxy\x12\x18\n" + "\asuccess\x18\x01 \x01(\x05R\asuccess\x12A\n" + "\bcategory\x18\x02 \x01(\x0e2%.mxaccess_gateway.v1.MxStatusCategoryR\bcategory\x12D\n" + @@ -9364,7 +9443,7 @@ func file_mxaccess_gateway_proto_rawDescGZIP() []byte { } var file_mxaccess_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_mxaccess_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 101) +var file_mxaccess_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 102) var file_mxaccess_gateway_proto_goTypes = []any{ (MxCommandKind)(0), // 0: mxaccess_gateway.v1.MxCommandKind (AlarmProviderMode)(0), // 1: mxaccess_gateway.v1.AlarmProviderMode @@ -9463,29 +9542,30 @@ var file_mxaccess_gateway_proto_goTypes = []any{ (*StreamAlarmsRequest)(nil), // 94: mxaccess_gateway.v1.StreamAlarmsRequest (*AlarmFeedMessage)(nil), // 95: mxaccess_gateway.v1.AlarmFeedMessage (*AlarmProviderStatus)(nil), // 96: mxaccess_gateway.v1.AlarmProviderStatus - (*MxStatusProxy)(nil), // 97: mxaccess_gateway.v1.MxStatusProxy - (*MxValue)(nil), // 98: mxaccess_gateway.v1.MxValue - (*MxArray)(nil), // 99: mxaccess_gateway.v1.MxArray - (*MxSparseArray)(nil), // 100: mxaccess_gateway.v1.MxSparseArray - (*MxSparseElement)(nil), // 101: mxaccess_gateway.v1.MxSparseElement - (*BoolArray)(nil), // 102: mxaccess_gateway.v1.BoolArray - (*Int32Array)(nil), // 103: mxaccess_gateway.v1.Int32Array - (*Int64Array)(nil), // 104: mxaccess_gateway.v1.Int64Array - (*FloatArray)(nil), // 105: mxaccess_gateway.v1.FloatArray - (*DoubleArray)(nil), // 106: mxaccess_gateway.v1.DoubleArray - (*StringArray)(nil), // 107: mxaccess_gateway.v1.StringArray - (*TimestampArray)(nil), // 108: mxaccess_gateway.v1.TimestampArray - (*RawArray)(nil), // 109: mxaccess_gateway.v1.RawArray - (*ProtocolStatus)(nil), // 110: mxaccess_gateway.v1.ProtocolStatus - (*durationpb.Duration)(nil), // 111: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 112: google.protobuf.Timestamp + (*AlarmSnapshotStatus)(nil), // 97: mxaccess_gateway.v1.AlarmSnapshotStatus + (*MxStatusProxy)(nil), // 98: mxaccess_gateway.v1.MxStatusProxy + (*MxValue)(nil), // 99: mxaccess_gateway.v1.MxValue + (*MxArray)(nil), // 100: mxaccess_gateway.v1.MxArray + (*MxSparseArray)(nil), // 101: mxaccess_gateway.v1.MxSparseArray + (*MxSparseElement)(nil), // 102: mxaccess_gateway.v1.MxSparseElement + (*BoolArray)(nil), // 103: mxaccess_gateway.v1.BoolArray + (*Int32Array)(nil), // 104: mxaccess_gateway.v1.Int32Array + (*Int64Array)(nil), // 105: mxaccess_gateway.v1.Int64Array + (*FloatArray)(nil), // 106: mxaccess_gateway.v1.FloatArray + (*DoubleArray)(nil), // 107: mxaccess_gateway.v1.DoubleArray + (*StringArray)(nil), // 108: mxaccess_gateway.v1.StringArray + (*TimestampArray)(nil), // 109: mxaccess_gateway.v1.TimestampArray + (*RawArray)(nil), // 110: mxaccess_gateway.v1.RawArray + (*ProtocolStatus)(nil), // 111: mxaccess_gateway.v1.ProtocolStatus + (*durationpb.Duration)(nil), // 112: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 113: google.protobuf.Timestamp } var file_mxaccess_gateway_proto_depIdxs = []int32{ - 111, // 0: mxaccess_gateway.v1.OpenSessionRequest.command_timeout:type_name -> google.protobuf.Duration - 111, // 1: mxaccess_gateway.v1.OpenSessionReply.default_command_timeout:type_name -> google.protobuf.Duration - 110, // 2: mxaccess_gateway.v1.OpenSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 112, // 0: mxaccess_gateway.v1.OpenSessionRequest.command_timeout:type_name -> google.protobuf.Duration + 112, // 1: mxaccess_gateway.v1.OpenSessionReply.default_command_timeout:type_name -> google.protobuf.Duration + 111, // 2: mxaccess_gateway.v1.OpenSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus 9, // 3: mxaccess_gateway.v1.CloseSessionReply.final_state:type_name -> mxaccess_gateway.v1.SessionState - 110, // 4: mxaccess_gateway.v1.CloseSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 111, // 4: mxaccess_gateway.v1.CloseSessionReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus 17, // 5: mxaccess_gateway.v1.MxCommandRequest.command:type_name -> mxaccess_gateway.v1.MxCommand 0, // 6: mxaccess_gateway.v1.MxCommand.kind:type_name -> mxaccess_gateway.v1.MxCommandKind 18, // 7: mxaccess_gateway.v1.MxCommand.register:type_name -> mxaccess_gateway.v1.RegisterCommand @@ -9527,30 +9607,30 @@ var file_mxaccess_gateway_proto_depIdxs = []int32{ 60, // 43: mxaccess_gateway.v1.MxCommand.get_worker_info:type_name -> mxaccess_gateway.v1.GetWorkerInfoCommand 61, // 44: mxaccess_gateway.v1.MxCommand.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsCommand 62, // 45: mxaccess_gateway.v1.MxCommand.shutdown_worker:type_name -> mxaccess_gateway.v1.ShutdownWorkerCommand - 98, // 46: mxaccess_gateway.v1.WriteCommand.value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 47: mxaccess_gateway.v1.Write2Command.value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 48: mxaccess_gateway.v1.Write2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 49: mxaccess_gateway.v1.WriteSecuredCommand.value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 50: mxaccess_gateway.v1.WriteSecured2Command.value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 51: mxaccess_gateway.v1.WriteSecured2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 46: mxaccess_gateway.v1.WriteCommand.value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 47: mxaccess_gateway.v1.Write2Command.value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 48: mxaccess_gateway.v1.Write2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 49: mxaccess_gateway.v1.WriteSecuredCommand.value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 50: mxaccess_gateway.v1.WriteSecured2Command.value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 51: mxaccess_gateway.v1.WriteSecured2Command.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue 1, // 52: mxaccess_gateway.v1.SubscribeAlarmsCommand.forced_mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode 43, // 53: mxaccess_gateway.v1.SubscribeAlarmsCommand.watch_list:type_name -> mxaccess_gateway.v1.AlarmSubtagTarget 44, // 54: mxaccess_gateway.v1.SubscribeAlarmsCommand.failover:type_name -> mxaccess_gateway.v1.AlarmFailoverConfig 50, // 55: mxaccess_gateway.v1.WriteBulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteBulkEntry - 98, // 56: mxaccess_gateway.v1.WriteBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 56: mxaccess_gateway.v1.WriteBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue 52, // 57: mxaccess_gateway.v1.Write2BulkCommand.entries:type_name -> mxaccess_gateway.v1.Write2BulkEntry - 98, // 58: mxaccess_gateway.v1.Write2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 59: mxaccess_gateway.v1.Write2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 58: mxaccess_gateway.v1.Write2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 59: mxaccess_gateway.v1.Write2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue 54, // 60: mxaccess_gateway.v1.WriteSecuredBulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteSecuredBulkEntry - 98, // 61: mxaccess_gateway.v1.WriteSecuredBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 61: mxaccess_gateway.v1.WriteSecuredBulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue 56, // 62: mxaccess_gateway.v1.WriteSecured2BulkCommand.entries:type_name -> mxaccess_gateway.v1.WriteSecured2BulkEntry - 98, // 63: mxaccess_gateway.v1.WriteSecured2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 64: mxaccess_gateway.v1.WriteSecured2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue - 111, // 65: mxaccess_gateway.v1.ShutdownWorkerCommand.grace_period:type_name -> google.protobuf.Duration + 99, // 63: mxaccess_gateway.v1.WriteSecured2BulkEntry.value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 64: mxaccess_gateway.v1.WriteSecured2BulkEntry.timestamp_value:type_name -> mxaccess_gateway.v1.MxValue + 112, // 65: mxaccess_gateway.v1.ShutdownWorkerCommand.grace_period:type_name -> google.protobuf.Duration 0, // 66: mxaccess_gateway.v1.MxCommandReply.kind:type_name -> mxaccess_gateway.v1.MxCommandKind - 110, // 67: mxaccess_gateway.v1.MxCommandReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus - 98, // 68: mxaccess_gateway.v1.MxCommandReply.return_value:type_name -> mxaccess_gateway.v1.MxValue - 97, // 69: mxaccess_gateway.v1.MxCommandReply.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 111, // 67: mxaccess_gateway.v1.MxCommandReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 99, // 68: mxaccess_gateway.v1.MxCommandReply.return_value:type_name -> mxaccess_gateway.v1.MxValue + 98, // 69: mxaccess_gateway.v1.MxCommandReply.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy 64, // 70: mxaccess_gateway.v1.MxCommandReply.register:type_name -> mxaccess_gateway.v1.RegisterReply 65, // 71: mxaccess_gateway.v1.MxCommandReply.add_item:type_name -> mxaccess_gateway.v1.AddItemReply 66, // 72: mxaccess_gateway.v1.MxCommandReply.add_item2:type_name -> mxaccess_gateway.v1.AddItem2Reply @@ -9575,24 +9655,24 @@ var file_mxaccess_gateway_proto_depIdxs = []int32{ 78, // 91: mxaccess_gateway.v1.MxCommandReply.session_state:type_name -> mxaccess_gateway.v1.SessionStateReply 79, // 92: mxaccess_gateway.v1.MxCommandReply.worker_info:type_name -> mxaccess_gateway.v1.WorkerInfoReply 80, // 93: mxaccess_gateway.v1.MxCommandReply.drain_events:type_name -> mxaccess_gateway.v1.DrainEventsReply - 97, // 94: mxaccess_gateway.v1.SuspendReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy - 97, // 95: mxaccess_gateway.v1.ActivateReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 98, // 94: mxaccess_gateway.v1.SuspendReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 98, // 95: mxaccess_gateway.v1.ActivateReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy 72, // 96: mxaccess_gateway.v1.BulkSubscribeReply.results:type_name -> mxaccess_gateway.v1.SubscribeResult - 97, // 97: mxaccess_gateway.v1.BulkWriteResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 98, // 97: mxaccess_gateway.v1.BulkWriteResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy 74, // 98: mxaccess_gateway.v1.BulkWriteReply.results:type_name -> mxaccess_gateway.v1.BulkWriteResult - 98, // 99: mxaccess_gateway.v1.BulkReadResult.value:type_name -> mxaccess_gateway.v1.MxValue - 112, // 100: mxaccess_gateway.v1.BulkReadResult.source_timestamp:type_name -> google.protobuf.Timestamp - 97, // 101: mxaccess_gateway.v1.BulkReadResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 99, // 99: mxaccess_gateway.v1.BulkReadResult.value:type_name -> mxaccess_gateway.v1.MxValue + 113, // 100: mxaccess_gateway.v1.BulkReadResult.source_timestamp:type_name -> google.protobuf.Timestamp + 98, // 101: mxaccess_gateway.v1.BulkReadResult.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy 76, // 102: mxaccess_gateway.v1.BulkReadReply.results:type_name -> mxaccess_gateway.v1.BulkReadResult 9, // 103: mxaccess_gateway.v1.SessionStateReply.state:type_name -> mxaccess_gateway.v1.SessionState 83, // 104: mxaccess_gateway.v1.DrainEventsReply.events:type_name -> mxaccess_gateway.v1.MxEvent 91, // 105: mxaccess_gateway.v1.QueryActiveAlarmsReplyPayload.snapshots:type_name -> mxaccess_gateway.v1.ActiveAlarmSnapshot 2, // 106: mxaccess_gateway.v1.MxEvent.family:type_name -> mxaccess_gateway.v1.MxEventFamily - 98, // 107: mxaccess_gateway.v1.MxEvent.value:type_name -> mxaccess_gateway.v1.MxValue - 112, // 108: mxaccess_gateway.v1.MxEvent.source_timestamp:type_name -> google.protobuf.Timestamp - 97, // 109: mxaccess_gateway.v1.MxEvent.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy - 112, // 110: mxaccess_gateway.v1.MxEvent.worker_timestamp:type_name -> google.protobuf.Timestamp - 112, // 111: mxaccess_gateway.v1.MxEvent.gateway_receive_timestamp:type_name -> google.protobuf.Timestamp + 99, // 107: mxaccess_gateway.v1.MxEvent.value:type_name -> mxaccess_gateway.v1.MxValue + 113, // 108: mxaccess_gateway.v1.MxEvent.source_timestamp:type_name -> google.protobuf.Timestamp + 98, // 109: mxaccess_gateway.v1.MxEvent.statuses:type_name -> mxaccess_gateway.v1.MxStatusProxy + 113, // 110: mxaccess_gateway.v1.MxEvent.worker_timestamp:type_name -> google.protobuf.Timestamp + 113, // 111: mxaccess_gateway.v1.MxEvent.gateway_receive_timestamp:type_name -> google.protobuf.Timestamp 84, // 112: mxaccess_gateway.v1.MxEvent.replay_gap:type_name -> mxaccess_gateway.v1.ReplayGap 85, // 113: mxaccess_gateway.v1.MxEvent.on_data_change:type_name -> mxaccess_gateway.v1.OnDataChangeEvent 86, // 114: mxaccess_gateway.v1.MxEvent.on_write_complete:type_name -> mxaccess_gateway.v1.OnWriteCompleteEvent @@ -9601,68 +9681,69 @@ var file_mxaccess_gateway_proto_depIdxs = []int32{ 89, // 117: mxaccess_gateway.v1.MxEvent.on_alarm_transition:type_name -> mxaccess_gateway.v1.OnAlarmTransitionEvent 90, // 118: mxaccess_gateway.v1.MxEvent.on_alarm_provider_mode_changed:type_name -> mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent 7, // 119: mxaccess_gateway.v1.OnBufferedDataChangeEvent.data_type:type_name -> mxaccess_gateway.v1.MxDataType - 99, // 120: mxaccess_gateway.v1.OnBufferedDataChangeEvent.quality_values:type_name -> mxaccess_gateway.v1.MxArray - 99, // 121: mxaccess_gateway.v1.OnBufferedDataChangeEvent.timestamp_values:type_name -> mxaccess_gateway.v1.MxArray + 100, // 120: mxaccess_gateway.v1.OnBufferedDataChangeEvent.quality_values:type_name -> mxaccess_gateway.v1.MxArray + 100, // 121: mxaccess_gateway.v1.OnBufferedDataChangeEvent.timestamp_values:type_name -> mxaccess_gateway.v1.MxArray 3, // 122: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_kind:type_name -> mxaccess_gateway.v1.AlarmTransitionKind - 112, // 123: mxaccess_gateway.v1.OnAlarmTransitionEvent.original_raise_timestamp:type_name -> google.protobuf.Timestamp - 112, // 124: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_timestamp:type_name -> google.protobuf.Timestamp - 98, // 125: mxaccess_gateway.v1.OnAlarmTransitionEvent.current_value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 126: mxaccess_gateway.v1.OnAlarmTransitionEvent.limit_value:type_name -> mxaccess_gateway.v1.MxValue + 113, // 123: mxaccess_gateway.v1.OnAlarmTransitionEvent.original_raise_timestamp:type_name -> google.protobuf.Timestamp + 113, // 124: mxaccess_gateway.v1.OnAlarmTransitionEvent.transition_timestamp:type_name -> google.protobuf.Timestamp + 99, // 125: mxaccess_gateway.v1.OnAlarmTransitionEvent.current_value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 126: mxaccess_gateway.v1.OnAlarmTransitionEvent.limit_value:type_name -> mxaccess_gateway.v1.MxValue 1, // 127: mxaccess_gateway.v1.OnAlarmTransitionEvent.source_provider:type_name -> mxaccess_gateway.v1.AlarmProviderMode 1, // 128: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent.mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode - 112, // 129: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent.at:type_name -> google.protobuf.Timestamp - 112, // 130: mxaccess_gateway.v1.ActiveAlarmSnapshot.original_raise_timestamp:type_name -> google.protobuf.Timestamp + 113, // 129: mxaccess_gateway.v1.OnAlarmProviderModeChangedEvent.at:type_name -> google.protobuf.Timestamp + 113, // 130: mxaccess_gateway.v1.ActiveAlarmSnapshot.original_raise_timestamp:type_name -> google.protobuf.Timestamp 4, // 131: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_state:type_name -> mxaccess_gateway.v1.AlarmConditionState - 112, // 132: mxaccess_gateway.v1.ActiveAlarmSnapshot.last_transition_timestamp:type_name -> google.protobuf.Timestamp - 98, // 133: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_value:type_name -> mxaccess_gateway.v1.MxValue - 98, // 134: mxaccess_gateway.v1.ActiveAlarmSnapshot.limit_value:type_name -> mxaccess_gateway.v1.MxValue + 113, // 132: mxaccess_gateway.v1.ActiveAlarmSnapshot.last_transition_timestamp:type_name -> google.protobuf.Timestamp + 99, // 133: mxaccess_gateway.v1.ActiveAlarmSnapshot.current_value:type_name -> mxaccess_gateway.v1.MxValue + 99, // 134: mxaccess_gateway.v1.ActiveAlarmSnapshot.limit_value:type_name -> mxaccess_gateway.v1.MxValue 1, // 135: mxaccess_gateway.v1.ActiveAlarmSnapshot.source_provider:type_name -> mxaccess_gateway.v1.AlarmProviderMode - 110, // 136: mxaccess_gateway.v1.AcknowledgeAlarmReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus - 97, // 137: mxaccess_gateway.v1.AcknowledgeAlarmReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy + 111, // 136: mxaccess_gateway.v1.AcknowledgeAlarmReply.protocol_status:type_name -> mxaccess_gateway.v1.ProtocolStatus + 98, // 137: mxaccess_gateway.v1.AcknowledgeAlarmReply.status:type_name -> mxaccess_gateway.v1.MxStatusProxy 91, // 138: mxaccess_gateway.v1.AlarmFeedMessage.active_alarm:type_name -> mxaccess_gateway.v1.ActiveAlarmSnapshot 89, // 139: mxaccess_gateway.v1.AlarmFeedMessage.transition:type_name -> mxaccess_gateway.v1.OnAlarmTransitionEvent 96, // 140: mxaccess_gateway.v1.AlarmFeedMessage.provider_status:type_name -> mxaccess_gateway.v1.AlarmProviderStatus - 1, // 141: mxaccess_gateway.v1.AlarmProviderStatus.mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode - 112, // 142: mxaccess_gateway.v1.AlarmProviderStatus.since:type_name -> google.protobuf.Timestamp - 5, // 143: mxaccess_gateway.v1.MxStatusProxy.category:type_name -> mxaccess_gateway.v1.MxStatusCategory - 6, // 144: mxaccess_gateway.v1.MxStatusProxy.detected_by:type_name -> mxaccess_gateway.v1.MxStatusSource - 7, // 145: mxaccess_gateway.v1.MxValue.data_type:type_name -> mxaccess_gateway.v1.MxDataType - 112, // 146: mxaccess_gateway.v1.MxValue.timestamp_value:type_name -> google.protobuf.Timestamp - 99, // 147: mxaccess_gateway.v1.MxValue.array_value:type_name -> mxaccess_gateway.v1.MxArray - 100, // 148: mxaccess_gateway.v1.MxValue.sparse_array_value:type_name -> mxaccess_gateway.v1.MxSparseArray - 7, // 149: mxaccess_gateway.v1.MxArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType - 102, // 150: mxaccess_gateway.v1.MxArray.bool_values:type_name -> mxaccess_gateway.v1.BoolArray - 103, // 151: mxaccess_gateway.v1.MxArray.int32_values:type_name -> mxaccess_gateway.v1.Int32Array - 104, // 152: mxaccess_gateway.v1.MxArray.int64_values:type_name -> mxaccess_gateway.v1.Int64Array - 105, // 153: mxaccess_gateway.v1.MxArray.float_values:type_name -> mxaccess_gateway.v1.FloatArray - 106, // 154: mxaccess_gateway.v1.MxArray.double_values:type_name -> mxaccess_gateway.v1.DoubleArray - 107, // 155: mxaccess_gateway.v1.MxArray.string_values:type_name -> mxaccess_gateway.v1.StringArray - 108, // 156: mxaccess_gateway.v1.MxArray.timestamp_values:type_name -> mxaccess_gateway.v1.TimestampArray - 109, // 157: mxaccess_gateway.v1.MxArray.raw_values:type_name -> mxaccess_gateway.v1.RawArray - 7, // 158: mxaccess_gateway.v1.MxSparseArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType - 101, // 159: mxaccess_gateway.v1.MxSparseArray.elements:type_name -> mxaccess_gateway.v1.MxSparseElement - 98, // 160: mxaccess_gateway.v1.MxSparseElement.value:type_name -> mxaccess_gateway.v1.MxValue - 112, // 161: mxaccess_gateway.v1.TimestampArray.values:type_name -> google.protobuf.Timestamp - 8, // 162: mxaccess_gateway.v1.ProtocolStatus.code:type_name -> mxaccess_gateway.v1.ProtocolStatusCode - 11, // 163: mxaccess_gateway.v1.MxAccessGateway.OpenSession:input_type -> mxaccess_gateway.v1.OpenSessionRequest - 13, // 164: mxaccess_gateway.v1.MxAccessGateway.CloseSession:input_type -> mxaccess_gateway.v1.CloseSessionRequest - 16, // 165: mxaccess_gateway.v1.MxAccessGateway.Invoke:input_type -> mxaccess_gateway.v1.MxCommandRequest - 15, // 166: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:input_type -> mxaccess_gateway.v1.StreamEventsRequest - 92, // 167: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:input_type -> mxaccess_gateway.v1.AcknowledgeAlarmRequest - 94, // 168: mxaccess_gateway.v1.MxAccessGateway.StreamAlarms:input_type -> mxaccess_gateway.v1.StreamAlarmsRequest - 10, // 169: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:input_type -> mxaccess_gateway.v1.QueryActiveAlarmsRequest - 12, // 170: mxaccess_gateway.v1.MxAccessGateway.OpenSession:output_type -> mxaccess_gateway.v1.OpenSessionReply - 14, // 171: mxaccess_gateway.v1.MxAccessGateway.CloseSession:output_type -> mxaccess_gateway.v1.CloseSessionReply - 63, // 172: mxaccess_gateway.v1.MxAccessGateway.Invoke:output_type -> mxaccess_gateway.v1.MxCommandReply - 83, // 173: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:output_type -> mxaccess_gateway.v1.MxEvent - 93, // 174: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:output_type -> mxaccess_gateway.v1.AcknowledgeAlarmReply - 95, // 175: mxaccess_gateway.v1.MxAccessGateway.StreamAlarms:output_type -> mxaccess_gateway.v1.AlarmFeedMessage - 91, // 176: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:output_type -> mxaccess_gateway.v1.ActiveAlarmSnapshot - 170, // [170:177] is the sub-list for method output_type - 163, // [163:170] is the sub-list for method input_type - 163, // [163:163] is the sub-list for extension type_name - 163, // [163:163] is the sub-list for extension extendee - 0, // [0:163] is the sub-list for field type_name + 97, // 141: mxaccess_gateway.v1.AlarmFeedMessage.snapshot_status:type_name -> mxaccess_gateway.v1.AlarmSnapshotStatus + 1, // 142: mxaccess_gateway.v1.AlarmProviderStatus.mode:type_name -> mxaccess_gateway.v1.AlarmProviderMode + 113, // 143: mxaccess_gateway.v1.AlarmProviderStatus.since:type_name -> google.protobuf.Timestamp + 5, // 144: mxaccess_gateway.v1.MxStatusProxy.category:type_name -> mxaccess_gateway.v1.MxStatusCategory + 6, // 145: mxaccess_gateway.v1.MxStatusProxy.detected_by:type_name -> mxaccess_gateway.v1.MxStatusSource + 7, // 146: mxaccess_gateway.v1.MxValue.data_type:type_name -> mxaccess_gateway.v1.MxDataType + 113, // 147: mxaccess_gateway.v1.MxValue.timestamp_value:type_name -> google.protobuf.Timestamp + 100, // 148: mxaccess_gateway.v1.MxValue.array_value:type_name -> mxaccess_gateway.v1.MxArray + 101, // 149: mxaccess_gateway.v1.MxValue.sparse_array_value:type_name -> mxaccess_gateway.v1.MxSparseArray + 7, // 150: mxaccess_gateway.v1.MxArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType + 103, // 151: mxaccess_gateway.v1.MxArray.bool_values:type_name -> mxaccess_gateway.v1.BoolArray + 104, // 152: mxaccess_gateway.v1.MxArray.int32_values:type_name -> mxaccess_gateway.v1.Int32Array + 105, // 153: mxaccess_gateway.v1.MxArray.int64_values:type_name -> mxaccess_gateway.v1.Int64Array + 106, // 154: mxaccess_gateway.v1.MxArray.float_values:type_name -> mxaccess_gateway.v1.FloatArray + 107, // 155: mxaccess_gateway.v1.MxArray.double_values:type_name -> mxaccess_gateway.v1.DoubleArray + 108, // 156: mxaccess_gateway.v1.MxArray.string_values:type_name -> mxaccess_gateway.v1.StringArray + 109, // 157: mxaccess_gateway.v1.MxArray.timestamp_values:type_name -> mxaccess_gateway.v1.TimestampArray + 110, // 158: mxaccess_gateway.v1.MxArray.raw_values:type_name -> mxaccess_gateway.v1.RawArray + 7, // 159: mxaccess_gateway.v1.MxSparseArray.element_data_type:type_name -> mxaccess_gateway.v1.MxDataType + 102, // 160: mxaccess_gateway.v1.MxSparseArray.elements:type_name -> mxaccess_gateway.v1.MxSparseElement + 99, // 161: mxaccess_gateway.v1.MxSparseElement.value:type_name -> mxaccess_gateway.v1.MxValue + 113, // 162: mxaccess_gateway.v1.TimestampArray.values:type_name -> google.protobuf.Timestamp + 8, // 163: mxaccess_gateway.v1.ProtocolStatus.code:type_name -> mxaccess_gateway.v1.ProtocolStatusCode + 11, // 164: mxaccess_gateway.v1.MxAccessGateway.OpenSession:input_type -> mxaccess_gateway.v1.OpenSessionRequest + 13, // 165: mxaccess_gateway.v1.MxAccessGateway.CloseSession:input_type -> mxaccess_gateway.v1.CloseSessionRequest + 16, // 166: mxaccess_gateway.v1.MxAccessGateway.Invoke:input_type -> mxaccess_gateway.v1.MxCommandRequest + 15, // 167: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:input_type -> mxaccess_gateway.v1.StreamEventsRequest + 92, // 168: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:input_type -> mxaccess_gateway.v1.AcknowledgeAlarmRequest + 94, // 169: mxaccess_gateway.v1.MxAccessGateway.StreamAlarms:input_type -> mxaccess_gateway.v1.StreamAlarmsRequest + 10, // 170: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:input_type -> mxaccess_gateway.v1.QueryActiveAlarmsRequest + 12, // 171: mxaccess_gateway.v1.MxAccessGateway.OpenSession:output_type -> mxaccess_gateway.v1.OpenSessionReply + 14, // 172: mxaccess_gateway.v1.MxAccessGateway.CloseSession:output_type -> mxaccess_gateway.v1.CloseSessionReply + 63, // 173: mxaccess_gateway.v1.MxAccessGateway.Invoke:output_type -> mxaccess_gateway.v1.MxCommandReply + 83, // 174: mxaccess_gateway.v1.MxAccessGateway.StreamEvents:output_type -> mxaccess_gateway.v1.MxEvent + 93, // 175: mxaccess_gateway.v1.MxAccessGateway.AcknowledgeAlarm:output_type -> mxaccess_gateway.v1.AcknowledgeAlarmReply + 95, // 176: mxaccess_gateway.v1.MxAccessGateway.StreamAlarms:output_type -> mxaccess_gateway.v1.AlarmFeedMessage + 91, // 177: mxaccess_gateway.v1.MxAccessGateway.QueryActiveAlarms:output_type -> mxaccess_gateway.v1.ActiveAlarmSnapshot + 171, // [171:178] is the sub-list for method output_type + 164, // [164:171] is the sub-list for method input_type + 164, // [164:164] is the sub-list for extension type_name + 164, // [164:164] is the sub-list for extension extendee + 0, // [0:164] is the sub-list for field type_name } func init() { file_mxaccess_gateway_proto_init() } @@ -9752,8 +9833,9 @@ func file_mxaccess_gateway_proto_init() { (*AlarmFeedMessage_SnapshotComplete)(nil), (*AlarmFeedMessage_Transition)(nil), (*AlarmFeedMessage_ProviderStatus)(nil), + (*AlarmFeedMessage_SnapshotStatus)(nil), } - file_mxaccess_gateway_proto_msgTypes[88].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[89].OneofWrappers = []any{ (*MxValue_BoolValue)(nil), (*MxValue_Int32Value)(nil), (*MxValue_Int64Value)(nil), @@ -9765,7 +9847,7 @@ func file_mxaccess_gateway_proto_init() { (*MxValue_RawValue)(nil), (*MxValue_SparseArrayValue)(nil), } - file_mxaccess_gateway_proto_msgTypes[89].OneofWrappers = []any{ + file_mxaccess_gateway_proto_msgTypes[90].OneofWrappers = []any{ (*MxArray_BoolValues)(nil), (*MxArray_Int32Values)(nil), (*MxArray_Int64Values)(nil), @@ -9781,7 +9863,7 @@ func file_mxaccess_gateway_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_mxaccess_gateway_proto_rawDesc), len(file_mxaccess_gateway_proto_rawDesc)), NumEnums: 10, - NumMessages: 101, + NumMessages: 102, NumExtensions: 0, NumServices: 1, }, diff --git a/clients/java/README.md b/clients/java/README.md index 6c89443..d16cd0e 100644 --- a/clients/java/README.md +++ b/clients/java/README.md @@ -125,6 +125,16 @@ deletions from it. It is set-level degraded status, not a comment on the record's own fidelity, and is distinct from `getDegraded()` (the subtag fallback provider). +`streamAlarms` also carries that completeness verdict at feed level, as a +message whose `getPayloadCase()` is `SNAPSHOT_STATUS` and whose +`getSnapshotStatus().getTruncated()` is true while the monitor's cached set +derives from a truncated fetch. One arrives at stream open (after the +`PROVIDER_STATUS` frame, before the cached `ACTIVE_ALARM` frames) so a late +joiner learns the current verdict, then one on every verdict change — including +the clearing frame sent when the gateway's alarm monitor restarts and drops a +truncated verdict. Track it if you need set completeness on a live feed without +polling `queryActiveAlarms`. + ## Write Semantics And Common Pitfalls These are MXAccess parity behaviors that surprise new callers. The gateway diff --git a/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java b/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java index defa7c5..b49bf8b 100644 --- a/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java +++ b/clients/java/src/main/generated/main/java/mxaccess_gateway/v1/MxaccessGateway.java @@ -89166,6 +89166,39 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { */ mxaccess_gateway.v1.MxaccessGateway.AlarmProviderStatusOrBuilder getProviderStatusOrBuilder(); + /** + *
+     * Snapshot-completeness status. Emitted once on stream open and again on
+     * every change of the truncation verdict, so late joiners learn whether the
+     * feed's active-alarm set may be incomplete.
+     * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + * @return Whether the snapshotStatus field is set. + */ + boolean hasSnapshotStatus(); + /** + *
+     * Snapshot-completeness status. Emitted once on stream open and again on
+     * every change of the truncation verdict, so late joiners learn whether the
+     * feed's active-alarm set may be incomplete.
+     * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + * @return The snapshotStatus. + */ + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus getSnapshotStatus(); + /** + *
+     * Snapshot-completeness status. Emitted once on stream open and again on
+     * every change of the truncation verdict, so late joiners learn whether the
+     * feed's active-alarm set may be incomplete.
+     * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatusOrBuilder getSnapshotStatusOrBuilder(); + mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage.PayloadCase getPayloadCase(); } /** @@ -89221,6 +89254,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { SNAPSHOT_COMPLETE(2), TRANSITION(3), PROVIDER_STATUS(4), + SNAPSHOT_STATUS(5), PAYLOAD_NOT_SET(0); private final int value; private PayloadCase(int value) { @@ -89242,6 +89276,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { case 2: return SNAPSHOT_COMPLETE; case 3: return TRANSITION; case 4: return PROVIDER_STATUS; + case 5: return SNAPSHOT_STATUS; case 0: return PAYLOAD_NOT_SET; default: return null; } @@ -89420,6 +89455,55 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return mxaccess_gateway.v1.MxaccessGateway.AlarmProviderStatus.getDefaultInstance(); } + public static final int SNAPSHOT_STATUS_FIELD_NUMBER = 5; + /** + *
+     * Snapshot-completeness status. Emitted once on stream open and again on
+     * every change of the truncation verdict, so late joiners learn whether the
+     * feed's active-alarm set may be incomplete.
+     * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + * @return Whether the snapshotStatus field is set. + */ + @java.lang.Override + public boolean hasSnapshotStatus() { + return payloadCase_ == 5; + } + /** + *
+     * Snapshot-completeness status. Emitted once on stream open and again on
+     * every change of the truncation verdict, so late joiners learn whether the
+     * feed's active-alarm set may be incomplete.
+     * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + * @return The snapshotStatus. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus getSnapshotStatus() { + if (payloadCase_ == 5) { + return (mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance(); + } + /** + *
+     * Snapshot-completeness status. Emitted once on stream open and again on
+     * every change of the truncation verdict, so late joiners learn whether the
+     * feed's active-alarm set may be incomplete.
+     * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatusOrBuilder getSnapshotStatusOrBuilder() { + if (payloadCase_ == 5) { + return (mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -89447,6 +89531,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (payloadCase_ == 4) { output.writeMessage(4, (mxaccess_gateway.v1.MxaccessGateway.AlarmProviderStatus) payload_); } + if (payloadCase_ == 5) { + output.writeMessage(5, (mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) payload_); + } getUnknownFields().writeTo(output); } @@ -89473,6 +89560,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, (mxaccess_gateway.v1.MxaccessGateway.AlarmProviderStatus) payload_); } + if (payloadCase_ == 5) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, (mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) payload_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -89506,6 +89597,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!getProviderStatus() .equals(other.getProviderStatus())) return false; break; + case 5: + if (!getSnapshotStatus() + .equals(other.getSnapshotStatus())) return false; + break; case 0: default: } @@ -89538,6 +89633,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { hash = (37 * hash) + PROVIDER_STATUS_FIELD_NUMBER; hash = (53 * hash) + getProviderStatus().hashCode(); break; + case 5: + hash = (37 * hash) + SNAPSHOT_STATUS_FIELD_NUMBER; + hash = (53 * hash) + getSnapshotStatus().hashCode(); + break; case 0: default: } @@ -89687,6 +89786,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (providerStatusBuilder_ != null) { providerStatusBuilder_.clear(); } + if (snapshotStatusBuilder_ != null) { + snapshotStatusBuilder_.clear(); + } payloadCase_ = 0; payload_ = null; return this; @@ -89740,6 +89842,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { providerStatusBuilder_ != null) { result.payload_ = providerStatusBuilder_.build(); } + if (payloadCase_ == 5 && + snapshotStatusBuilder_ != null) { + result.payload_ = snapshotStatusBuilder_.build(); + } } @java.lang.Override @@ -89771,6 +89877,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { mergeProviderStatus(other.getProviderStatus()); break; } + case SNAPSHOT_STATUS: { + mergeSnapshotStatus(other.getSnapshotStatus()); + break; + } case PAYLOAD_NOT_SET: { break; } @@ -89827,6 +89937,13 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { payloadCase_ = 4; break; } // case 34 + case 42: { + input.readMessage( + internalGetSnapshotStatusFieldBuilder().getBuilder(), + extensionRegistry); + payloadCase_ = 5; + break; + } // case 42 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -90464,6 +90581,202 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return providerStatusBuilder_; } + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus, mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.Builder, mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatusOrBuilder> snapshotStatusBuilder_; + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + * @return Whether the snapshotStatus field is set. + */ + @java.lang.Override + public boolean hasSnapshotStatus() { + return payloadCase_ == 5; + } + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + * @return The snapshotStatus. + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus getSnapshotStatus() { + if (snapshotStatusBuilder_ == null) { + if (payloadCase_ == 5) { + return (mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance(); + } else { + if (payloadCase_ == 5) { + return snapshotStatusBuilder_.getMessage(); + } + return mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance(); + } + } + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + public Builder setSnapshotStatus(mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus value) { + if (snapshotStatusBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + payload_ = value; + onChanged(); + } else { + snapshotStatusBuilder_.setMessage(value); + } + payloadCase_ = 5; + return this; + } + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + public Builder setSnapshotStatus( + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.Builder builderForValue) { + if (snapshotStatusBuilder_ == null) { + payload_ = builderForValue.build(); + onChanged(); + } else { + snapshotStatusBuilder_.setMessage(builderForValue.build()); + } + payloadCase_ = 5; + return this; + } + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + public Builder mergeSnapshotStatus(mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus value) { + if (snapshotStatusBuilder_ == null) { + if (payloadCase_ == 5 && + payload_ != mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance()) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.newBuilder((mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) payload_) + .mergeFrom(value).buildPartial(); + } else { + payload_ = value; + } + onChanged(); + } else { + if (payloadCase_ == 5) { + snapshotStatusBuilder_.mergeFrom(value); + } else { + snapshotStatusBuilder_.setMessage(value); + } + } + payloadCase_ = 5; + return this; + } + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + public Builder clearSnapshotStatus() { + if (snapshotStatusBuilder_ == null) { + if (payloadCase_ == 5) { + payloadCase_ = 0; + payload_ = null; + onChanged(); + } + } else { + if (payloadCase_ == 5) { + payloadCase_ = 0; + payload_ = null; + } + snapshotStatusBuilder_.clear(); + } + return this; + } + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.Builder getSnapshotStatusBuilder() { + return internalGetSnapshotStatusFieldBuilder().getBuilder(); + } + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatusOrBuilder getSnapshotStatusOrBuilder() { + if ((payloadCase_ == 5) && (snapshotStatusBuilder_ != null)) { + return snapshotStatusBuilder_.getMessageOrBuilder(); + } else { + if (payloadCase_ == 5) { + return (mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) payload_; + } + return mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance(); + } + } + /** + *
+       * Snapshot-completeness status. Emitted once on stream open and again on
+       * every change of the truncation verdict, so late joiners learn whether the
+       * feed's active-alarm set may be incomplete.
+       * 
+ * + * .mxaccess_gateway.v1.AlarmSnapshotStatus snapshot_status = 5; + */ + private com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus, mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.Builder, mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatusOrBuilder> + internalGetSnapshotStatusFieldBuilder() { + if (snapshotStatusBuilder_ == null) { + if (!(payloadCase_ == 5)) { + payload_ = mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance(); + } + snapshotStatusBuilder_ = new com.google.protobuf.SingleFieldBuilder< + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus, mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.Builder, mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatusOrBuilder>( + (mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) payload_, + getParentForChildren(), + isClean()); + payload_ = null; + } + payloadCase_ = 5; + onChanged(); + return snapshotStatusBuilder_; + } + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.AlarmFeedMessage) } @@ -91465,6 +91778,500 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { } + public interface AlarmSnapshotStatusOrBuilder extends + // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.AlarmSnapshotStatus) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * True while the monitor's cached active-alarm set derives from a truncated
+     * (capped) worker fetch — the set may be missing alarms. Distinct from
+     * provider degradation (AlarmProviderStatus.degraded), which describes the
+     * fidelity of the records rather than the completeness of the set.
+     * 
+ * + * bool truncated = 1; + * @return The truncated. + */ + boolean getTruncated(); + } + /** + *
+   * Feed-level snapshot-completeness status. Emitted once on StreamAlarms open
+   * (after the initial provider_status frame, before the cached active_alarm
+   * frames) so late joiners learn the current verdict, and again on every change
+   * of the truncation verdict — when a reconcile reports a different verdict, and
+   * when the gateway's alarm monitor restarts and drops a truncated verdict with
+   * the cache generation it described (feed subscribers outlive that monitor
+   * session, so they are sent the clearing frame). Mirrors the per-record
+   * ActiveAlarmSnapshot.from_truncated_snapshot caveat at feed level so live
+   * consumers can reason about completeness without polling QueryActiveAlarms.
+   * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.AlarmSnapshotStatus} + */ + public static final class AlarmSnapshotStatus extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:mxaccess_gateway.v1.AlarmSnapshotStatus) + AlarmSnapshotStatusOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 33, + /* patch= */ 1, + /* suffix= */ "", + "AlarmSnapshotStatus"); + } + // Use AlarmSnapshotStatus.newBuilder() to construct. + private AlarmSnapshotStatus(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private AlarmSnapshotStatus() { + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.class, mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.Builder.class); + } + + public static final int TRUNCATED_FIELD_NUMBER = 1; + private boolean truncated_ = false; + /** + *
+     * True while the monitor's cached active-alarm set derives from a truncated
+     * (capped) worker fetch — the set may be missing alarms. Distinct from
+     * provider degradation (AlarmProviderStatus.degraded), which describes the
+     * fidelity of the records rather than the completeness of the set.
+     * 
+ * + * bool truncated = 1; + * @return The truncated. + */ + @java.lang.Override + public boolean getTruncated() { + return truncated_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (truncated_ != false) { + output.writeBool(1, truncated_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (truncated_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, truncated_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus)) { + return super.equals(obj); + } + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus other = (mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) obj; + + if (getTruncated() + != other.getTruncated()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + TRUNCATED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getTruncated()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+     * Feed-level snapshot-completeness status. Emitted once on StreamAlarms open
+     * (after the initial provider_status frame, before the cached active_alarm
+     * frames) so late joiners learn the current verdict, and again on every change
+     * of the truncation verdict — when a reconcile reports a different verdict, and
+     * when the gateway's alarm monitor restarts and drops a truncated verdict with
+     * the cache generation it described (feed subscribers outlive that monitor
+     * session, so they are sent the clearing frame). Mirrors the per-record
+     * ActiveAlarmSnapshot.from_truncated_snapshot caveat at feed level so live
+     * consumers can reason about completeness without polling QueryActiveAlarms.
+     * 
+ * + * Protobuf type {@code mxaccess_gateway.v1.AlarmSnapshotStatus} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:mxaccess_gateway.v1.AlarmSnapshotStatus) + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatusOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_fieldAccessorTable + .ensureFieldAccessorsInitialized( + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.class, mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.Builder.class); + } + + // Construct using mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + truncated_ = false; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return mxaccess_gateway.v1.MxaccessGateway.internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_descriptor; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus getDefaultInstanceForType() { + return mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance(); + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus build() { + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus buildPartial() { + mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus result = new mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.truncated_ = truncated_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus) { + return mergeFrom((mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus other) { + if (other == mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus.getDefaultInstance()) return this; + if (other.getTruncated() != false) { + setTruncated(other.getTruncated()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + truncated_ = input.readBool(); + bitField0_ |= 0x00000001; + break; + } // case 8 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private boolean truncated_ ; + /** + *
+       * True while the monitor's cached active-alarm set derives from a truncated
+       * (capped) worker fetch — the set may be missing alarms. Distinct from
+       * provider degradation (AlarmProviderStatus.degraded), which describes the
+       * fidelity of the records rather than the completeness of the set.
+       * 
+ * + * bool truncated = 1; + * @return The truncated. + */ + @java.lang.Override + public boolean getTruncated() { + return truncated_; + } + /** + *
+       * True while the monitor's cached active-alarm set derives from a truncated
+       * (capped) worker fetch — the set may be missing alarms. Distinct from
+       * provider degradation (AlarmProviderStatus.degraded), which describes the
+       * fidelity of the records rather than the completeness of the set.
+       * 
+ * + * bool truncated = 1; + * @param value The truncated to set. + * @return This builder for chaining. + */ + public Builder setTruncated(boolean value) { + + truncated_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+       * True while the monitor's cached active-alarm set derives from a truncated
+       * (capped) worker fetch — the set may be missing alarms. Distinct from
+       * provider degradation (AlarmProviderStatus.degraded), which describes the
+       * fidelity of the records rather than the completeness of the set.
+       * 
+ * + * bool truncated = 1; + * @return This builder for chaining. + */ + public Builder clearTruncated() { + bitField0_ = (bitField0_ & ~0x00000001); + truncated_ = false; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.AlarmSnapshotStatus) + } + + // @@protoc_insertion_point(class_scope:mxaccess_gateway.v1.AlarmSnapshotStatus) + private static final mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus(); + } + + public static mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AlarmSnapshotStatus parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + public interface MxStatusProxyOrBuilder extends // @@protoc_insertion_point(interface_extends:mxaccess_gateway.v1.MxStatusProxy) com.google.protobuf.MessageOrBuilder { @@ -105185,6 +105992,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { private static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_mxaccess_gateway_v1_AlarmProviderStatus_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_mxaccess_gateway_v1_MxStatusProxy_descriptor; private static final @@ -105643,194 +106455,197 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { "agnostic_message\030\006 \001(\tB\n\n\010_hresultJ\004\010\001\020\002" + "R\nsession_id\"Q\n\023StreamAlarmsRequest\022\035\n\025c" + "lient_correlation_id\030\001 \001(\t\022\033\n\023alarm_filt" + - "er_prefix\030\002 \001(\t\"\204\002\n\020AlarmFeedMessage\022@\n\014" + + "er_prefix\030\002 \001(\t\"\311\002\n\020AlarmFeedMessage\022@\n\014" + "active_alarm\030\001 \001(\0132(.mxaccess_gateway.v1" + ".ActiveAlarmSnapshotH\000\022\033\n\021snapshot_compl" + "ete\030\002 \001(\010H\000\022A\n\ntransition\030\003 \001(\0132+.mxacce" + "ss_gateway.v1.OnAlarmTransitionEventH\000\022C" + "\n\017provider_status\030\004 \001(\0132(.mxaccess_gatew" + - "ay.v1.AlarmProviderStatusH\000B\t\n\007payload\"\230" + - "\001\n\023AlarmProviderStatus\0224\n\004mode\030\001 \001(\0162&.m" + - "xaccess_gateway.v1.AlarmProviderMode\022\020\n\010" + - "degraded\030\002 \001(\010\022\016\n\006reason\030\003 \001(\t\022)\n\005since\030" + - "\004 \001(\0132\032.google.protobuf.Timestamp\"\353\001\n\rMx" + - "StatusProxy\022\017\n\007success\030\001 \001(\005\0227\n\010category" + - "\030\002 \001(\0162%.mxaccess_gateway.v1.MxStatusCat" + - "egory\0228\n\013detected_by\030\003 \001(\0162#.mxaccess_ga" + - "teway.v1.MxStatusSource\022\016\n\006detail\030\004 \001(\005\022" + - "\024\n\014raw_category\030\005 \001(\005\022\027\n\017raw_detected_by" + - "\030\006 \001(\005\022\027\n\017diagnostic_text\030\007 \001(\t\"\351\003\n\007MxVa" + - "lue\0222\n\tdata_type\030\001 \001(\0162\037.mxaccess_gatewa" + - "y.v1.MxDataType\022\024\n\014variant_type\030\002 \001(\t\022\017\n" + - "\007is_null\030\003 \001(\010\022\026\n\016raw_diagnostic\030\004 \001(\t\022\025" + - "\n\rraw_data_type\030\005 \001(\005\022\024\n\nbool_value\030\n \001(", - "\010H\000\022\025\n\013int32_value\030\013 \001(\005H\000\022\025\n\013int64_valu" + - "e\030\014 \001(\003H\000\022\025\n\013float_value\030\r \001(\002H\000\022\026\n\014doub" + - "le_value\030\016 \001(\001H\000\022\026\n\014string_value\030\017 \001(\tH\000" + - "\0225\n\017timestamp_value\030\020 \001(\0132\032.google.proto" + - "buf.TimestampH\000\0223\n\013array_value\030\021 \001(\0132\034.m" + - "xaccess_gateway.v1.MxArrayH\000\022\023\n\traw_valu" + - "e\030\022 \001(\014H\000\022@\n\022sparse_array_value\030\023 \001(\0132\"." + - "mxaccess_gateway.v1.MxSparseArrayH\000B\006\n\004k" + - "ind\"\376\004\n\007MxArray\022:\n\021element_data_type\030\001 \001" + - "(\0162\037.mxaccess_gateway.v1.MxDataType\022\024\n\014v" + - "ariant_type\030\002 \001(\t\022\022\n\ndimensions\030\003 \003(\r\022\026\n" + - "\016raw_diagnostic\030\004 \001(\t\022\035\n\025raw_element_dat" + - "a_type\030\005 \001(\005\0225\n\013bool_values\030\n \001(\0132\036.mxac" + - "cess_gateway.v1.BoolArrayH\000\0227\n\014int32_val" + - "ues\030\013 \001(\0132\037.mxaccess_gateway.v1.Int32Arr" + - "ayH\000\0227\n\014int64_values\030\014 \001(\0132\037.mxaccess_ga" + - "teway.v1.Int64ArrayH\000\0227\n\014float_values\030\r " + - "\001(\0132\037.mxaccess_gateway.v1.FloatArrayH\000\0229" + - "\n\rdouble_values\030\016 \001(\0132 .mxaccess_gateway" + - ".v1.DoubleArrayH\000\0229\n\rstring_values\030\017 \001(\013" + - "2 .mxaccess_gateway.v1.StringArrayH\000\022?\n\020" + - "timestamp_values\030\020 \001(\0132#.mxaccess_gatewa" + - "y.v1.TimestampArrayH\000\0223\n\nraw_values\030\021 \001(" + - "\0132\035.mxaccess_gateway.v1.RawArrayH\000B\010\n\006va" + - "lues\"\231\001\n\rMxSparseArray\022:\n\021element_data_t" + - "ype\030\001 \001(\0162\037.mxaccess_gateway.v1.MxDataTy" + - "pe\022\024\n\014total_length\030\002 \001(\r\0226\n\010elements\030\003 \003" + - "(\0132$.mxaccess_gateway.v1.MxSparseElement" + - "\"M\n\017MxSparseElement\022\r\n\005index\030\001 \001(\r\022+\n\005va" + - "lue\030\002 \001(\0132\034.mxaccess_gateway.v1.MxValue\"" + - "\033\n\tBoolArray\022\016\n\006values\030\001 \003(\010\"\034\n\nInt32Arr" + - "ay\022\016\n\006values\030\001 \003(\005\"\034\n\nInt64Array\022\016\n\006valu" + - "es\030\001 \003(\003\"\034\n\nFloatArray\022\016\n\006values\030\001 \003(\002\"\035" + - "\n\013DoubleArray\022\016\n\006values\030\001 \003(\001\"\035\n\013StringA" + - "rray\022\016\n\006values\030\001 \003(\t\"<\n\016TimestampArray\022*" + - "\n\006values\030\001 \003(\0132\032.google.protobuf.Timesta" + - "mp\"\032\n\010RawArray\022\016\n\006values\030\001 \003(\014\"X\n\016Protoc" + - "olStatus\0225\n\004code\030\001 \001(\0162\'.mxaccess_gatewa" + - "y.v1.ProtocolStatusCode\022\017\n\007message\030\002 \001(\t" + - "*\237\013\n\rMxCommandKind\022\037\n\033MX_COMMAND_KIND_UN" + - "SPECIFIED\020\000\022\034\n\030MX_COMMAND_KIND_REGISTER\020" + - "\001\022\036\n\032MX_COMMAND_KIND_UNREGISTER\020\002\022\034\n\030MX_" + - "COMMAND_KIND_ADD_ITEM\020\003\022\035\n\031MX_COMMAND_KI" + - "ND_ADD_ITEM2\020\004\022\037\n\033MX_COMMAND_KIND_REMOVE" + - "_ITEM\020\005\022\032\n\026MX_COMMAND_KIND_ADVISE\020\006\022\035\n\031M" + - "X_COMMAND_KIND_UN_ADVISE\020\007\022&\n\"MX_COMMAND" + - "_KIND_ADVISE_SUPERVISORY\020\010\022%\n!MX_COMMAND" + - "_KIND_ADD_BUFFERED_ITEM\020\t\0220\n,MX_COMMAND_" + - "KIND_SET_BUFFERED_UPDATE_INTERVAL\020\n\022\033\n\027M" + - "X_COMMAND_KIND_SUSPEND\020\013\022\034\n\030MX_COMMAND_K" + - "IND_ACTIVATE\020\014\022\031\n\025MX_COMMAND_KIND_WRITE\020" + - "\r\022\032\n\026MX_COMMAND_KIND_WRITE2\020\016\022!\n\035MX_COMM" + - "AND_KIND_WRITE_SECURED\020\017\022\"\n\036MX_COMMAND_K" + - "IND_WRITE_SECURED2\020\020\022%\n!MX_COMMAND_KIND_" + - "AUTHENTICATE_USER\020\021\022(\n$MX_COMMAND_KIND_A" + - "RCHESTRA_USER_TO_ID\020\022\022!\n\035MX_COMMAND_KIND" + - "_ADD_ITEM_BULK\020\023\022$\n MX_COMMAND_KIND_ADVI" + - "SE_ITEM_BULK\020\024\022$\n MX_COMMAND_KIND_REMOVE" + - "_ITEM_BULK\020\025\022\'\n#MX_COMMAND_KIND_UN_ADVIS" + - "E_ITEM_BULK\020\026\022\"\n\036MX_COMMAND_KIND_SUBSCRI" + - "BE_BULK\020\027\022$\n MX_COMMAND_KIND_UNSUBSCRIBE" + - "_BULK\020\030\022$\n MX_COMMAND_KIND_SUBSCRIBE_ALA" + - "RMS\020\031\022&\n\"MX_COMMAND_KIND_UNSUBSCRIBE_ALA" + - "RMS\020\032\022%\n!MX_COMMAND_KIND_ACKNOWLEDGE_ALA" + - "RM\020\033\022\'\n#MX_COMMAND_KIND_QUERY_ACTIVE_ALA" + - "RMS\020\034\022-\n)MX_COMMAND_KIND_ACKNOWLEDGE_ALA" + - "RM_BY_NAME\020\035\022\036\n\032MX_COMMAND_KIND_WRITE_BU" + - "LK\020\036\022\037\n\033MX_COMMAND_KIND_WRITE2_BULK\020\037\022&\n" + - "\"MX_COMMAND_KIND_WRITE_SECURED_BULK\020 \022\'\n" + - "#MX_COMMAND_KIND_WRITE_SECURED2_BULK\020!\022\035" + - "\n\031MX_COMMAND_KIND_READ_BULK\020\"\022\030\n\024MX_COMM" + - "AND_KIND_PING\020d\022%\n!MX_COMMAND_KIND_GET_S" + - "ESSION_STATE\020e\022#\n\037MX_COMMAND_KIND_GET_WO" + - "RKER_INFO\020f\022 \n\034MX_COMMAND_KIND_DRAIN_EVE" + - "NTS\020g\022#\n\037MX_COMMAND_KIND_SHUTDOWN_WORKER" + - "\020h*z\n\021AlarmProviderMode\022#\n\037ALARM_PROVIDE" + - "R_MODE_UNSPECIFIED\020\000\022 \n\034ALARM_PROVIDER_M" + - "ODE_ALARMMGR\020\001\022\036\n\032ALARM_PROVIDER_MODE_SU" + - "BTAG\020\002*\255\002\n\rMxEventFamily\022\037\n\033MX_EVENT_FAM" + - "ILY_UNSPECIFIED\020\000\022\"\n\036MX_EVENT_FAMILY_ON_" + - "DATA_CHANGE\020\001\022%\n!MX_EVENT_FAMILY_ON_WRIT" + - "E_COMPLETE\020\002\022&\n\"MX_EVENT_FAMILY_OPERATIO" + - "N_COMPLETE\020\003\022+\n\'MX_EVENT_FAMILY_ON_BUFFE" + - "RED_DATA_CHANGE\020\004\022\'\n#MX_EVENT_FAMILY_ON_" + - "ALARM_TRANSITION\020\005\0222\n.MX_EVENT_FAMILY_ON" + - "_ALARM_PROVIDER_MODE_CHANGED\020\006*\312\001\n\023Alarm" + - "TransitionKind\022%\n!ALARM_TRANSITION_KIND_" + - "UNSPECIFIED\020\000\022\037\n\033ALARM_TRANSITION_KIND_R" + - "AISE\020\001\022%\n!ALARM_TRANSITION_KIND_ACKNOWLE" + - "DGE\020\002\022\037\n\033ALARM_TRANSITION_KIND_CLEAR\020\003\022#" + - "\n\037ALARM_TRANSITION_KIND_RETRIGGER\020\004*\252\001\n\023" + - "AlarmConditionState\022%\n!ALARM_CONDITION_S" + - "TATE_UNSPECIFIED\020\000\022 \n\034ALARM_CONDITION_ST" + - "ATE_ACTIVE\020\001\022&\n\"ALARM_CONDITION_STATE_AC" + - "TIVE_ACKED\020\002\022\"\n\036ALARM_CONDITION_STATE_IN" + - "ACTIVE\020\003*\245\003\n\020MxStatusCategory\022\"\n\036MX_STAT" + - "US_CATEGORY_UNSPECIFIED\020\000\022\036\n\032MX_STATUS_C" + - "ATEGORY_UNKNOWN\020\001\022\031\n\025MX_STATUS_CATEGORY_" + - "OK\020\002\022\036\n\032MX_STATUS_CATEGORY_PENDING\020\003\022\036\n\032" + - "MX_STATUS_CATEGORY_WARNING\020\004\022*\n&MX_STATU" + - "S_CATEGORY_COMMUNICATION_ERROR\020\005\022*\n&MX_S" + - "TATUS_CATEGORY_CONFIGURATION_ERROR\020\006\022(\n$" + - "MX_STATUS_CATEGORY_OPERATIONAL_ERROR\020\007\022%" + - "\n!MX_STATUS_CATEGORY_SECURITY_ERROR\020\010\022%\n" + - "!MX_STATUS_CATEGORY_SOFTWARE_ERROR\020\t\022\"\n\036" + - "MX_STATUS_CATEGORY_OTHER_ERROR\020\n*\312\002\n\016MxS" + - "tatusSource\022 \n\034MX_STATUS_SOURCE_UNSPECIF" + - "IED\020\000\022\034\n\030MX_STATUS_SOURCE_UNKNOWN\020\001\022#\n\037M" + - "X_STATUS_SOURCE_REQUESTING_LMX\020\002\022#\n\037MX_S" + - "TATUS_SOURCE_RESPONDING_LMX\020\003\022#\n\037MX_STAT" + - "US_SOURCE_REQUESTING_NMX\020\004\022#\n\037MX_STATUS_" + - "SOURCE_RESPONDING_NMX\020\005\0221\n-MX_STATUS_SOU" + - "RCE_REQUESTING_AUTOMATION_OBJECT\020\006\0221\n-MX" + - "_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJ" + - "ECT\020\007*\335\004\n\nMxDataType\022\034\n\030MX_DATA_TYPE_UNS" + - "PECIFIED\020\000\022\030\n\024MX_DATA_TYPE_UNKNOWN\020\001\022\030\n\024" + - "MX_DATA_TYPE_NO_DATA\020\002\022\030\n\024MX_DATA_TYPE_B" + - "OOLEAN\020\003\022\030\n\024MX_DATA_TYPE_INTEGER\020\004\022\026\n\022MX" + - "_DATA_TYPE_FLOAT\020\005\022\027\n\023MX_DATA_TYPE_DOUBL" + - "E\020\006\022\027\n\023MX_DATA_TYPE_STRING\020\007\022\025\n\021MX_DATA_" + - "TYPE_TIME\020\010\022\035\n\031MX_DATA_TYPE_ELAPSED_TIME" + - "\020\t\022\037\n\033MX_DATA_TYPE_REFERENCE_TYPE\020\n\022\034\n\030M" + - "X_DATA_TYPE_STATUS_TYPE\020\013\022\025\n\021MX_DATA_TYP" + - "E_ENUM\020\014\022-\n)MX_DATA_TYPE_SECURITY_CLASSI" + - "FICATION_ENUM\020\r\022\"\n\036MX_DATA_TYPE_DATA_QUA" + - "LITY_TYPE\020\016\022\037\n\033MX_DATA_TYPE_QUALIFIED_EN" + - "UM\020\017\022!\n\035MX_DATA_TYPE_QUALIFIED_STRUCT\020\020\022" + - ")\n%MX_DATA_TYPE_INTERNATIONALIZED_STRING" + - "\020\021\022\033\n\027MX_DATA_TYPE_BIG_STRING\020\022\022\024\n\020MX_DA" + - "TA_TYPE_END\020\023*\243\003\n\022ProtocolStatusCode\022$\n " + - "PROTOCOL_STATUS_CODE_UNSPECIFIED\020\000\022\033\n\027PR" + - "OTOCOL_STATUS_CODE_OK\020\001\022(\n$PROTOCOL_STAT" + - "US_CODE_INVALID_REQUEST\020\002\022*\n&PROTOCOL_ST" + - "ATUS_CODE_SESSION_NOT_FOUND\020\003\022*\n&PROTOCO" + - "L_STATUS_CODE_SESSION_NOT_READY\020\004\022+\n\'PRO" + - "TOCOL_STATUS_CODE_WORKER_UNAVAILABLE\020\005\022 " + - "\n\034PROTOCOL_STATUS_CODE_TIMEOUT\020\006\022!\n\035PROT" + - "OCOL_STATUS_CODE_CANCELED\020\007\022+\n\'PROTOCOL_" + - "STATUS_CODE_PROTOCOL_VIOLATION\020\010\022)\n%PROT" + - "OCOL_STATUS_CODE_MXACCESS_FAILURE\020\t*\277\002\n\014" + - "SessionState\022\035\n\031SESSION_STATE_UNSPECIFIE" + - "D\020\000\022\032\n\026SESSION_STATE_CREATING\020\001\022!\n\035SESSI" + - "ON_STATE_STARTING_WORKER\020\002\022\"\n\036SESSION_ST" + - "ATE_WAITING_FOR_PIPE\020\003\022\035\n\031SESSION_STATE_" + - "HANDSHAKING\020\004\022%\n!SESSION_STATE_INITIALIZ" + - "ING_WORKER\020\005\022\027\n\023SESSION_STATE_READY\020\006\022\031\n" + - "\025SESSION_STATE_CLOSING\020\007\022\030\n\024SESSION_STAT" + - "E_CLOSED\020\010\022\031\n\025SESSION_STATE_FAULTED\020\t2\303\005" + - "\n\017MxAccessGateway\022]\n\013OpenSession\022\'.mxacc" + - "ess_gateway.v1.OpenSessionRequest\032%.mxac" + - "cess_gateway.v1.OpenSessionReply\022`\n\014Clos" + - "eSession\022(.mxaccess_gateway.v1.CloseSess" + - "ionRequest\032&.mxaccess_gateway.v1.CloseSe" + - "ssionReply\022T\n\006Invoke\022%.mxaccess_gateway." + - "v1.MxCommandRequest\032#.mxaccess_gateway.v" + - "1.MxCommandReply\022X\n\014StreamEvents\022(.mxacc" + - "ess_gateway.v1.StreamEventsRequest\032\034.mxa" + - "ccess_gateway.v1.MxEvent0\001\022l\n\020Acknowledg" + - "eAlarm\022,.mxaccess_gateway.v1.Acknowledge" + - "AlarmRequest\032*.mxaccess_gateway.v1.Ackno" + - "wledgeAlarmReply\022a\n\014StreamAlarms\022(.mxacc" + - "ess_gateway.v1.StreamAlarmsRequest\032%.mxa" + - "ccess_gateway.v1.AlarmFeedMessage0\001\022n\n\021Q" + - "ueryActiveAlarms\022-.mxaccess_gateway.v1.Q" + - "ueryActiveAlarmsRequest\032(.mxaccess_gatew" + - "ay.v1.ActiveAlarmSnapshot0\001B&\252\002#ZB.MOM.W" + - "W.MxGateway.Contracts.Protob\006proto3" + "ay.v1.AlarmProviderStatusH\000\022C\n\017snapshot_" + + "status\030\005 \001(\0132(.mxaccess_gateway.v1.Alarm" + + "SnapshotStatusH\000B\t\n\007payload\"\230\001\n\023AlarmPro" + + "viderStatus\0224\n\004mode\030\001 \001(\0162&.mxaccess_gat" + + "eway.v1.AlarmProviderMode\022\020\n\010degraded\030\002 " + + "\001(\010\022\016\n\006reason\030\003 \001(\t\022)\n\005since\030\004 \001(\0132\032.goo" + + "gle.protobuf.Timestamp\"(\n\023AlarmSnapshotS" + + "tatus\022\021\n\ttruncated\030\001 \001(\010\"\353\001\n\rMxStatusPro" + + "xy\022\017\n\007success\030\001 \001(\005\0227\n\010category\030\002 \001(\0162%." + + "mxaccess_gateway.v1.MxStatusCategory\0228\n\013" + + "detected_by\030\003 \001(\0162#.mxaccess_gateway.v1." + + "MxStatusSource\022\016\n\006detail\030\004 \001(\005\022\024\n\014raw_ca" + + "tegory\030\005 \001(\005\022\027\n\017raw_detected_by\030\006 \001(\005\022\027\n" + + "\017diagnostic_text\030\007 \001(\t\"\351\003\n\007MxValue\0222\n\tda" + + "ta_type\030\001 \001(\0162\037.mxaccess_gateway.v1.MxDa", + "taType\022\024\n\014variant_type\030\002 \001(\t\022\017\n\007is_null\030" + + "\003 \001(\010\022\026\n\016raw_diagnostic\030\004 \001(\t\022\025\n\rraw_dat" + + "a_type\030\005 \001(\005\022\024\n\nbool_value\030\n \001(\010H\000\022\025\n\013in" + + "t32_value\030\013 \001(\005H\000\022\025\n\013int64_value\030\014 \001(\003H\000" + + "\022\025\n\013float_value\030\r \001(\002H\000\022\026\n\014double_value\030" + + "\016 \001(\001H\000\022\026\n\014string_value\030\017 \001(\tH\000\0225\n\017times" + + "tamp_value\030\020 \001(\0132\032.google.protobuf.Times" + + "tampH\000\0223\n\013array_value\030\021 \001(\0132\034.mxaccess_g" + + "ateway.v1.MxArrayH\000\022\023\n\traw_value\030\022 \001(\014H\000" + + "\022@\n\022sparse_array_value\030\023 \001(\0132\".mxaccess_" + + "gateway.v1.MxSparseArrayH\000B\006\n\004kind\"\376\004\n\007M" + + "xArray\022:\n\021element_data_type\030\001 \001(\0162\037.mxac" + + "cess_gateway.v1.MxDataType\022\024\n\014variant_ty" + + "pe\030\002 \001(\t\022\022\n\ndimensions\030\003 \003(\r\022\026\n\016raw_diag" + + "nostic\030\004 \001(\t\022\035\n\025raw_element_data_type\030\005 " + + "\001(\005\0225\n\013bool_values\030\n \001(\0132\036.mxaccess_gate" + + "way.v1.BoolArrayH\000\0227\n\014int32_values\030\013 \001(\013" + + "2\037.mxaccess_gateway.v1.Int32ArrayH\000\0227\n\014i" + + "nt64_values\030\014 \001(\0132\037.mxaccess_gateway.v1." + + "Int64ArrayH\000\0227\n\014float_values\030\r \001(\0132\037.mxa" + + "ccess_gateway.v1.FloatArrayH\000\0229\n\rdouble_" + + "values\030\016 \001(\0132 .mxaccess_gateway.v1.Doubl" + + "eArrayH\000\0229\n\rstring_values\030\017 \001(\0132 .mxacce" + + "ss_gateway.v1.StringArrayH\000\022?\n\020timestamp" + + "_values\030\020 \001(\0132#.mxaccess_gateway.v1.Time" + + "stampArrayH\000\0223\n\nraw_values\030\021 \001(\0132\035.mxacc" + + "ess_gateway.v1.RawArrayH\000B\010\n\006values\"\231\001\n\r" + + "MxSparseArray\022:\n\021element_data_type\030\001 \001(\016" + + "2\037.mxaccess_gateway.v1.MxDataType\022\024\n\014tot" + + "al_length\030\002 \001(\r\0226\n\010elements\030\003 \003(\0132$.mxac" + + "cess_gateway.v1.MxSparseElement\"M\n\017MxSpa" + + "rseElement\022\r\n\005index\030\001 \001(\r\022+\n\005value\030\002 \001(\013" + + "2\034.mxaccess_gateway.v1.MxValue\"\033\n\tBoolAr" + + "ray\022\016\n\006values\030\001 \003(\010\"\034\n\nInt32Array\022\016\n\006val" + + "ues\030\001 \003(\005\"\034\n\nInt64Array\022\016\n\006values\030\001 \003(\003\"" + + "\034\n\nFloatArray\022\016\n\006values\030\001 \003(\002\"\035\n\013DoubleA" + + "rray\022\016\n\006values\030\001 \003(\001\"\035\n\013StringArray\022\016\n\006v" + + "alues\030\001 \003(\t\"<\n\016TimestampArray\022*\n\006values\030" + + "\001 \003(\0132\032.google.protobuf.Timestamp\"\032\n\010Raw" + + "Array\022\016\n\006values\030\001 \003(\014\"X\n\016ProtocolStatus\022" + + "5\n\004code\030\001 \001(\0162\'.mxaccess_gateway.v1.Prot" + + "ocolStatusCode\022\017\n\007message\030\002 \001(\t*\237\013\n\rMxCo" + + "mmandKind\022\037\n\033MX_COMMAND_KIND_UNSPECIFIED" + + "\020\000\022\034\n\030MX_COMMAND_KIND_REGISTER\020\001\022\036\n\032MX_C" + + "OMMAND_KIND_UNREGISTER\020\002\022\034\n\030MX_COMMAND_K" + + "IND_ADD_ITEM\020\003\022\035\n\031MX_COMMAND_KIND_ADD_IT" + + "EM2\020\004\022\037\n\033MX_COMMAND_KIND_REMOVE_ITEM\020\005\022\032" + + "\n\026MX_COMMAND_KIND_ADVISE\020\006\022\035\n\031MX_COMMAND" + + "_KIND_UN_ADVISE\020\007\022&\n\"MX_COMMAND_KIND_ADV" + + "ISE_SUPERVISORY\020\010\022%\n!MX_COMMAND_KIND_ADD" + + "_BUFFERED_ITEM\020\t\0220\n,MX_COMMAND_KIND_SET_" + + "BUFFERED_UPDATE_INTERVAL\020\n\022\033\n\027MX_COMMAND" + + "_KIND_SUSPEND\020\013\022\034\n\030MX_COMMAND_KIND_ACTIV" + + "ATE\020\014\022\031\n\025MX_COMMAND_KIND_WRITE\020\r\022\032\n\026MX_C" + + "OMMAND_KIND_WRITE2\020\016\022!\n\035MX_COMMAND_KIND_" + + "WRITE_SECURED\020\017\022\"\n\036MX_COMMAND_KIND_WRITE" + + "_SECURED2\020\020\022%\n!MX_COMMAND_KIND_AUTHENTIC" + + "ATE_USER\020\021\022(\n$MX_COMMAND_KIND_ARCHESTRA_" + + "USER_TO_ID\020\022\022!\n\035MX_COMMAND_KIND_ADD_ITEM" + + "_BULK\020\023\022$\n MX_COMMAND_KIND_ADVISE_ITEM_B" + + "ULK\020\024\022$\n MX_COMMAND_KIND_REMOVE_ITEM_BUL" + + "K\020\025\022\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_BU" + + "LK\020\026\022\"\n\036MX_COMMAND_KIND_SUBSCRIBE_BULK\020\027" + + "\022$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\020\030\022$" + + "\n MX_COMMAND_KIND_SUBSCRIBE_ALARMS\020\031\022&\n\"" + + "MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\020\032\022%\n!" + + "MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\020\033\022\'\n#M" + + "X_COMMAND_KIND_QUERY_ACTIVE_ALARMS\020\034\022-\n)" + + "MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAM" + + "E\020\035\022\036\n\032MX_COMMAND_KIND_WRITE_BULK\020\036\022\037\n\033M" + + "X_COMMAND_KIND_WRITE2_BULK\020\037\022&\n\"MX_COMMA" + + "ND_KIND_WRITE_SECURED_BULK\020 \022\'\n#MX_COMMA" + + "ND_KIND_WRITE_SECURED2_BULK\020!\022\035\n\031MX_COMM" + + "AND_KIND_READ_BULK\020\"\022\030\n\024MX_COMMAND_KIND_" + + "PING\020d\022%\n!MX_COMMAND_KIND_GET_SESSION_ST" + + "ATE\020e\022#\n\037MX_COMMAND_KIND_GET_WORKER_INFO" + + "\020f\022 \n\034MX_COMMAND_KIND_DRAIN_EVENTS\020g\022#\n\037" + + "MX_COMMAND_KIND_SHUTDOWN_WORKER\020h*z\n\021Ala" + + "rmProviderMode\022#\n\037ALARM_PROVIDER_MODE_UN" + + "SPECIFIED\020\000\022 \n\034ALARM_PROVIDER_MODE_ALARM" + + "MGR\020\001\022\036\n\032ALARM_PROVIDER_MODE_SUBTAG\020\002*\255\002" + + "\n\rMxEventFamily\022\037\n\033MX_EVENT_FAMILY_UNSPE" + + "CIFIED\020\000\022\"\n\036MX_EVENT_FAMILY_ON_DATA_CHAN" + + "GE\020\001\022%\n!MX_EVENT_FAMILY_ON_WRITE_COMPLET" + + "E\020\002\022&\n\"MX_EVENT_FAMILY_OPERATION_COMPLET" + + "E\020\003\022+\n\'MX_EVENT_FAMILY_ON_BUFFERED_DATA_" + + "CHANGE\020\004\022\'\n#MX_EVENT_FAMILY_ON_ALARM_TRA" + + "NSITION\020\005\0222\n.MX_EVENT_FAMILY_ON_ALARM_PR" + + "OVIDER_MODE_CHANGED\020\006*\312\001\n\023AlarmTransitio" + + "nKind\022%\n!ALARM_TRANSITION_KIND_UNSPECIFI" + + "ED\020\000\022\037\n\033ALARM_TRANSITION_KIND_RAISE\020\001\022%\n" + + "!ALARM_TRANSITION_KIND_ACKNOWLEDGE\020\002\022\037\n\033" + + "ALARM_TRANSITION_KIND_CLEAR\020\003\022#\n\037ALARM_T" + + "RANSITION_KIND_RETRIGGER\020\004*\252\001\n\023AlarmCond" + + "itionState\022%\n!ALARM_CONDITION_STATE_UNSP" + + "ECIFIED\020\000\022 \n\034ALARM_CONDITION_STATE_ACTIV" + + "E\020\001\022&\n\"ALARM_CONDITION_STATE_ACTIVE_ACKE" + + "D\020\002\022\"\n\036ALARM_CONDITION_STATE_INACTIVE\020\003*" + + "\245\003\n\020MxStatusCategory\022\"\n\036MX_STATUS_CATEGO" + + "RY_UNSPECIFIED\020\000\022\036\n\032MX_STATUS_CATEGORY_U" + + "NKNOWN\020\001\022\031\n\025MX_STATUS_CATEGORY_OK\020\002\022\036\n\032M" + + "X_STATUS_CATEGORY_PENDING\020\003\022\036\n\032MX_STATUS" + + "_CATEGORY_WARNING\020\004\022*\n&MX_STATUS_CATEGOR" + + "Y_COMMUNICATION_ERROR\020\005\022*\n&MX_STATUS_CAT" + + "EGORY_CONFIGURATION_ERROR\020\006\022(\n$MX_STATUS" + + "_CATEGORY_OPERATIONAL_ERROR\020\007\022%\n!MX_STAT" + + "US_CATEGORY_SECURITY_ERROR\020\010\022%\n!MX_STATU" + + "S_CATEGORY_SOFTWARE_ERROR\020\t\022\"\n\036MX_STATUS" + + "_CATEGORY_OTHER_ERROR\020\n*\312\002\n\016MxStatusSour" + + "ce\022 \n\034MX_STATUS_SOURCE_UNSPECIFIED\020\000\022\034\n\030" + + "MX_STATUS_SOURCE_UNKNOWN\020\001\022#\n\037MX_STATUS_" + + "SOURCE_REQUESTING_LMX\020\002\022#\n\037MX_STATUS_SOU" + + "RCE_RESPONDING_LMX\020\003\022#\n\037MX_STATUS_SOURCE" + + "_REQUESTING_NMX\020\004\022#\n\037MX_STATUS_SOURCE_RE" + + "SPONDING_NMX\020\005\0221\n-MX_STATUS_SOURCE_REQUE" + + "STING_AUTOMATION_OBJECT\020\006\0221\n-MX_STATUS_S" + + "OURCE_RESPONDING_AUTOMATION_OBJECT\020\007*\335\004\n" + + "\nMxDataType\022\034\n\030MX_DATA_TYPE_UNSPECIFIED\020" + + "\000\022\030\n\024MX_DATA_TYPE_UNKNOWN\020\001\022\030\n\024MX_DATA_T" + + "YPE_NO_DATA\020\002\022\030\n\024MX_DATA_TYPE_BOOLEAN\020\003\022" + + "\030\n\024MX_DATA_TYPE_INTEGER\020\004\022\026\n\022MX_DATA_TYP" + + "E_FLOAT\020\005\022\027\n\023MX_DATA_TYPE_DOUBLE\020\006\022\027\n\023MX" + + "_DATA_TYPE_STRING\020\007\022\025\n\021MX_DATA_TYPE_TIME" + + "\020\010\022\035\n\031MX_DATA_TYPE_ELAPSED_TIME\020\t\022\037\n\033MX_" + + "DATA_TYPE_REFERENCE_TYPE\020\n\022\034\n\030MX_DATA_TY" + + "PE_STATUS_TYPE\020\013\022\025\n\021MX_DATA_TYPE_ENUM\020\014\022" + + "-\n)MX_DATA_TYPE_SECURITY_CLASSIFICATION_" + + "ENUM\020\r\022\"\n\036MX_DATA_TYPE_DATA_QUALITY_TYPE" + + "\020\016\022\037\n\033MX_DATA_TYPE_QUALIFIED_ENUM\020\017\022!\n\035M" + + "X_DATA_TYPE_QUALIFIED_STRUCT\020\020\022)\n%MX_DAT" + + "A_TYPE_INTERNATIONALIZED_STRING\020\021\022\033\n\027MX_" + + "DATA_TYPE_BIG_STRING\020\022\022\024\n\020MX_DATA_TYPE_E" + + "ND\020\023*\243\003\n\022ProtocolStatusCode\022$\n PROTOCOL_" + + "STATUS_CODE_UNSPECIFIED\020\000\022\033\n\027PROTOCOL_ST" + + "ATUS_CODE_OK\020\001\022(\n$PROTOCOL_STATUS_CODE_I" + + "NVALID_REQUEST\020\002\022*\n&PROTOCOL_STATUS_CODE" + + "_SESSION_NOT_FOUND\020\003\022*\n&PROTOCOL_STATUS_" + + "CODE_SESSION_NOT_READY\020\004\022+\n\'PROTOCOL_STA" + + "TUS_CODE_WORKER_UNAVAILABLE\020\005\022 \n\034PROTOCO" + + "L_STATUS_CODE_TIMEOUT\020\006\022!\n\035PROTOCOL_STAT" + + "US_CODE_CANCELED\020\007\022+\n\'PROTOCOL_STATUS_CO" + + "DE_PROTOCOL_VIOLATION\020\010\022)\n%PROTOCOL_STAT" + + "US_CODE_MXACCESS_FAILURE\020\t*\277\002\n\014SessionSt" + + "ate\022\035\n\031SESSION_STATE_UNSPECIFIED\020\000\022\032\n\026SE" + + "SSION_STATE_CREATING\020\001\022!\n\035SESSION_STATE_" + + "STARTING_WORKER\020\002\022\"\n\036SESSION_STATE_WAITI" + + "NG_FOR_PIPE\020\003\022\035\n\031SESSION_STATE_HANDSHAKI" + + "NG\020\004\022%\n!SESSION_STATE_INITIALIZING_WORKE" + + "R\020\005\022\027\n\023SESSION_STATE_READY\020\006\022\031\n\025SESSION_" + + "STATE_CLOSING\020\007\022\030\n\024SESSION_STATE_CLOSED\020" + + "\010\022\031\n\025SESSION_STATE_FAULTED\020\t2\303\005\n\017MxAcces" + + "sGateway\022]\n\013OpenSession\022\'.mxaccess_gatew" + + "ay.v1.OpenSessionRequest\032%.mxaccess_gate" + + "way.v1.OpenSessionReply\022`\n\014CloseSession\022" + + "(.mxaccess_gateway.v1.CloseSessionReques" + + "t\032&.mxaccess_gateway.v1.CloseSessionRepl" + + "y\022T\n\006Invoke\022%.mxaccess_gateway.v1.MxComm" + + "andRequest\032#.mxaccess_gateway.v1.MxComma" + + "ndReply\022X\n\014StreamEvents\022(.mxaccess_gatew" + + "ay.v1.StreamEventsRequest\032\034.mxaccess_gat" + + "eway.v1.MxEvent0\001\022l\n\020AcknowledgeAlarm\022,." + + "mxaccess_gateway.v1.AcknowledgeAlarmRequ" + + "est\032*.mxaccess_gateway.v1.AcknowledgeAla" + + "rmReply\022a\n\014StreamAlarms\022(.mxaccess_gatew" + + "ay.v1.StreamAlarmsRequest\032%.mxaccess_gat" + + "eway.v1.AlarmFeedMessage0\001\022n\n\021QueryActiv" + + "eAlarms\022-.mxaccess_gateway.v1.QueryActiv" + + "eAlarmsRequest\032(.mxaccess_gateway.v1.Act" + + "iveAlarmSnapshot0\001B&\252\002#ZB.MOM.WW.MxGatew" + + "ay.Contracts.Protob\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -106353,93 +107168,99 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { internal_static_mxaccess_gateway_v1_AlarmFeedMessage_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AlarmFeedMessage_descriptor, - new java.lang.String[] { "ActiveAlarm", "SnapshotComplete", "Transition", "ProviderStatus", "Payload", }); + new java.lang.String[] { "ActiveAlarm", "SnapshotComplete", "Transition", "ProviderStatus", "SnapshotStatus", "Payload", }); internal_static_mxaccess_gateway_v1_AlarmProviderStatus_descriptor = getDescriptor().getMessageType(86); internal_static_mxaccess_gateway_v1_AlarmProviderStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AlarmProviderStatus_descriptor, new java.lang.String[] { "Mode", "Degraded", "Reason", "Since", }); - internal_static_mxaccess_gateway_v1_MxStatusProxy_descriptor = + internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_descriptor = getDescriptor().getMessageType(87); + internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_mxaccess_gateway_v1_AlarmSnapshotStatus_descriptor, + new java.lang.String[] { "Truncated", }); + internal_static_mxaccess_gateway_v1_MxStatusProxy_descriptor = + getDescriptor().getMessageType(88); internal_static_mxaccess_gateway_v1_MxStatusProxy_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxStatusProxy_descriptor, new java.lang.String[] { "Success", "Category", "DetectedBy", "Detail", "RawCategory", "RawDetectedBy", "DiagnosticText", }); internal_static_mxaccess_gateway_v1_MxValue_descriptor = - getDescriptor().getMessageType(88); + getDescriptor().getMessageType(89); internal_static_mxaccess_gateway_v1_MxValue_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxValue_descriptor, new java.lang.String[] { "DataType", "VariantType", "IsNull", "RawDiagnostic", "RawDataType", "BoolValue", "Int32Value", "Int64Value", "FloatValue", "DoubleValue", "StringValue", "TimestampValue", "ArrayValue", "RawValue", "SparseArrayValue", "Kind", }); internal_static_mxaccess_gateway_v1_MxArray_descriptor = - getDescriptor().getMessageType(89); + getDescriptor().getMessageType(90); internal_static_mxaccess_gateway_v1_MxArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxArray_descriptor, new java.lang.String[] { "ElementDataType", "VariantType", "Dimensions", "RawDiagnostic", "RawElementDataType", "BoolValues", "Int32Values", "Int64Values", "FloatValues", "DoubleValues", "StringValues", "TimestampValues", "RawValues", "Values", }); internal_static_mxaccess_gateway_v1_MxSparseArray_descriptor = - getDescriptor().getMessageType(90); + getDescriptor().getMessageType(91); internal_static_mxaccess_gateway_v1_MxSparseArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxSparseArray_descriptor, new java.lang.String[] { "ElementDataType", "TotalLength", "Elements", }); internal_static_mxaccess_gateway_v1_MxSparseElement_descriptor = - getDescriptor().getMessageType(91); + getDescriptor().getMessageType(92); internal_static_mxaccess_gateway_v1_MxSparseElement_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_MxSparseElement_descriptor, new java.lang.String[] { "Index", "Value", }); internal_static_mxaccess_gateway_v1_BoolArray_descriptor = - getDescriptor().getMessageType(92); + getDescriptor().getMessageType(93); internal_static_mxaccess_gateway_v1_BoolArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_BoolArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_Int32Array_descriptor = - getDescriptor().getMessageType(93); + getDescriptor().getMessageType(94); internal_static_mxaccess_gateway_v1_Int32Array_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_Int32Array_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_Int64Array_descriptor = - getDescriptor().getMessageType(94); + getDescriptor().getMessageType(95); internal_static_mxaccess_gateway_v1_Int64Array_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_Int64Array_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_FloatArray_descriptor = - getDescriptor().getMessageType(95); + getDescriptor().getMessageType(96); internal_static_mxaccess_gateway_v1_FloatArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_FloatArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_DoubleArray_descriptor = - getDescriptor().getMessageType(96); + getDescriptor().getMessageType(97); internal_static_mxaccess_gateway_v1_DoubleArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_DoubleArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_StringArray_descriptor = - getDescriptor().getMessageType(97); + getDescriptor().getMessageType(98); internal_static_mxaccess_gateway_v1_StringArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_StringArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_TimestampArray_descriptor = - getDescriptor().getMessageType(98); + getDescriptor().getMessageType(99); internal_static_mxaccess_gateway_v1_TimestampArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_TimestampArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_RawArray_descriptor = - getDescriptor().getMessageType(99); + getDescriptor().getMessageType(100); internal_static_mxaccess_gateway_v1_RawArray_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_RawArray_descriptor, new java.lang.String[] { "Values", }); internal_static_mxaccess_gateway_v1_ProtocolStatus_descriptor = - getDescriptor().getMessageType(100); + getDescriptor().getMessageType(101); internal_static_mxaccess_gateway_v1_ProtocolStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_ProtocolStatus_descriptor, diff --git a/clients/java/zb-mom-ww-mxgateway-cli/src/main/java/com/zb/mom/ww/mxgateway/cli/MxGatewayCli.java b/clients/java/zb-mom-ww-mxgateway-cli/src/main/java/com/zb/mom/ww/mxgateway/cli/MxGatewayCli.java index 3fe632e..e4e7649 100644 --- a/clients/java/zb-mom-ww-mxgateway-cli/src/main/java/com/zb/mom/ww/mxgateway/cli/MxGatewayCli.java +++ b/clients/java/zb-mom-ww-mxgateway-cli/src/main/java/com/zb/mom/ww/mxgateway/cli/MxGatewayCli.java @@ -48,6 +48,7 @@ import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmReply; import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmRequest; import mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot; import mxaccess_gateway.v1.MxaccessGateway.AlarmProviderStatus; +import mxaccess_gateway.v1.MxaccessGateway.AlarmSnapshotStatus; import mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage; import mxaccess_gateway.v1.MxaccessGateway.BulkReadResult; import mxaccess_gateway.v1.MxaccessGateway.BulkWriteResult; @@ -2282,7 +2283,8 @@ public final class MxGatewayCli implements Callable { /** * Renders one {@link AlarmFeedMessage} in the CLI's plain-text output * style, distinguishing the active-alarm snapshot, snapshot-complete - * sentinel, and transition cases of the message's {@code payload} oneof. + * sentinel, transition, provider-status, and snapshot-status cases of the + * message's {@code payload} oneof. */ private static String formatAlarmFeedMessage(AlarmFeedMessage message) { return switch (message.getPayloadCase()) { @@ -2307,6 +2309,10 @@ public final class MxGatewayCli implements Callable { "provider-status mode=%s degraded=%b reason=%s", status.getMode().name(), status.getDegraded(), status.getReason()); } + case SNAPSHOT_STATUS -> { + AlarmSnapshotStatus status = message.getSnapshotStatus(); + yield String.format("snapshot-status truncated=%b", status.getTruncated()); + } case PAYLOAD_NOT_SET -> "unknown"; }; } diff --git a/clients/proto/descriptors/mxaccessgw-client-v1.protoset b/clients/proto/descriptors/mxaccessgw-client-v1.protoset index fe74001..30a8c97 100644 Binary files a/clients/proto/descriptors/mxaccessgw-client-v1.protoset and b/clients/proto/descriptors/mxaccessgw-client-v1.protoset differ diff --git a/clients/python/README.md b/clients/python/README.md index ae73a3f..540fa45 100644 --- a/clients/python/README.md +++ b/clients/python/README.md @@ -122,6 +122,16 @@ poll. Treat the set as possibly incomplete rather than reconciling deletions from it. It is set-level degraded status, not a comment on the record's own fidelity, and is distinct from `degraded` (the subtag fallback provider). +`stream_alarms` also carries that completeness verdict at feed level, as a +message whose `WhichOneof("payload")` is `snapshot_status` and whose +`snapshot_status.truncated` is true while the monitor's cached set derives from +a truncated fetch. One arrives at stream open (after the `provider_status` +frame, before the cached `active_alarm` frames) so a late joiner learns the +current verdict, then one on every verdict change — including the clearing frame +sent when the gateway's alarm monitor restarts and drops a truncated verdict. +Track it if you need set completeness on a live feed without polling +`query_active_alarms`. + Canceling a Python task cancels the client-side gRPC call or stream wait. It does not abort an in-flight MXAccess COM call inside the worker process. diff --git a/clients/python/src/zb_mom_ww_mxgateway/generated/mxaccess_gateway_pb2.py b/clients/python/src/zb_mom_ww_mxgateway/generated/mxaccess_gateway_pb2.py index ca60d48..8860ba1 100644 --- a/clients/python/src/zb_mom_ww_mxgateway/generated/mxaccess_gateway_pb2.py +++ b/clients/python/src/zb_mom_ww_mxgateway/generated/mxaccess_gateway_pb2.py @@ -26,7 +26,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16mxaccess_gateway.proto\x12\x13mxaccess_gateway.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"j\n\x18QueryActiveAlarmsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x03 \x01(\t\"\x9f\x01\n\x12OpenSessionRequest\x12\x19\n\x11requested_backend\x18\x01 \x01(\t\x12\x1b\n\x13\x63lient_session_name\x18\x02 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x03 \x01(\t\x12\x32\n\x0f\x63ommand_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xaa\x02\n\x10OpenSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x14\n\x0c\x62\x61\x63kend_name\x18\x02 \x01(\t\x12\x19\n\x11worker_process_id\x18\x03 \x01(\x05\x12\x1f\n\x17worker_protocol_version\x18\x04 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x05 \x03(\t\x12:\n\x17\x64\x65\x66\x61ult_command_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x0fprotocol_status\x18\x07 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12 \n\x18gateway_protocol_version\x18\x08 \x01(\r\"H\n\x13\x43loseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\"\x9d\x01\n\x11\x43loseSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x36\n\x0b\x66inal_state\x18\x02 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\"H\n\x13StreamEventsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x61\x66ter_worker_sequence\x18\x02 \x01(\x04\"v\n\x10MxCommandRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12/\n\x07\x63ommand\x18\x03 \x01(\x0b\x32\x1e.mxaccess_gateway.v1.MxCommand\"\xc0\x15\n\tMxCommand\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12\x38\n\x08register\x18\n \x01(\x0b\x32$.mxaccess_gateway.v1.RegisterCommandH\x00\x12<\n\nunregister\x18\x0b \x01(\x0b\x32&.mxaccess_gateway.v1.UnregisterCommandH\x00\x12\x37\n\x08\x61\x64\x64_item\x18\x0c \x01(\x0b\x32#.mxaccess_gateway.v1.AddItemCommandH\x00\x12\x39\n\tadd_item2\x18\r \x01(\x0b\x32$.mxaccess_gateway.v1.AddItem2CommandH\x00\x12=\n\x0bremove_item\x18\x0e \x01(\x0b\x32&.mxaccess_gateway.v1.RemoveItemCommandH\x00\x12\x34\n\x06\x61\x64vise\x18\x0f \x01(\x0b\x32\".mxaccess_gateway.v1.AdviseCommandH\x00\x12\x39\n\tun_advise\x18\x10 \x01(\x0b\x32$.mxaccess_gateway.v1.UnAdviseCommandH\x00\x12K\n\x12\x61\x64vise_supervisory\x18\x11 \x01(\x0b\x32-.mxaccess_gateway.v1.AdviseSupervisoryCommandH\x00\x12H\n\x11\x61\x64\x64_buffered_item\x18\x12 \x01(\x0b\x32+.mxaccess_gateway.v1.AddBufferedItemCommandH\x00\x12]\n\x1cset_buffered_update_interval\x18\x13 \x01(\x0b\x32\x35.mxaccess_gateway.v1.SetBufferedUpdateIntervalCommandH\x00\x12\x36\n\x07suspend\x18\x14 \x01(\x0b\x32#.mxaccess_gateway.v1.SuspendCommandH\x00\x12\x38\n\x08\x61\x63tivate\x18\x15 \x01(\x0b\x32$.mxaccess_gateway.v1.ActivateCommandH\x00\x12\x32\n\x05write\x18\x16 \x01(\x0b\x32!.mxaccess_gateway.v1.WriteCommandH\x00\x12\x34\n\x06write2\x18\x17 \x01(\x0b\x32\".mxaccess_gateway.v1.Write2CommandH\x00\x12\x41\n\rwrite_secured\x18\x18 \x01(\x0b\x32(.mxaccess_gateway.v1.WriteSecuredCommandH\x00\x12\x43\n\x0ewrite_secured2\x18\x19 \x01(\x0b\x32).mxaccess_gateway.v1.WriteSecured2CommandH\x00\x12I\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32,.mxaccess_gateway.v1.AuthenticateUserCommandH\x00\x12M\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32-.mxaccess_gateway.v1.ArchestrAUserToIdCommandH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.AddItemBulkCommandH\x00\x12\x46\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32*.mxaccess_gateway.v1.AdviseItemBulkCommandH\x00\x12\x46\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32*.mxaccess_gateway.v1.RemoveItemBulkCommandH\x00\x12K\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32,.mxaccess_gateway.v1.UnAdviseItemBulkCommandH\x00\x12\x43\n\x0esubscribe_bulk\x18 \x01(\x0b\x32).mxaccess_gateway.v1.SubscribeBulkCommandH\x00\x12G\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32+.mxaccess_gateway.v1.UnsubscribeBulkCommandH\x00\x12G\n\x10subscribe_alarms\x18\" \x01(\x0b\x32+.mxaccess_gateway.v1.SubscribeAlarmsCommandH\x00\x12K\n\x12unsubscribe_alarms\x18# \x01(\x0b\x32-.mxaccess_gateway.v1.UnsubscribeAlarmsCommandH\x00\x12Q\n\x19\x61\x63knowledge_alarm_command\x18$ \x01(\x0b\x32,.mxaccess_gateway.v1.AcknowledgeAlarmCommandH\x00\x12T\n\x1bquery_active_alarms_command\x18% \x01(\x0b\x32-.mxaccess_gateway.v1.QueryActiveAlarmsCommandH\x00\x12_\n!acknowledge_alarm_by_name_command\x18& \x01(\x0b\x32\x32.mxaccess_gateway.v1.AcknowledgeAlarmByNameCommandH\x00\x12;\n\nwrite_bulk\x18\' \x01(\x0b\x32%.mxaccess_gateway.v1.WriteBulkCommandH\x00\x12=\n\x0bwrite2_bulk\x18( \x01(\x0b\x32&.mxaccess_gateway.v1.Write2BulkCommandH\x00\x12J\n\x12write_secured_bulk\x18) \x01(\x0b\x32,.mxaccess_gateway.v1.WriteSecuredBulkCommandH\x00\x12L\n\x13write_secured2_bulk\x18* \x01(\x0b\x32-.mxaccess_gateway.v1.WriteSecured2BulkCommandH\x00\x12\x39\n\tread_bulk\x18+ \x01(\x0b\x32$.mxaccess_gateway.v1.ReadBulkCommandH\x00\x12\x30\n\x04ping\x18\x64 \x01(\x0b\x32 .mxaccess_gateway.v1.PingCommandH\x00\x12H\n\x11get_session_state\x18\x65 \x01(\x0b\x32+.mxaccess_gateway.v1.GetSessionStateCommandH\x00\x12\x44\n\x0fget_worker_info\x18\x66 \x01(\x0b\x32).mxaccess_gateway.v1.GetWorkerInfoCommandH\x00\x12?\n\x0c\x64rain_events\x18g \x01(\x0b\x32\'.mxaccess_gateway.v1.DrainEventsCommandH\x00\x12\x45\n\x0fshutdown_worker\x18h \x01(\x0b\x32*.mxaccess_gateway.v1.ShutdownWorkerCommandH\x00\x42\t\n\x07payload\"&\n\x0fRegisterCommand\x12\x13\n\x0b\x63lient_name\x18\x01 \x01(\t\"*\n\x11UnregisterCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"@\n\x0e\x41\x64\x64ItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\"W\n\x0f\x41\x64\x64Item2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"?\n\x11RemoveItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\";\n\rAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0fUnAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"F\n\x18\x41\x64viseSupervisoryCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"^\n\x16\x41\x64\x64\x42ufferedItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"_\n SetBufferedUpdateIntervalCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12$\n\x1cupdate_interval_milliseconds\x18\x02 \x01(\x05\"<\n\x0eSuspendCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0f\x41\x63tivateCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"x\n\x0cWriteCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"\xb0\x01\n\rWrite2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x05 \x01(\x05\"\xa1\x01\n\x13WriteSecuredCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\xd9\x01\n\x14WriteSecured2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"c\n\x17\x41uthenticateUserCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bverify_user\x18\x02 \x01(\t\x12\x1c\n\x14verify_user_password\x18\x03 \x01(\t\"G\n\x18\x41rchestrAUserToIdCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0cuser_id_guid\x18\x02 \x01(\t\"B\n\x12\x41\x64\x64ItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"D\n\x15\x41\x64viseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x15RemoveItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"F\n\x17UnAdviseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x14SubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"\xee\x01\n\x16SubscribeAlarmsCommand\x12\x1f\n\x17subscription_expression\x18\x01 \x01(\t\x12;\n\x0b\x66orced_mode\x18\x02 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12:\n\nwatch_list\x18\x03 \x03(\x0b\x32&.mxaccess_gateway.v1.AlarmSubtagTarget\x12:\n\x08\x66\x61ilover\x18\x04 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmFailoverConfig\"\x1a\n\x18UnsubscribeAlarmsCommand\"\xb4\x01\n\x11\x41larmSubtagTarget\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x15\n\ractive_subtag\x18\x03 \x01(\t\x12\x14\n\x0c\x61\x63ked_subtag\x18\x04 \x01(\t\x12\x1a\n\x12\x61\x63k_comment_subtag\x18\x05 \x01(\t\x12\x17\n\x0fpriority_subtag\x18\x06 \x01(\t\"\x85\x01\n\x13\x41larmFailoverConfig\x12%\n\x1d\x63onsecutive_failure_threshold\x18\x01 \x01(\x05\x12\'\n\x1f\x66\x61ilback_probe_interval_seconds\x18\x02 \x01(\x05\x12\x1e\n\x16\x66\x61ilback_stable_probes\x18\x03 \x01(\x05\"\xa1\x01\n\x17\x41\x63knowledgeAlarmCommand\x12\x12\n\nalarm_guid\x18\x01 \x01(\t\x12\x0f\n\x07\x63omment\x18\x02 \x01(\t\x12\x15\n\roperator_user\x18\x03 \x01(\t\x12\x15\n\roperator_node\x18\x04 \x01(\t\x12\x17\n\x0foperator_domain\x18\x05 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x06 \x01(\t\"7\n\x18QueryActiveAlarmsCommand\x12\x1b\n\x13\x61larm_filter_prefix\x18\x01 \x01(\t\"\xd2\x01\n\x1d\x41\x63knowledgeAlarmByNameCommand\x12\x12\n\nalarm_name\x18\x01 \x01(\t\x12\x15\n\rprovider_name\x18\x02 \x01(\t\x12\x12\n\ngroup_name\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\t\x12\x15\n\roperator_node\x18\x06 \x01(\t\x12\x17\n\x0foperator_domain\x18\x07 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x08 \x01(\t\"E\n\x16UnsubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"_\n\x10WriteBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x34\n\x07\x65ntries\x18\x02 \x03(\x0b\x32#.mxaccess_gateway.v1.WriteBulkEntry\"c\n\x0eWriteBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x03 \x01(\x05\"a\n\x11Write2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x35\n\x07\x65ntries\x18\x02 \x03(\x0b\x32$.mxaccess_gateway.v1.Write2BulkEntry\"\x9b\x01\n\x0fWrite2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"m\n\x17WriteSecuredBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12;\n\x07\x65ntries\x18\x02 \x03(\x0b\x32*.mxaccess_gateway.v1.WriteSecuredBulkEntry\"\x8c\x01\n\x15WriteSecuredBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"o\n\x18WriteSecured2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12<\n\x07\x65ntries\x18\x02 \x03(\x0b\x32+.mxaccess_gateway.v1.WriteSecured2BulkEntry\"\xc4\x01\n\x16WriteSecured2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"S\n\x0fReadBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\x12\x12\n\ntimeout_ms\x18\x03 \x01(\r\"\x1e\n\x0bPingCommand\x12\x0f\n\x07message\x18\x01 \x01(\t\"\x18\n\x16GetSessionStateCommand\"\x16\n\x14GetWorkerInfoCommand\"(\n\x12\x44rainEventsCommand\x12\x12\n\nmax_events\x18\x01 \x01(\r\"H\n\x15ShutdownWorkerCommand\x12/\n\x0cgrace_period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x86\x0f\n\x0eMxCommandReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12\x30\n\x04kind\x18\x03 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12<\n\x0fprotocol_status\x18\x04 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x32\n\x0creturn_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x34\n\x08statuses\x18\x07 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x08 \x01(\t\x12\x36\n\x08register\x18\x14 \x01(\x0b\x32\".mxaccess_gateway.v1.RegisterReplyH\x00\x12\x35\n\x08\x61\x64\x64_item\x18\x15 \x01(\x0b\x32!.mxaccess_gateway.v1.AddItemReplyH\x00\x12\x37\n\tadd_item2\x18\x16 \x01(\x0b\x32\".mxaccess_gateway.v1.AddItem2ReplyH\x00\x12\x46\n\x11\x61\x64\x64_buffered_item\x18\x17 \x01(\x0b\x32).mxaccess_gateway.v1.AddBufferedItemReplyH\x00\x12\x34\n\x07suspend\x18\x18 \x01(\x0b\x32!.mxaccess_gateway.v1.SuspendReplyH\x00\x12\x36\n\x08\x61\x63tivate\x18\x19 \x01(\x0b\x32\".mxaccess_gateway.v1.ActivateReplyH\x00\x12G\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32*.mxaccess_gateway.v1.AuthenticateUserReplyH\x00\x12K\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32+.mxaccess_gateway.v1.ArchestrAUserToIdReplyH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x46\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x41\n\x0esubscribe_bulk\x18 \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12N\n\x11\x61\x63knowledge_alarm\x18\" \x01(\x0b\x32\x31.mxaccess_gateway.v1.AcknowledgeAlarmReplyPayloadH\x00\x12Q\n\x13query_active_alarms\x18# \x01(\x0b\x32\x32.mxaccess_gateway.v1.QueryActiveAlarmsReplyPayloadH\x00\x12\x39\n\nwrite_bulk\x18$ \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12:\n\x0bwrite2_bulk\x18% \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x41\n\x12write_secured_bulk\x18& \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x42\n\x13write_secured2_bulk\x18\' \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x37\n\tread_bulk\x18( \x01(\x0b\x32\".mxaccess_gateway.v1.BulkReadReplyH\x00\x12?\n\rsession_state\x18\x64 \x01(\x0b\x32&.mxaccess_gateway.v1.SessionStateReplyH\x00\x12;\n\x0bworker_info\x18\x65 \x01(\x0b\x32$.mxaccess_gateway.v1.WorkerInfoReplyH\x00\x12=\n\x0c\x64rain_events\x18\x66 \x01(\x0b\x32%.mxaccess_gateway.v1.DrainEventsReplyH\x00\x42\t\n\x07payloadB\n\n\x08_hresult\"&\n\rRegisterReply\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"#\n\x0c\x41\x64\x64ItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"$\n\rAddItem2Reply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"+\n\x14\x41\x64\x64\x42ufferedItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"B\n\x0cSuspendReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"C\n\rActivateReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"(\n\x15\x41uthenticateUserReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\")\n\x16\x41rchestrAUserToIdReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\"\x81\x01\n\x0fSubscribeResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x15\n\rerror_message\x18\x05 \x01(\t\"K\n\x12\x42ulkSubscribeReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.SubscribeResult\"\xc4\x01\n\x0f\x42ulkWriteResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x03 \x01(\x08\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x34\n\x08statuses\x18\x05 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\x06 \x01(\tB\n\n\x08_hresult\"G\n\x0e\x42ulkWriteReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.BulkWriteResult\"\xbe\x02\n\x0e\x42ulkReadResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x12\n\nwas_cached\x18\x05 \x01(\x08\x12+\n\x05value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x07 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\t \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\n \x01(\t\"E\n\rBulkReadReply\x12\x34\n\x07results\x18\x01 \x03(\x0b\x32#.mxaccess_gateway.v1.BulkReadResult\"E\n\x11SessionStateReply\x12\x30\n\x05state\x18\x01 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\"u\n\x0fWorkerInfoReply\x12\x19\n\x11worker_process_id\x18\x01 \x01(\x05\x12\x16\n\x0eworker_version\x18\x02 \x01(\t\x12\x17\n\x0fmxaccess_progid\x18\x03 \x01(\t\x12\x16\n\x0emxaccess_clsid\x18\x04 \x01(\t\"@\n\x10\x44rainEventsReply\x12,\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1c.mxaccess_gateway.v1.MxEvent\"5\n\x1c\x41\x63knowledgeAlarmReplyPayload\x12\x15\n\rnative_status\x18\x01 \x01(\x05\"x\n\x1dQueryActiveAlarmsReplyPayload\x12;\n\tsnapshots\x18\x01 \x03(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshot\x12\x1a\n\x12snapshot_truncated\x18\x02 \x01(\x08\"\x8f\x08\n\x07MxEvent\x12\x32\n\x06\x66\x61mily\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxEventFamily\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\x15\n\rserver_handle\x18\x03 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x06 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\x08 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x17\n\x0fworker_sequence\x18\t \x01(\x04\x12\x34\n\x10worker_timestamp\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x19gateway_receive_timestamp\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x07hresult\x18\x0c \x01(\x05H\x01\x88\x01\x01\x12\x12\n\nraw_status\x18\r \x01(\t\x12\x37\n\nreplay_gap\x18\x0e \x01(\x0b\x32\x1e.mxaccess_gateway.v1.ReplayGapH\x02\x88\x01\x01\x12@\n\x0eon_data_change\x18\x14 \x01(\x0b\x32&.mxaccess_gateway.v1.OnDataChangeEventH\x00\x12\x46\n\x11on_write_complete\x18\x15 \x01(\x0b\x32).mxaccess_gateway.v1.OnWriteCompleteEventH\x00\x12I\n\x12operation_complete\x18\x16 \x01(\x0b\x32+.mxaccess_gateway.v1.OperationCompleteEventH\x00\x12Q\n\x17on_buffered_data_change\x18\x17 \x01(\x0b\x32..mxaccess_gateway.v1.OnBufferedDataChangeEventH\x00\x12J\n\x13on_alarm_transition\x18\x18 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x12^\n\x1eon_alarm_provider_mode_changed\x18\x19 \x01(\x0b\x32\x34.mxaccess_gateway.v1.OnAlarmProviderModeChangedEventH\x00\x42\x06\n\x04\x62odyB\n\n\x08_hresultB\r\n\x0b_replay_gap\"P\n\tReplayGap\x12 \n\x18requested_after_sequence\x18\x01 \x01(\x04\x12!\n\x19oldest_available_sequence\x18\x02 \x01(\x04\"\x13\n\x11OnDataChangeEvent\"\x16\n\x14OnWriteCompleteEvent\"\x18\n\x16OperationCompleteEvent\"\xd4\x01\n\x19OnBufferedDataChangeEvent\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x34\n\x0equality_values\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x36\n\x10timestamp_values\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x15\n\rraw_data_type\x18\x04 \x01(\x05\"\xd0\x04\n\x16OnAlarmTransitionEvent\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x41\n\x0ftransition_kind\x18\x04 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmTransitionKind\x12\x10\n\x08severity\x18\x05 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14transition_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\x08 \x01(\t\x12\x18\n\x10operator_comment\x18\t \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\n \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x10\n\x08\x64\x65graded\x18\x0e \x01(\x08\x12?\n\x0fsource_provider\x18\x0f \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\"\xa0\x01\n\x1fOnAlarmProviderModeChangedEvent\x12\x34\n\x04mode\x18\x01 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12\x0f\n\x07hresult\x18\x03 \x01(\x05\x12&\n\x02\x61t\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xf1\x04\n\x13\x41\x63tiveAlarmSnapshot\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x10\n\x08severity\x18\x04 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12?\n\rcurrent_state\x18\x06 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmConditionState\x12\x10\n\x08\x63\x61tegory\x18\x07 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12=\n\x19last_transition_timestamp\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\n \x01(\t\x12\x18\n\x10operator_comment\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x10\n\x08\x64\x65graded\x18\x0e \x01(\x08\x12?\n\x0fsource_provider\x18\x0f \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x1f\n\x17\x66rom_truncated_snapshot\x18\x10 \x01(\x08\"\x90\x01\n\x17\x41\x63knowledgeAlarmRequest\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1c\n\x14\x61larm_full_reference\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\tJ\x04\x08\x01\x10\x02R\nsession_id\"\xf1\x01\n\x15\x41\x63knowledgeAlarmReply\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06status\x18\x05 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x06 \x01(\tB\n\n\x08_hresultJ\x04\x08\x01\x10\x02R\nsession_id\"Q\n\x13StreamAlarmsRequest\x12\x1d\n\x15\x63lient_correlation_id\x18\x01 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x02 \x01(\t\"\x84\x02\n\x10\x41larmFeedMessage\x12@\n\x0c\x61\x63tive_alarm\x18\x01 \x01(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshotH\x00\x12\x1b\n\x11snapshot_complete\x18\x02 \x01(\x08H\x00\x12\x41\n\ntransition\x18\x03 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x12\x43\n\x0fprovider_status\x18\x04 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmProviderStatusH\x00\x42\t\n\x07payload\"\x98\x01\n\x13\x41larmProviderStatus\x12\x34\n\x04mode\x18\x01 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x10\n\x08\x64\x65graded\x18\x02 \x01(\x08\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12)\n\x05since\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xeb\x01\n\rMxStatusProxy\x12\x0f\n\x07success\x18\x01 \x01(\x05\x12\x37\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32%.mxaccess_gateway.v1.MxStatusCategory\x12\x38\n\x0b\x64\x65tected_by\x18\x03 \x01(\x0e\x32#.mxaccess_gateway.v1.MxStatusSource\x12\x0e\n\x06\x64\x65tail\x18\x04 \x01(\x05\x12\x14\n\x0craw_category\x18\x05 \x01(\x05\x12\x17\n\x0fraw_detected_by\x18\x06 \x01(\x05\x12\x17\n\x0f\x64iagnostic_text\x18\x07 \x01(\t\"\xe9\x03\n\x07MxValue\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x0f\n\x07is_null\x18\x03 \x01(\x08\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x15\n\rraw_data_type\x18\x05 \x01(\x05\x12\x14\n\nbool_value\x18\n \x01(\x08H\x00\x12\x15\n\x0bint32_value\x18\x0b \x01(\x05H\x00\x12\x15\n\x0bint64_value\x18\x0c \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\r \x01(\x02H\x00\x12\x16\n\x0c\x64ouble_value\x18\x0e \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x0f \x01(\tH\x00\x12\x35\n\x0ftimestamp_value\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12\x33\n\x0b\x61rray_value\x18\x11 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArrayH\x00\x12\x13\n\traw_value\x18\x12 \x01(\x0cH\x00\x12@\n\x12sparse_array_value\x18\x13 \x01(\x0b\x32\".mxaccess_gateway.v1.MxSparseArrayH\x00\x42\x06\n\x04kind\"\xfe\x04\n\x07MxArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x12\n\ndimensions\x18\x03 \x03(\r\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x1d\n\x15raw_element_data_type\x18\x05 \x01(\x05\x12\x35\n\x0b\x62ool_values\x18\n \x01(\x0b\x32\x1e.mxaccess_gateway.v1.BoolArrayH\x00\x12\x37\n\x0cint32_values\x18\x0b \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int32ArrayH\x00\x12\x37\n\x0cint64_values\x18\x0c \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int64ArrayH\x00\x12\x37\n\x0c\x66loat_values\x18\r \x01(\x0b\x32\x1f.mxaccess_gateway.v1.FloatArrayH\x00\x12\x39\n\rdouble_values\x18\x0e \x01(\x0b\x32 .mxaccess_gateway.v1.DoubleArrayH\x00\x12\x39\n\rstring_values\x18\x0f \x01(\x0b\x32 .mxaccess_gateway.v1.StringArrayH\x00\x12?\n\x10timestamp_values\x18\x10 \x01(\x0b\x32#.mxaccess_gateway.v1.TimestampArrayH\x00\x12\x33\n\nraw_values\x18\x11 \x01(\x0b\x32\x1d.mxaccess_gateway.v1.RawArrayH\x00\x42\x08\n\x06values\"\x99\x01\n\rMxSparseArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0ctotal_length\x18\x02 \x01(\r\x12\x36\n\x08\x65lements\x18\x03 \x03(\x0b\x32$.mxaccess_gateway.v1.MxSparseElement\"M\n\x0fMxSparseElement\x12\r\n\x05index\x18\x01 \x01(\r\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\x1b\n\tBoolArray\x12\x0e\n\x06values\x18\x01 \x03(\x08\"\x1c\n\nInt32Array\x12\x0e\n\x06values\x18\x01 \x03(\x05\"\x1c\n\nInt64Array\x12\x0e\n\x06values\x18\x01 \x03(\x03\"\x1c\n\nFloatArray\x12\x0e\n\x06values\x18\x01 \x03(\x02\"\x1d\n\x0b\x44oubleArray\x12\x0e\n\x06values\x18\x01 \x03(\x01\"\x1d\n\x0bStringArray\x12\x0e\n\x06values\x18\x01 \x03(\t\"<\n\x0eTimestampArray\x12*\n\x06values\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1a\n\x08RawArray\x12\x0e\n\x06values\x18\x01 \x03(\x0c\"X\n\x0eProtocolStatus\x12\x35\n\x04\x63ode\x18\x01 \x01(\x0e\x32\'.mxaccess_gateway.v1.ProtocolStatusCode\x12\x0f\n\x07message\x18\x02 \x01(\t*\x9f\x0b\n\rMxCommandKind\x12\x1f\n\x1bMX_COMMAND_KIND_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_COMMAND_KIND_REGISTER\x10\x01\x12\x1e\n\x1aMX_COMMAND_KIND_UNREGISTER\x10\x02\x12\x1c\n\x18MX_COMMAND_KIND_ADD_ITEM\x10\x03\x12\x1d\n\x19MX_COMMAND_KIND_ADD_ITEM2\x10\x04\x12\x1f\n\x1bMX_COMMAND_KIND_REMOVE_ITEM\x10\x05\x12\x1a\n\x16MX_COMMAND_KIND_ADVISE\x10\x06\x12\x1d\n\x19MX_COMMAND_KIND_UN_ADVISE\x10\x07\x12&\n\"MX_COMMAND_KIND_ADVISE_SUPERVISORY\x10\x08\x12%\n!MX_COMMAND_KIND_ADD_BUFFERED_ITEM\x10\t\x12\x30\n,MX_COMMAND_KIND_SET_BUFFERED_UPDATE_INTERVAL\x10\n\x12\x1b\n\x17MX_COMMAND_KIND_SUSPEND\x10\x0b\x12\x1c\n\x18MX_COMMAND_KIND_ACTIVATE\x10\x0c\x12\x19\n\x15MX_COMMAND_KIND_WRITE\x10\r\x12\x1a\n\x16MX_COMMAND_KIND_WRITE2\x10\x0e\x12!\n\x1dMX_COMMAND_KIND_WRITE_SECURED\x10\x0f\x12\"\n\x1eMX_COMMAND_KIND_WRITE_SECURED2\x10\x10\x12%\n!MX_COMMAND_KIND_AUTHENTICATE_USER\x10\x11\x12(\n$MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID\x10\x12\x12!\n\x1dMX_COMMAND_KIND_ADD_ITEM_BULK\x10\x13\x12$\n MX_COMMAND_KIND_ADVISE_ITEM_BULK\x10\x14\x12$\n MX_COMMAND_KIND_REMOVE_ITEM_BULK\x10\x15\x12\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK\x10\x16\x12\"\n\x1eMX_COMMAND_KIND_SUBSCRIBE_BULK\x10\x17\x12$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\x10\x18\x12$\n MX_COMMAND_KIND_SUBSCRIBE_ALARMS\x10\x19\x12&\n\"MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\x10\x1a\x12%\n!MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\x10\x1b\x12\'\n#MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS\x10\x1c\x12-\n)MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME\x10\x1d\x12\x1e\n\x1aMX_COMMAND_KIND_WRITE_BULK\x10\x1e\x12\x1f\n\x1bMX_COMMAND_KIND_WRITE2_BULK\x10\x1f\x12&\n\"MX_COMMAND_KIND_WRITE_SECURED_BULK\x10 \x12\'\n#MX_COMMAND_KIND_WRITE_SECURED2_BULK\x10!\x12\x1d\n\x19MX_COMMAND_KIND_READ_BULK\x10\"\x12\x18\n\x14MX_COMMAND_KIND_PING\x10\x64\x12%\n!MX_COMMAND_KIND_GET_SESSION_STATE\x10\x65\x12#\n\x1fMX_COMMAND_KIND_GET_WORKER_INFO\x10\x66\x12 \n\x1cMX_COMMAND_KIND_DRAIN_EVENTS\x10g\x12#\n\x1fMX_COMMAND_KIND_SHUTDOWN_WORKER\x10h*z\n\x11\x41larmProviderMode\x12#\n\x1f\x41LARM_PROVIDER_MODE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_PROVIDER_MODE_ALARMMGR\x10\x01\x12\x1e\n\x1a\x41LARM_PROVIDER_MODE_SUBTAG\x10\x02*\xad\x02\n\rMxEventFamily\x12\x1f\n\x1bMX_EVENT_FAMILY_UNSPECIFIED\x10\x00\x12\"\n\x1eMX_EVENT_FAMILY_ON_DATA_CHANGE\x10\x01\x12%\n!MX_EVENT_FAMILY_ON_WRITE_COMPLETE\x10\x02\x12&\n\"MX_EVENT_FAMILY_OPERATION_COMPLETE\x10\x03\x12+\n\'MX_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE\x10\x04\x12\'\n#MX_EVENT_FAMILY_ON_ALARM_TRANSITION\x10\x05\x12\x32\n.MX_EVENT_FAMILY_ON_ALARM_PROVIDER_MODE_CHANGED\x10\x06*\xca\x01\n\x13\x41larmTransitionKind\x12%\n!ALARM_TRANSITION_KIND_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_RAISE\x10\x01\x12%\n!ALARM_TRANSITION_KIND_ACKNOWLEDGE\x10\x02\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_CLEAR\x10\x03\x12#\n\x1f\x41LARM_TRANSITION_KIND_RETRIGGER\x10\x04*\xaa\x01\n\x13\x41larmConditionState\x12%\n!ALARM_CONDITION_STATE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_CONDITION_STATE_ACTIVE\x10\x01\x12&\n\"ALARM_CONDITION_STATE_ACTIVE_ACKED\x10\x02\x12\"\n\x1e\x41LARM_CONDITION_STATE_INACTIVE\x10\x03*\xa5\x03\n\x10MxStatusCategory\x12\"\n\x1eMX_STATUS_CATEGORY_UNSPECIFIED\x10\x00\x12\x1e\n\x1aMX_STATUS_CATEGORY_UNKNOWN\x10\x01\x12\x19\n\x15MX_STATUS_CATEGORY_OK\x10\x02\x12\x1e\n\x1aMX_STATUS_CATEGORY_PENDING\x10\x03\x12\x1e\n\x1aMX_STATUS_CATEGORY_WARNING\x10\x04\x12*\n&MX_STATUS_CATEGORY_COMMUNICATION_ERROR\x10\x05\x12*\n&MX_STATUS_CATEGORY_CONFIGURATION_ERROR\x10\x06\x12(\n$MX_STATUS_CATEGORY_OPERATIONAL_ERROR\x10\x07\x12%\n!MX_STATUS_CATEGORY_SECURITY_ERROR\x10\x08\x12%\n!MX_STATUS_CATEGORY_SOFTWARE_ERROR\x10\t\x12\"\n\x1eMX_STATUS_CATEGORY_OTHER_ERROR\x10\n*\xca\x02\n\x0eMxStatusSource\x12 \n\x1cMX_STATUS_SOURCE_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_STATUS_SOURCE_UNKNOWN\x10\x01\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_LMX\x10\x02\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_LMX\x10\x03\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_NMX\x10\x04\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_NMX\x10\x05\x12\x31\n-MX_STATUS_SOURCE_REQUESTING_AUTOMATION_OBJECT\x10\x06\x12\x31\n-MX_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJECT\x10\x07*\xdd\x04\n\nMxDataType\x12\x1c\n\x18MX_DATA_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14MX_DATA_TYPE_UNKNOWN\x10\x01\x12\x18\n\x14MX_DATA_TYPE_NO_DATA\x10\x02\x12\x18\n\x14MX_DATA_TYPE_BOOLEAN\x10\x03\x12\x18\n\x14MX_DATA_TYPE_INTEGER\x10\x04\x12\x16\n\x12MX_DATA_TYPE_FLOAT\x10\x05\x12\x17\n\x13MX_DATA_TYPE_DOUBLE\x10\x06\x12\x17\n\x13MX_DATA_TYPE_STRING\x10\x07\x12\x15\n\x11MX_DATA_TYPE_TIME\x10\x08\x12\x1d\n\x19MX_DATA_TYPE_ELAPSED_TIME\x10\t\x12\x1f\n\x1bMX_DATA_TYPE_REFERENCE_TYPE\x10\n\x12\x1c\n\x18MX_DATA_TYPE_STATUS_TYPE\x10\x0b\x12\x15\n\x11MX_DATA_TYPE_ENUM\x10\x0c\x12-\n)MX_DATA_TYPE_SECURITY_CLASSIFICATION_ENUM\x10\r\x12\"\n\x1eMX_DATA_TYPE_DATA_QUALITY_TYPE\x10\x0e\x12\x1f\n\x1bMX_DATA_TYPE_QUALIFIED_ENUM\x10\x0f\x12!\n\x1dMX_DATA_TYPE_QUALIFIED_STRUCT\x10\x10\x12)\n%MX_DATA_TYPE_INTERNATIONALIZED_STRING\x10\x11\x12\x1b\n\x17MX_DATA_TYPE_BIG_STRING\x10\x12\x12\x14\n\x10MX_DATA_TYPE_END\x10\x13*\xa3\x03\n\x12ProtocolStatusCode\x12$\n PROTOCOL_STATUS_CODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17PROTOCOL_STATUS_CODE_OK\x10\x01\x12(\n$PROTOCOL_STATUS_CODE_INVALID_REQUEST\x10\x02\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND\x10\x03\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_READY\x10\x04\x12+\n\'PROTOCOL_STATUS_CODE_WORKER_UNAVAILABLE\x10\x05\x12 \n\x1cPROTOCOL_STATUS_CODE_TIMEOUT\x10\x06\x12!\n\x1dPROTOCOL_STATUS_CODE_CANCELED\x10\x07\x12+\n\'PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION\x10\x08\x12)\n%PROTOCOL_STATUS_CODE_MXACCESS_FAILURE\x10\t*\xbf\x02\n\x0cSessionState\x12\x1d\n\x19SESSION_STATE_UNSPECIFIED\x10\x00\x12\x1a\n\x16SESSION_STATE_CREATING\x10\x01\x12!\n\x1dSESSION_STATE_STARTING_WORKER\x10\x02\x12\"\n\x1eSESSION_STATE_WAITING_FOR_PIPE\x10\x03\x12\x1d\n\x19SESSION_STATE_HANDSHAKING\x10\x04\x12%\n!SESSION_STATE_INITIALIZING_WORKER\x10\x05\x12\x17\n\x13SESSION_STATE_READY\x10\x06\x12\x19\n\x15SESSION_STATE_CLOSING\x10\x07\x12\x18\n\x14SESSION_STATE_CLOSED\x10\x08\x12\x19\n\x15SESSION_STATE_FAULTED\x10\t2\xc3\x05\n\x0fMxAccessGateway\x12]\n\x0bOpenSession\x12\'.mxaccess_gateway.v1.OpenSessionRequest\x1a%.mxaccess_gateway.v1.OpenSessionReply\x12`\n\x0c\x43loseSession\x12(.mxaccess_gateway.v1.CloseSessionRequest\x1a&.mxaccess_gateway.v1.CloseSessionReply\x12T\n\x06Invoke\x12%.mxaccess_gateway.v1.MxCommandRequest\x1a#.mxaccess_gateway.v1.MxCommandReply\x12X\n\x0cStreamEvents\x12(.mxaccess_gateway.v1.StreamEventsRequest\x1a\x1c.mxaccess_gateway.v1.MxEvent0\x01\x12l\n\x10\x41\x63knowledgeAlarm\x12,.mxaccess_gateway.v1.AcknowledgeAlarmRequest\x1a*.mxaccess_gateway.v1.AcknowledgeAlarmReply\x12\x61\n\x0cStreamAlarms\x12(.mxaccess_gateway.v1.StreamAlarmsRequest\x1a%.mxaccess_gateway.v1.AlarmFeedMessage0\x01\x12n\n\x11QueryActiveAlarms\x12-.mxaccess_gateway.v1.QueryActiveAlarmsRequest\x1a(.mxaccess_gateway.v1.ActiveAlarmSnapshot0\x01\x42&\xaa\x02#ZB.MOM.WW.MxGateway.Contracts.Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16mxaccess_gateway.proto\x12\x13mxaccess_gateway.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"j\n\x18QueryActiveAlarmsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x03 \x01(\t\"\x9f\x01\n\x12OpenSessionRequest\x12\x19\n\x11requested_backend\x18\x01 \x01(\t\x12\x1b\n\x13\x63lient_session_name\x18\x02 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x03 \x01(\t\x12\x32\n\x0f\x63ommand_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xaa\x02\n\x10OpenSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x14\n\x0c\x62\x61\x63kend_name\x18\x02 \x01(\t\x12\x19\n\x11worker_process_id\x18\x03 \x01(\x05\x12\x1f\n\x17worker_protocol_version\x18\x04 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x05 \x03(\t\x12:\n\x17\x64\x65\x66\x61ult_command_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x0fprotocol_status\x18\x07 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12 \n\x18gateway_protocol_version\x18\x08 \x01(\r\"H\n\x13\x43loseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\"\x9d\x01\n\x11\x43loseSessionReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x36\n\x0b\x66inal_state\x18\x02 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\"H\n\x13StreamEventsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x61\x66ter_worker_sequence\x18\x02 \x01(\x04\"v\n\x10MxCommandRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12/\n\x07\x63ommand\x18\x03 \x01(\x0b\x32\x1e.mxaccess_gateway.v1.MxCommand\"\xc0\x15\n\tMxCommand\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12\x38\n\x08register\x18\n \x01(\x0b\x32$.mxaccess_gateway.v1.RegisterCommandH\x00\x12<\n\nunregister\x18\x0b \x01(\x0b\x32&.mxaccess_gateway.v1.UnregisterCommandH\x00\x12\x37\n\x08\x61\x64\x64_item\x18\x0c \x01(\x0b\x32#.mxaccess_gateway.v1.AddItemCommandH\x00\x12\x39\n\tadd_item2\x18\r \x01(\x0b\x32$.mxaccess_gateway.v1.AddItem2CommandH\x00\x12=\n\x0bremove_item\x18\x0e \x01(\x0b\x32&.mxaccess_gateway.v1.RemoveItemCommandH\x00\x12\x34\n\x06\x61\x64vise\x18\x0f \x01(\x0b\x32\".mxaccess_gateway.v1.AdviseCommandH\x00\x12\x39\n\tun_advise\x18\x10 \x01(\x0b\x32$.mxaccess_gateway.v1.UnAdviseCommandH\x00\x12K\n\x12\x61\x64vise_supervisory\x18\x11 \x01(\x0b\x32-.mxaccess_gateway.v1.AdviseSupervisoryCommandH\x00\x12H\n\x11\x61\x64\x64_buffered_item\x18\x12 \x01(\x0b\x32+.mxaccess_gateway.v1.AddBufferedItemCommandH\x00\x12]\n\x1cset_buffered_update_interval\x18\x13 \x01(\x0b\x32\x35.mxaccess_gateway.v1.SetBufferedUpdateIntervalCommandH\x00\x12\x36\n\x07suspend\x18\x14 \x01(\x0b\x32#.mxaccess_gateway.v1.SuspendCommandH\x00\x12\x38\n\x08\x61\x63tivate\x18\x15 \x01(\x0b\x32$.mxaccess_gateway.v1.ActivateCommandH\x00\x12\x32\n\x05write\x18\x16 \x01(\x0b\x32!.mxaccess_gateway.v1.WriteCommandH\x00\x12\x34\n\x06write2\x18\x17 \x01(\x0b\x32\".mxaccess_gateway.v1.Write2CommandH\x00\x12\x41\n\rwrite_secured\x18\x18 \x01(\x0b\x32(.mxaccess_gateway.v1.WriteSecuredCommandH\x00\x12\x43\n\x0ewrite_secured2\x18\x19 \x01(\x0b\x32).mxaccess_gateway.v1.WriteSecured2CommandH\x00\x12I\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32,.mxaccess_gateway.v1.AuthenticateUserCommandH\x00\x12M\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32-.mxaccess_gateway.v1.ArchestrAUserToIdCommandH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.AddItemBulkCommandH\x00\x12\x46\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32*.mxaccess_gateway.v1.AdviseItemBulkCommandH\x00\x12\x46\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32*.mxaccess_gateway.v1.RemoveItemBulkCommandH\x00\x12K\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32,.mxaccess_gateway.v1.UnAdviseItemBulkCommandH\x00\x12\x43\n\x0esubscribe_bulk\x18 \x01(\x0b\x32).mxaccess_gateway.v1.SubscribeBulkCommandH\x00\x12G\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32+.mxaccess_gateway.v1.UnsubscribeBulkCommandH\x00\x12G\n\x10subscribe_alarms\x18\" \x01(\x0b\x32+.mxaccess_gateway.v1.SubscribeAlarmsCommandH\x00\x12K\n\x12unsubscribe_alarms\x18# \x01(\x0b\x32-.mxaccess_gateway.v1.UnsubscribeAlarmsCommandH\x00\x12Q\n\x19\x61\x63knowledge_alarm_command\x18$ \x01(\x0b\x32,.mxaccess_gateway.v1.AcknowledgeAlarmCommandH\x00\x12T\n\x1bquery_active_alarms_command\x18% \x01(\x0b\x32-.mxaccess_gateway.v1.QueryActiveAlarmsCommandH\x00\x12_\n!acknowledge_alarm_by_name_command\x18& \x01(\x0b\x32\x32.mxaccess_gateway.v1.AcknowledgeAlarmByNameCommandH\x00\x12;\n\nwrite_bulk\x18\' \x01(\x0b\x32%.mxaccess_gateway.v1.WriteBulkCommandH\x00\x12=\n\x0bwrite2_bulk\x18( \x01(\x0b\x32&.mxaccess_gateway.v1.Write2BulkCommandH\x00\x12J\n\x12write_secured_bulk\x18) \x01(\x0b\x32,.mxaccess_gateway.v1.WriteSecuredBulkCommandH\x00\x12L\n\x13write_secured2_bulk\x18* \x01(\x0b\x32-.mxaccess_gateway.v1.WriteSecured2BulkCommandH\x00\x12\x39\n\tread_bulk\x18+ \x01(\x0b\x32$.mxaccess_gateway.v1.ReadBulkCommandH\x00\x12\x30\n\x04ping\x18\x64 \x01(\x0b\x32 .mxaccess_gateway.v1.PingCommandH\x00\x12H\n\x11get_session_state\x18\x65 \x01(\x0b\x32+.mxaccess_gateway.v1.GetSessionStateCommandH\x00\x12\x44\n\x0fget_worker_info\x18\x66 \x01(\x0b\x32).mxaccess_gateway.v1.GetWorkerInfoCommandH\x00\x12?\n\x0c\x64rain_events\x18g \x01(\x0b\x32\'.mxaccess_gateway.v1.DrainEventsCommandH\x00\x12\x45\n\x0fshutdown_worker\x18h \x01(\x0b\x32*.mxaccess_gateway.v1.ShutdownWorkerCommandH\x00\x42\t\n\x07payload\"&\n\x0fRegisterCommand\x12\x13\n\x0b\x63lient_name\x18\x01 \x01(\t\"*\n\x11UnregisterCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"@\n\x0e\x41\x64\x64ItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\"W\n\x0f\x41\x64\x64Item2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"?\n\x11RemoveItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\";\n\rAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0fUnAdviseCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"F\n\x18\x41\x64viseSupervisoryCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"^\n\x16\x41\x64\x64\x42ufferedItemCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x17\n\x0fitem_definition\x18\x02 \x01(\t\x12\x14\n\x0citem_context\x18\x03 \x01(\t\"_\n SetBufferedUpdateIntervalCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12$\n\x1cupdate_interval_milliseconds\x18\x02 \x01(\x05\"<\n\x0eSuspendCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"=\n\x0f\x41\x63tivateCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\"x\n\x0cWriteCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"\xb0\x01\n\rWrite2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x05 \x01(\x05\"\xa1\x01\n\x13WriteSecuredCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\xd9\x01\n\x14WriteSecured2Command\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x03 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"c\n\x17\x41uthenticateUserCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bverify_user\x18\x02 \x01(\t\x12\x1c\n\x14verify_user_password\x18\x03 \x01(\t\"G\n\x18\x41rchestrAUserToIdCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0cuser_id_guid\x18\x02 \x01(\t\"B\n\x12\x41\x64\x64ItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"D\n\x15\x41\x64viseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x15RemoveItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"F\n\x17UnAdviseItemBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"D\n\x14SubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\"\xee\x01\n\x16SubscribeAlarmsCommand\x12\x1f\n\x17subscription_expression\x18\x01 \x01(\t\x12;\n\x0b\x66orced_mode\x18\x02 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12:\n\nwatch_list\x18\x03 \x03(\x0b\x32&.mxaccess_gateway.v1.AlarmSubtagTarget\x12:\n\x08\x66\x61ilover\x18\x04 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmFailoverConfig\"\x1a\n\x18UnsubscribeAlarmsCommand\"\xb4\x01\n\x11\x41larmSubtagTarget\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x15\n\ractive_subtag\x18\x03 \x01(\t\x12\x14\n\x0c\x61\x63ked_subtag\x18\x04 \x01(\t\x12\x1a\n\x12\x61\x63k_comment_subtag\x18\x05 \x01(\t\x12\x17\n\x0fpriority_subtag\x18\x06 \x01(\t\"\x85\x01\n\x13\x41larmFailoverConfig\x12%\n\x1d\x63onsecutive_failure_threshold\x18\x01 \x01(\x05\x12\'\n\x1f\x66\x61ilback_probe_interval_seconds\x18\x02 \x01(\x05\x12\x1e\n\x16\x66\x61ilback_stable_probes\x18\x03 \x01(\x05\"\xa1\x01\n\x17\x41\x63knowledgeAlarmCommand\x12\x12\n\nalarm_guid\x18\x01 \x01(\t\x12\x0f\n\x07\x63omment\x18\x02 \x01(\t\x12\x15\n\roperator_user\x18\x03 \x01(\t\x12\x15\n\roperator_node\x18\x04 \x01(\t\x12\x17\n\x0foperator_domain\x18\x05 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x06 \x01(\t\"7\n\x18QueryActiveAlarmsCommand\x12\x1b\n\x13\x61larm_filter_prefix\x18\x01 \x01(\t\"\xd2\x01\n\x1d\x41\x63knowledgeAlarmByNameCommand\x12\x12\n\nalarm_name\x18\x01 \x01(\t\x12\x15\n\rprovider_name\x18\x02 \x01(\t\x12\x12\n\ngroup_name\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\t\x12\x15\n\roperator_node\x18\x06 \x01(\t\x12\x17\n\x0foperator_domain\x18\x07 \x01(\t\x12\x1a\n\x12operator_full_name\x18\x08 \x01(\t\"E\n\x16UnsubscribeBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x14\n\x0citem_handles\x18\x02 \x03(\x05\"_\n\x10WriteBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x34\n\x07\x65ntries\x18\x02 \x03(\x0b\x32#.mxaccess_gateway.v1.WriteBulkEntry\"c\n\x0eWriteBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x03 \x01(\x05\"a\n\x11Write2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x35\n\x07\x65ntries\x18\x02 \x03(\x0b\x32$.mxaccess_gateway.v1.Write2BulkEntry\"\x9b\x01\n\x0fWrite2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07user_id\x18\x04 \x01(\x05\"m\n\x17WriteSecuredBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12;\n\x07\x65ntries\x18\x02 \x03(\x0b\x32*.mxaccess_gateway.v1.WriteSecuredBulkEntry\"\x8c\x01\n\x15WriteSecuredBulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"o\n\x18WriteSecured2BulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12<\n\x07\x65ntries\x18\x02 \x03(\x0b\x32+.mxaccess_gateway.v1.WriteSecured2BulkEntry\"\xc4\x01\n\x16WriteSecured2BulkEntry\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\x12\x17\n\x0f\x63urrent_user_id\x18\x02 \x01(\x05\x12\x18\n\x10verifier_user_id\x18\x03 \x01(\x05\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x35\n\x0ftimestamp_value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"S\n\x0fReadBulkCommand\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x15\n\rtag_addresses\x18\x02 \x03(\t\x12\x12\n\ntimeout_ms\x18\x03 \x01(\r\"\x1e\n\x0bPingCommand\x12\x0f\n\x07message\x18\x01 \x01(\t\"\x18\n\x16GetSessionStateCommand\"\x16\n\x14GetWorkerInfoCommand\"(\n\x12\x44rainEventsCommand\x12\x12\n\nmax_events\x18\x01 \x01(\r\"H\n\x15ShutdownWorkerCommand\x12/\n\x0cgrace_period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x86\x0f\n\x0eMxCommandReply\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12\x30\n\x04kind\x18\x03 \x01(\x0e\x32\".mxaccess_gateway.v1.MxCommandKind\x12<\n\x0fprotocol_status\x18\x04 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x32\n\x0creturn_value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x34\n\x08statuses\x18\x07 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x08 \x01(\t\x12\x36\n\x08register\x18\x14 \x01(\x0b\x32\".mxaccess_gateway.v1.RegisterReplyH\x00\x12\x35\n\x08\x61\x64\x64_item\x18\x15 \x01(\x0b\x32!.mxaccess_gateway.v1.AddItemReplyH\x00\x12\x37\n\tadd_item2\x18\x16 \x01(\x0b\x32\".mxaccess_gateway.v1.AddItem2ReplyH\x00\x12\x46\n\x11\x61\x64\x64_buffered_item\x18\x17 \x01(\x0b\x32).mxaccess_gateway.v1.AddBufferedItemReplyH\x00\x12\x34\n\x07suspend\x18\x18 \x01(\x0b\x32!.mxaccess_gateway.v1.SuspendReplyH\x00\x12\x36\n\x08\x61\x63tivate\x18\x19 \x01(\x0b\x32\".mxaccess_gateway.v1.ActivateReplyH\x00\x12G\n\x11\x61uthenticate_user\x18\x1a \x01(\x0b\x32*.mxaccess_gateway.v1.AuthenticateUserReplyH\x00\x12K\n\x14\x61rchestra_user_to_id\x18\x1b \x01(\x0b\x32+.mxaccess_gateway.v1.ArchestrAUserToIdReplyH\x00\x12@\n\radd_item_bulk\x18\x1c \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10\x61\x64vise_item_bulk\x18\x1d \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10remove_item_bulk\x18\x1e \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x46\n\x13un_advise_item_bulk\x18\x1f \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x41\n\x0esubscribe_bulk\x18 \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12\x43\n\x10unsubscribe_bulk\x18! \x01(\x0b\x32\'.mxaccess_gateway.v1.BulkSubscribeReplyH\x00\x12N\n\x11\x61\x63knowledge_alarm\x18\" \x01(\x0b\x32\x31.mxaccess_gateway.v1.AcknowledgeAlarmReplyPayloadH\x00\x12Q\n\x13query_active_alarms\x18# \x01(\x0b\x32\x32.mxaccess_gateway.v1.QueryActiveAlarmsReplyPayloadH\x00\x12\x39\n\nwrite_bulk\x18$ \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12:\n\x0bwrite2_bulk\x18% \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x41\n\x12write_secured_bulk\x18& \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x42\n\x13write_secured2_bulk\x18\' \x01(\x0b\x32#.mxaccess_gateway.v1.BulkWriteReplyH\x00\x12\x37\n\tread_bulk\x18( \x01(\x0b\x32\".mxaccess_gateway.v1.BulkReadReplyH\x00\x12?\n\rsession_state\x18\x64 \x01(\x0b\x32&.mxaccess_gateway.v1.SessionStateReplyH\x00\x12;\n\x0bworker_info\x18\x65 \x01(\x0b\x32$.mxaccess_gateway.v1.WorkerInfoReplyH\x00\x12=\n\x0c\x64rain_events\x18\x66 \x01(\x0b\x32%.mxaccess_gateway.v1.DrainEventsReplyH\x00\x42\t\n\x07payloadB\n\n\x08_hresult\"&\n\rRegisterReply\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\"#\n\x0c\x41\x64\x64ItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"$\n\rAddItem2Reply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"+\n\x14\x41\x64\x64\x42ufferedItemReply\x12\x13\n\x0bitem_handle\x18\x01 \x01(\x05\"B\n\x0cSuspendReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"C\n\rActivateReply\x12\x32\n\x06status\x18\x01 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\"(\n\x15\x41uthenticateUserReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\")\n\x16\x41rchestrAUserToIdReply\x12\x0f\n\x07user_id\x18\x01 \x01(\x05\"\x81\x01\n\x0fSubscribeResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x15\n\rerror_message\x18\x05 \x01(\t\"K\n\x12\x42ulkSubscribeReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.SubscribeResult\"\xc4\x01\n\x0f\x42ulkWriteResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x02 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x03 \x01(\x08\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x34\n\x08statuses\x18\x05 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\x06 \x01(\tB\n\n\x08_hresult\"G\n\x0e\x42ulkWriteReply\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.mxaccess_gateway.v1.BulkWriteResult\"\xbe\x02\n\x0e\x42ulkReadResult\x12\x15\n\rserver_handle\x18\x01 \x01(\x05\x12\x13\n\x0btag_address\x18\x02 \x01(\t\x12\x13\n\x0bitem_handle\x18\x03 \x01(\x05\x12\x16\n\x0ewas_successful\x18\x04 \x01(\x08\x12\x12\n\nwas_cached\x18\x05 \x01(\x08\x12+\n\x05value\x18\x06 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x07 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\t \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x15\n\rerror_message\x18\n \x01(\t\"E\n\rBulkReadReply\x12\x34\n\x07results\x18\x01 \x03(\x0b\x32#.mxaccess_gateway.v1.BulkReadResult\"E\n\x11SessionStateReply\x12\x30\n\x05state\x18\x01 \x01(\x0e\x32!.mxaccess_gateway.v1.SessionState\"u\n\x0fWorkerInfoReply\x12\x19\n\x11worker_process_id\x18\x01 \x01(\x05\x12\x16\n\x0eworker_version\x18\x02 \x01(\t\x12\x17\n\x0fmxaccess_progid\x18\x03 \x01(\t\x12\x16\n\x0emxaccess_clsid\x18\x04 \x01(\t\"@\n\x10\x44rainEventsReply\x12,\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x1c.mxaccess_gateway.v1.MxEvent\"5\n\x1c\x41\x63knowledgeAlarmReplyPayload\x12\x15\n\rnative_status\x18\x01 \x01(\x05\"x\n\x1dQueryActiveAlarmsReplyPayload\x12;\n\tsnapshots\x18\x01 \x03(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshot\x12\x1a\n\x12snapshot_truncated\x18\x02 \x01(\x08\"\x8f\x08\n\x07MxEvent\x12\x32\n\x06\x66\x61mily\x18\x01 \x01(\x0e\x32\".mxaccess_gateway.v1.MxEventFamily\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\x15\n\rserver_handle\x18\x03 \x01(\x05\x12\x13\n\x0bitem_handle\x18\x04 \x01(\x05\x12+\n\x05value\x18\x05 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x0f\n\x07quality\x18\x06 \x01(\x05\x12\x34\n\x10source_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\x08statuses\x18\x08 \x03(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x17\n\x0fworker_sequence\x18\t \x01(\x04\x12\x34\n\x10worker_timestamp\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\x19gateway_receive_timestamp\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x07hresult\x18\x0c \x01(\x05H\x01\x88\x01\x01\x12\x12\n\nraw_status\x18\r \x01(\t\x12\x37\n\nreplay_gap\x18\x0e \x01(\x0b\x32\x1e.mxaccess_gateway.v1.ReplayGapH\x02\x88\x01\x01\x12@\n\x0eon_data_change\x18\x14 \x01(\x0b\x32&.mxaccess_gateway.v1.OnDataChangeEventH\x00\x12\x46\n\x11on_write_complete\x18\x15 \x01(\x0b\x32).mxaccess_gateway.v1.OnWriteCompleteEventH\x00\x12I\n\x12operation_complete\x18\x16 \x01(\x0b\x32+.mxaccess_gateway.v1.OperationCompleteEventH\x00\x12Q\n\x17on_buffered_data_change\x18\x17 \x01(\x0b\x32..mxaccess_gateway.v1.OnBufferedDataChangeEventH\x00\x12J\n\x13on_alarm_transition\x18\x18 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x12^\n\x1eon_alarm_provider_mode_changed\x18\x19 \x01(\x0b\x32\x34.mxaccess_gateway.v1.OnAlarmProviderModeChangedEventH\x00\x42\x06\n\x04\x62odyB\n\n\x08_hresultB\r\n\x0b_replay_gap\"P\n\tReplayGap\x12 \n\x18requested_after_sequence\x18\x01 \x01(\x04\x12!\n\x19oldest_available_sequence\x18\x02 \x01(\x04\"\x13\n\x11OnDataChangeEvent\"\x16\n\x14OnWriteCompleteEvent\"\x18\n\x16OperationCompleteEvent\"\xd4\x01\n\x19OnBufferedDataChangeEvent\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x34\n\x0equality_values\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x36\n\x10timestamp_values\x18\x03 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArray\x12\x15\n\rraw_data_type\x18\x04 \x01(\x05\"\xd0\x04\n\x16OnAlarmTransitionEvent\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x41\n\x0ftransition_kind\x18\x04 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmTransitionKind\x12\x10\n\x08severity\x18\x05 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14transition_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\x08 \x01(\t\x12\x18\n\x10operator_comment\x18\t \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\n \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x10\n\x08\x64\x65graded\x18\x0e \x01(\x08\x12?\n\x0fsource_provider\x18\x0f \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\"\xa0\x01\n\x1fOnAlarmProviderModeChangedEvent\x12\x34\n\x04mode\x18\x01 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12\x0f\n\x07hresult\x18\x03 \x01(\x05\x12&\n\x02\x61t\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xf1\x04\n\x13\x41\x63tiveAlarmSnapshot\x12\x1c\n\x14\x61larm_full_reference\x18\x01 \x01(\t\x12\x1f\n\x17source_object_reference\x18\x02 \x01(\t\x12\x17\n\x0f\x61larm_type_name\x18\x03 \x01(\t\x12\x10\n\x08severity\x18\x04 \x01(\x05\x12<\n\x18original_raise_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12?\n\rcurrent_state\x18\x06 \x01(\x0e\x32(.mxaccess_gateway.v1.AlarmConditionState\x12\x10\n\x08\x63\x61tegory\x18\x07 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12=\n\x19last_transition_timestamp\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\roperator_user\x18\n \x01(\t\x12\x18\n\x10operator_comment\x18\x0b \x01(\t\x12\x33\n\rcurrent_value\x18\x0c \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x31\n\x0blimit_value\x18\r \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\x12\x10\n\x08\x64\x65graded\x18\x0e \x01(\x08\x12?\n\x0fsource_provider\x18\x0f \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x1f\n\x17\x66rom_truncated_snapshot\x18\x10 \x01(\x08\"\x90\x01\n\x17\x41\x63knowledgeAlarmRequest\x12\x1d\n\x15\x63lient_correlation_id\x18\x02 \x01(\t\x12\x1c\n\x14\x61larm_full_reference\x18\x03 \x01(\t\x12\x0f\n\x07\x63omment\x18\x04 \x01(\t\x12\x15\n\roperator_user\x18\x05 \x01(\tJ\x04\x08\x01\x10\x02R\nsession_id\"\xf1\x01\n\x15\x41\x63knowledgeAlarmReply\x12\x16\n\x0e\x63orrelation_id\x18\x02 \x01(\t\x12<\n\x0fprotocol_status\x18\x03 \x01(\x0b\x32#.mxaccess_gateway.v1.ProtocolStatus\x12\x14\n\x07hresult\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06status\x18\x05 \x01(\x0b\x32\".mxaccess_gateway.v1.MxStatusProxy\x12\x1a\n\x12\x64iagnostic_message\x18\x06 \x01(\tB\n\n\x08_hresultJ\x04\x08\x01\x10\x02R\nsession_id\"Q\n\x13StreamAlarmsRequest\x12\x1d\n\x15\x63lient_correlation_id\x18\x01 \x01(\t\x12\x1b\n\x13\x61larm_filter_prefix\x18\x02 \x01(\t\"\xc9\x02\n\x10\x41larmFeedMessage\x12@\n\x0c\x61\x63tive_alarm\x18\x01 \x01(\x0b\x32(.mxaccess_gateway.v1.ActiveAlarmSnapshotH\x00\x12\x1b\n\x11snapshot_complete\x18\x02 \x01(\x08H\x00\x12\x41\n\ntransition\x18\x03 \x01(\x0b\x32+.mxaccess_gateway.v1.OnAlarmTransitionEventH\x00\x12\x43\n\x0fprovider_status\x18\x04 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmProviderStatusH\x00\x12\x43\n\x0fsnapshot_status\x18\x05 \x01(\x0b\x32(.mxaccess_gateway.v1.AlarmSnapshotStatusH\x00\x42\t\n\x07payload\"\x98\x01\n\x13\x41larmProviderStatus\x12\x34\n\x04mode\x18\x01 \x01(\x0e\x32&.mxaccess_gateway.v1.AlarmProviderMode\x12\x10\n\x08\x64\x65graded\x18\x02 \x01(\x08\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12)\n\x05since\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"(\n\x13\x41larmSnapshotStatus\x12\x11\n\ttruncated\x18\x01 \x01(\x08\"\xeb\x01\n\rMxStatusProxy\x12\x0f\n\x07success\x18\x01 \x01(\x05\x12\x37\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32%.mxaccess_gateway.v1.MxStatusCategory\x12\x38\n\x0b\x64\x65tected_by\x18\x03 \x01(\x0e\x32#.mxaccess_gateway.v1.MxStatusSource\x12\x0e\n\x06\x64\x65tail\x18\x04 \x01(\x05\x12\x14\n\x0craw_category\x18\x05 \x01(\x05\x12\x17\n\x0fraw_detected_by\x18\x06 \x01(\x05\x12\x17\n\x0f\x64iagnostic_text\x18\x07 \x01(\t\"\xe9\x03\n\x07MxValue\x12\x32\n\tdata_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x0f\n\x07is_null\x18\x03 \x01(\x08\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x15\n\rraw_data_type\x18\x05 \x01(\x05\x12\x14\n\nbool_value\x18\n \x01(\x08H\x00\x12\x15\n\x0bint32_value\x18\x0b \x01(\x05H\x00\x12\x15\n\x0bint64_value\x18\x0c \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\r \x01(\x02H\x00\x12\x16\n\x0c\x64ouble_value\x18\x0e \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x0f \x01(\tH\x00\x12\x35\n\x0ftimestamp_value\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12\x33\n\x0b\x61rray_value\x18\x11 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxArrayH\x00\x12\x13\n\traw_value\x18\x12 \x01(\x0cH\x00\x12@\n\x12sparse_array_value\x18\x13 \x01(\x0b\x32\".mxaccess_gateway.v1.MxSparseArrayH\x00\x42\x06\n\x04kind\"\xfe\x04\n\x07MxArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x12\n\ndimensions\x18\x03 \x03(\r\x12\x16\n\x0eraw_diagnostic\x18\x04 \x01(\t\x12\x1d\n\x15raw_element_data_type\x18\x05 \x01(\x05\x12\x35\n\x0b\x62ool_values\x18\n \x01(\x0b\x32\x1e.mxaccess_gateway.v1.BoolArrayH\x00\x12\x37\n\x0cint32_values\x18\x0b \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int32ArrayH\x00\x12\x37\n\x0cint64_values\x18\x0c \x01(\x0b\x32\x1f.mxaccess_gateway.v1.Int64ArrayH\x00\x12\x37\n\x0c\x66loat_values\x18\r \x01(\x0b\x32\x1f.mxaccess_gateway.v1.FloatArrayH\x00\x12\x39\n\rdouble_values\x18\x0e \x01(\x0b\x32 .mxaccess_gateway.v1.DoubleArrayH\x00\x12\x39\n\rstring_values\x18\x0f \x01(\x0b\x32 .mxaccess_gateway.v1.StringArrayH\x00\x12?\n\x10timestamp_values\x18\x10 \x01(\x0b\x32#.mxaccess_gateway.v1.TimestampArrayH\x00\x12\x33\n\nraw_values\x18\x11 \x01(\x0b\x32\x1d.mxaccess_gateway.v1.RawArrayH\x00\x42\x08\n\x06values\"\x99\x01\n\rMxSparseArray\x12:\n\x11\x65lement_data_type\x18\x01 \x01(\x0e\x32\x1f.mxaccess_gateway.v1.MxDataType\x12\x14\n\x0ctotal_length\x18\x02 \x01(\r\x12\x36\n\x08\x65lements\x18\x03 \x03(\x0b\x32$.mxaccess_gateway.v1.MxSparseElement\"M\n\x0fMxSparseElement\x12\r\n\x05index\x18\x01 \x01(\r\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.mxaccess_gateway.v1.MxValue\"\x1b\n\tBoolArray\x12\x0e\n\x06values\x18\x01 \x03(\x08\"\x1c\n\nInt32Array\x12\x0e\n\x06values\x18\x01 \x03(\x05\"\x1c\n\nInt64Array\x12\x0e\n\x06values\x18\x01 \x03(\x03\"\x1c\n\nFloatArray\x12\x0e\n\x06values\x18\x01 \x03(\x02\"\x1d\n\x0b\x44oubleArray\x12\x0e\n\x06values\x18\x01 \x03(\x01\"\x1d\n\x0bStringArray\x12\x0e\n\x06values\x18\x01 \x03(\t\"<\n\x0eTimestampArray\x12*\n\x06values\x18\x01 \x03(\x0b\x32\x1a.google.protobuf.Timestamp\"\x1a\n\x08RawArray\x12\x0e\n\x06values\x18\x01 \x03(\x0c\"X\n\x0eProtocolStatus\x12\x35\n\x04\x63ode\x18\x01 \x01(\x0e\x32\'.mxaccess_gateway.v1.ProtocolStatusCode\x12\x0f\n\x07message\x18\x02 \x01(\t*\x9f\x0b\n\rMxCommandKind\x12\x1f\n\x1bMX_COMMAND_KIND_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_COMMAND_KIND_REGISTER\x10\x01\x12\x1e\n\x1aMX_COMMAND_KIND_UNREGISTER\x10\x02\x12\x1c\n\x18MX_COMMAND_KIND_ADD_ITEM\x10\x03\x12\x1d\n\x19MX_COMMAND_KIND_ADD_ITEM2\x10\x04\x12\x1f\n\x1bMX_COMMAND_KIND_REMOVE_ITEM\x10\x05\x12\x1a\n\x16MX_COMMAND_KIND_ADVISE\x10\x06\x12\x1d\n\x19MX_COMMAND_KIND_UN_ADVISE\x10\x07\x12&\n\"MX_COMMAND_KIND_ADVISE_SUPERVISORY\x10\x08\x12%\n!MX_COMMAND_KIND_ADD_BUFFERED_ITEM\x10\t\x12\x30\n,MX_COMMAND_KIND_SET_BUFFERED_UPDATE_INTERVAL\x10\n\x12\x1b\n\x17MX_COMMAND_KIND_SUSPEND\x10\x0b\x12\x1c\n\x18MX_COMMAND_KIND_ACTIVATE\x10\x0c\x12\x19\n\x15MX_COMMAND_KIND_WRITE\x10\r\x12\x1a\n\x16MX_COMMAND_KIND_WRITE2\x10\x0e\x12!\n\x1dMX_COMMAND_KIND_WRITE_SECURED\x10\x0f\x12\"\n\x1eMX_COMMAND_KIND_WRITE_SECURED2\x10\x10\x12%\n!MX_COMMAND_KIND_AUTHENTICATE_USER\x10\x11\x12(\n$MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID\x10\x12\x12!\n\x1dMX_COMMAND_KIND_ADD_ITEM_BULK\x10\x13\x12$\n MX_COMMAND_KIND_ADVISE_ITEM_BULK\x10\x14\x12$\n MX_COMMAND_KIND_REMOVE_ITEM_BULK\x10\x15\x12\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK\x10\x16\x12\"\n\x1eMX_COMMAND_KIND_SUBSCRIBE_BULK\x10\x17\x12$\n MX_COMMAND_KIND_UNSUBSCRIBE_BULK\x10\x18\x12$\n MX_COMMAND_KIND_SUBSCRIBE_ALARMS\x10\x19\x12&\n\"MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS\x10\x1a\x12%\n!MX_COMMAND_KIND_ACKNOWLEDGE_ALARM\x10\x1b\x12\'\n#MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS\x10\x1c\x12-\n)MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME\x10\x1d\x12\x1e\n\x1aMX_COMMAND_KIND_WRITE_BULK\x10\x1e\x12\x1f\n\x1bMX_COMMAND_KIND_WRITE2_BULK\x10\x1f\x12&\n\"MX_COMMAND_KIND_WRITE_SECURED_BULK\x10 \x12\'\n#MX_COMMAND_KIND_WRITE_SECURED2_BULK\x10!\x12\x1d\n\x19MX_COMMAND_KIND_READ_BULK\x10\"\x12\x18\n\x14MX_COMMAND_KIND_PING\x10\x64\x12%\n!MX_COMMAND_KIND_GET_SESSION_STATE\x10\x65\x12#\n\x1fMX_COMMAND_KIND_GET_WORKER_INFO\x10\x66\x12 \n\x1cMX_COMMAND_KIND_DRAIN_EVENTS\x10g\x12#\n\x1fMX_COMMAND_KIND_SHUTDOWN_WORKER\x10h*z\n\x11\x41larmProviderMode\x12#\n\x1f\x41LARM_PROVIDER_MODE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_PROVIDER_MODE_ALARMMGR\x10\x01\x12\x1e\n\x1a\x41LARM_PROVIDER_MODE_SUBTAG\x10\x02*\xad\x02\n\rMxEventFamily\x12\x1f\n\x1bMX_EVENT_FAMILY_UNSPECIFIED\x10\x00\x12\"\n\x1eMX_EVENT_FAMILY_ON_DATA_CHANGE\x10\x01\x12%\n!MX_EVENT_FAMILY_ON_WRITE_COMPLETE\x10\x02\x12&\n\"MX_EVENT_FAMILY_OPERATION_COMPLETE\x10\x03\x12+\n\'MX_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE\x10\x04\x12\'\n#MX_EVENT_FAMILY_ON_ALARM_TRANSITION\x10\x05\x12\x32\n.MX_EVENT_FAMILY_ON_ALARM_PROVIDER_MODE_CHANGED\x10\x06*\xca\x01\n\x13\x41larmTransitionKind\x12%\n!ALARM_TRANSITION_KIND_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_RAISE\x10\x01\x12%\n!ALARM_TRANSITION_KIND_ACKNOWLEDGE\x10\x02\x12\x1f\n\x1b\x41LARM_TRANSITION_KIND_CLEAR\x10\x03\x12#\n\x1f\x41LARM_TRANSITION_KIND_RETRIGGER\x10\x04*\xaa\x01\n\x13\x41larmConditionState\x12%\n!ALARM_CONDITION_STATE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41LARM_CONDITION_STATE_ACTIVE\x10\x01\x12&\n\"ALARM_CONDITION_STATE_ACTIVE_ACKED\x10\x02\x12\"\n\x1e\x41LARM_CONDITION_STATE_INACTIVE\x10\x03*\xa5\x03\n\x10MxStatusCategory\x12\"\n\x1eMX_STATUS_CATEGORY_UNSPECIFIED\x10\x00\x12\x1e\n\x1aMX_STATUS_CATEGORY_UNKNOWN\x10\x01\x12\x19\n\x15MX_STATUS_CATEGORY_OK\x10\x02\x12\x1e\n\x1aMX_STATUS_CATEGORY_PENDING\x10\x03\x12\x1e\n\x1aMX_STATUS_CATEGORY_WARNING\x10\x04\x12*\n&MX_STATUS_CATEGORY_COMMUNICATION_ERROR\x10\x05\x12*\n&MX_STATUS_CATEGORY_CONFIGURATION_ERROR\x10\x06\x12(\n$MX_STATUS_CATEGORY_OPERATIONAL_ERROR\x10\x07\x12%\n!MX_STATUS_CATEGORY_SECURITY_ERROR\x10\x08\x12%\n!MX_STATUS_CATEGORY_SOFTWARE_ERROR\x10\t\x12\"\n\x1eMX_STATUS_CATEGORY_OTHER_ERROR\x10\n*\xca\x02\n\x0eMxStatusSource\x12 \n\x1cMX_STATUS_SOURCE_UNSPECIFIED\x10\x00\x12\x1c\n\x18MX_STATUS_SOURCE_UNKNOWN\x10\x01\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_LMX\x10\x02\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_LMX\x10\x03\x12#\n\x1fMX_STATUS_SOURCE_REQUESTING_NMX\x10\x04\x12#\n\x1fMX_STATUS_SOURCE_RESPONDING_NMX\x10\x05\x12\x31\n-MX_STATUS_SOURCE_REQUESTING_AUTOMATION_OBJECT\x10\x06\x12\x31\n-MX_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJECT\x10\x07*\xdd\x04\n\nMxDataType\x12\x1c\n\x18MX_DATA_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14MX_DATA_TYPE_UNKNOWN\x10\x01\x12\x18\n\x14MX_DATA_TYPE_NO_DATA\x10\x02\x12\x18\n\x14MX_DATA_TYPE_BOOLEAN\x10\x03\x12\x18\n\x14MX_DATA_TYPE_INTEGER\x10\x04\x12\x16\n\x12MX_DATA_TYPE_FLOAT\x10\x05\x12\x17\n\x13MX_DATA_TYPE_DOUBLE\x10\x06\x12\x17\n\x13MX_DATA_TYPE_STRING\x10\x07\x12\x15\n\x11MX_DATA_TYPE_TIME\x10\x08\x12\x1d\n\x19MX_DATA_TYPE_ELAPSED_TIME\x10\t\x12\x1f\n\x1bMX_DATA_TYPE_REFERENCE_TYPE\x10\n\x12\x1c\n\x18MX_DATA_TYPE_STATUS_TYPE\x10\x0b\x12\x15\n\x11MX_DATA_TYPE_ENUM\x10\x0c\x12-\n)MX_DATA_TYPE_SECURITY_CLASSIFICATION_ENUM\x10\r\x12\"\n\x1eMX_DATA_TYPE_DATA_QUALITY_TYPE\x10\x0e\x12\x1f\n\x1bMX_DATA_TYPE_QUALIFIED_ENUM\x10\x0f\x12!\n\x1dMX_DATA_TYPE_QUALIFIED_STRUCT\x10\x10\x12)\n%MX_DATA_TYPE_INTERNATIONALIZED_STRING\x10\x11\x12\x1b\n\x17MX_DATA_TYPE_BIG_STRING\x10\x12\x12\x14\n\x10MX_DATA_TYPE_END\x10\x13*\xa3\x03\n\x12ProtocolStatusCode\x12$\n PROTOCOL_STATUS_CODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17PROTOCOL_STATUS_CODE_OK\x10\x01\x12(\n$PROTOCOL_STATUS_CODE_INVALID_REQUEST\x10\x02\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND\x10\x03\x12*\n&PROTOCOL_STATUS_CODE_SESSION_NOT_READY\x10\x04\x12+\n\'PROTOCOL_STATUS_CODE_WORKER_UNAVAILABLE\x10\x05\x12 \n\x1cPROTOCOL_STATUS_CODE_TIMEOUT\x10\x06\x12!\n\x1dPROTOCOL_STATUS_CODE_CANCELED\x10\x07\x12+\n\'PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION\x10\x08\x12)\n%PROTOCOL_STATUS_CODE_MXACCESS_FAILURE\x10\t*\xbf\x02\n\x0cSessionState\x12\x1d\n\x19SESSION_STATE_UNSPECIFIED\x10\x00\x12\x1a\n\x16SESSION_STATE_CREATING\x10\x01\x12!\n\x1dSESSION_STATE_STARTING_WORKER\x10\x02\x12\"\n\x1eSESSION_STATE_WAITING_FOR_PIPE\x10\x03\x12\x1d\n\x19SESSION_STATE_HANDSHAKING\x10\x04\x12%\n!SESSION_STATE_INITIALIZING_WORKER\x10\x05\x12\x17\n\x13SESSION_STATE_READY\x10\x06\x12\x19\n\x15SESSION_STATE_CLOSING\x10\x07\x12\x18\n\x14SESSION_STATE_CLOSED\x10\x08\x12\x19\n\x15SESSION_STATE_FAULTED\x10\t2\xc3\x05\n\x0fMxAccessGateway\x12]\n\x0bOpenSession\x12\'.mxaccess_gateway.v1.OpenSessionRequest\x1a%.mxaccess_gateway.v1.OpenSessionReply\x12`\n\x0c\x43loseSession\x12(.mxaccess_gateway.v1.CloseSessionRequest\x1a&.mxaccess_gateway.v1.CloseSessionReply\x12T\n\x06Invoke\x12%.mxaccess_gateway.v1.MxCommandRequest\x1a#.mxaccess_gateway.v1.MxCommandReply\x12X\n\x0cStreamEvents\x12(.mxaccess_gateway.v1.StreamEventsRequest\x1a\x1c.mxaccess_gateway.v1.MxEvent0\x01\x12l\n\x10\x41\x63knowledgeAlarm\x12,.mxaccess_gateway.v1.AcknowledgeAlarmRequest\x1a*.mxaccess_gateway.v1.AcknowledgeAlarmReply\x12\x61\n\x0cStreamAlarms\x12(.mxaccess_gateway.v1.StreamAlarmsRequest\x1a%.mxaccess_gateway.v1.AlarmFeedMessage0\x01\x12n\n\x11QueryActiveAlarms\x12-.mxaccess_gateway.v1.QueryActiveAlarmsRequest\x1a(.mxaccess_gateway.v1.ActiveAlarmSnapshot0\x01\x42&\xaa\x02#ZB.MOM.WW.MxGateway.Contracts.Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,26 +34,26 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mxaccess_gateway_pb2', _glo if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\252\002#ZB.MOM.WW.MxGateway.Contracts.Proto' - _globals['_MXCOMMANDKIND']._serialized_start=17563 - _globals['_MXCOMMANDKIND']._serialized_end=19002 - _globals['_ALARMPROVIDERMODE']._serialized_start=19004 - _globals['_ALARMPROVIDERMODE']._serialized_end=19126 - _globals['_MXEVENTFAMILY']._serialized_start=19129 - _globals['_MXEVENTFAMILY']._serialized_end=19430 - _globals['_ALARMTRANSITIONKIND']._serialized_start=19433 - _globals['_ALARMTRANSITIONKIND']._serialized_end=19635 - _globals['_ALARMCONDITIONSTATE']._serialized_start=19638 - _globals['_ALARMCONDITIONSTATE']._serialized_end=19808 - _globals['_MXSTATUSCATEGORY']._serialized_start=19811 - _globals['_MXSTATUSCATEGORY']._serialized_end=20232 - _globals['_MXSTATUSSOURCE']._serialized_start=20235 - _globals['_MXSTATUSSOURCE']._serialized_end=20565 - _globals['_MXDATATYPE']._serialized_start=20568 - _globals['_MXDATATYPE']._serialized_end=21173 - _globals['_PROTOCOLSTATUSCODE']._serialized_start=21176 - _globals['_PROTOCOLSTATUSCODE']._serialized_end=21595 - _globals['_SESSIONSTATE']._serialized_start=21598 - _globals['_SESSIONSTATE']._serialized_end=21917 + _globals['_MXCOMMANDKIND']._serialized_start=17674 + _globals['_MXCOMMANDKIND']._serialized_end=19113 + _globals['_ALARMPROVIDERMODE']._serialized_start=19115 + _globals['_ALARMPROVIDERMODE']._serialized_end=19237 + _globals['_MXEVENTFAMILY']._serialized_start=19240 + _globals['_MXEVENTFAMILY']._serialized_end=19541 + _globals['_ALARMTRANSITIONKIND']._serialized_start=19544 + _globals['_ALARMTRANSITIONKIND']._serialized_end=19746 + _globals['_ALARMCONDITIONSTATE']._serialized_start=19749 + _globals['_ALARMCONDITIONSTATE']._serialized_end=19919 + _globals['_MXSTATUSCATEGORY']._serialized_start=19922 + _globals['_MXSTATUSCATEGORY']._serialized_end=20343 + _globals['_MXSTATUSSOURCE']._serialized_start=20346 + _globals['_MXSTATUSSOURCE']._serialized_end=20676 + _globals['_MXDATATYPE']._serialized_start=20679 + _globals['_MXDATATYPE']._serialized_end=21284 + _globals['_PROTOCOLSTATUSCODE']._serialized_start=21287 + _globals['_PROTOCOLSTATUSCODE']._serialized_end=21706 + _globals['_SESSIONSTATE']._serialized_start=21709 + _globals['_SESSIONSTATE']._serialized_end=22028 _globals['_QUERYACTIVEALARMSREQUEST']._serialized_start=112 _globals['_QUERYACTIVEALARMSREQUEST']._serialized_end=218 _globals['_OPENSESSIONREQUEST']._serialized_start=221 @@ -225,37 +225,39 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['_STREAMALARMSREQUEST']._serialized_start=15094 _globals['_STREAMALARMSREQUEST']._serialized_end=15175 _globals['_ALARMFEEDMESSAGE']._serialized_start=15178 - _globals['_ALARMFEEDMESSAGE']._serialized_end=15438 - _globals['_ALARMPROVIDERSTATUS']._serialized_start=15441 - _globals['_ALARMPROVIDERSTATUS']._serialized_end=15593 - _globals['_MXSTATUSPROXY']._serialized_start=15596 - _globals['_MXSTATUSPROXY']._serialized_end=15831 - _globals['_MXVALUE']._serialized_start=15834 - _globals['_MXVALUE']._serialized_end=16323 - _globals['_MXARRAY']._serialized_start=16326 - _globals['_MXARRAY']._serialized_end=16964 - _globals['_MXSPARSEARRAY']._serialized_start=16967 - _globals['_MXSPARSEARRAY']._serialized_end=17120 - _globals['_MXSPARSEELEMENT']._serialized_start=17122 - _globals['_MXSPARSEELEMENT']._serialized_end=17199 - _globals['_BOOLARRAY']._serialized_start=17201 - _globals['_BOOLARRAY']._serialized_end=17228 - _globals['_INT32ARRAY']._serialized_start=17230 - _globals['_INT32ARRAY']._serialized_end=17258 - _globals['_INT64ARRAY']._serialized_start=17260 - _globals['_INT64ARRAY']._serialized_end=17288 - _globals['_FLOATARRAY']._serialized_start=17290 - _globals['_FLOATARRAY']._serialized_end=17318 - _globals['_DOUBLEARRAY']._serialized_start=17320 - _globals['_DOUBLEARRAY']._serialized_end=17349 - _globals['_STRINGARRAY']._serialized_start=17351 - _globals['_STRINGARRAY']._serialized_end=17380 - _globals['_TIMESTAMPARRAY']._serialized_start=17382 - _globals['_TIMESTAMPARRAY']._serialized_end=17442 - _globals['_RAWARRAY']._serialized_start=17444 - _globals['_RAWARRAY']._serialized_end=17470 - _globals['_PROTOCOLSTATUS']._serialized_start=17472 - _globals['_PROTOCOLSTATUS']._serialized_end=17560 - _globals['_MXACCESSGATEWAY']._serialized_start=21920 - _globals['_MXACCESSGATEWAY']._serialized_end=22627 + _globals['_ALARMFEEDMESSAGE']._serialized_end=15507 + _globals['_ALARMPROVIDERSTATUS']._serialized_start=15510 + _globals['_ALARMPROVIDERSTATUS']._serialized_end=15662 + _globals['_ALARMSNAPSHOTSTATUS']._serialized_start=15664 + _globals['_ALARMSNAPSHOTSTATUS']._serialized_end=15704 + _globals['_MXSTATUSPROXY']._serialized_start=15707 + _globals['_MXSTATUSPROXY']._serialized_end=15942 + _globals['_MXVALUE']._serialized_start=15945 + _globals['_MXVALUE']._serialized_end=16434 + _globals['_MXARRAY']._serialized_start=16437 + _globals['_MXARRAY']._serialized_end=17075 + _globals['_MXSPARSEARRAY']._serialized_start=17078 + _globals['_MXSPARSEARRAY']._serialized_end=17231 + _globals['_MXSPARSEELEMENT']._serialized_start=17233 + _globals['_MXSPARSEELEMENT']._serialized_end=17310 + _globals['_BOOLARRAY']._serialized_start=17312 + _globals['_BOOLARRAY']._serialized_end=17339 + _globals['_INT32ARRAY']._serialized_start=17341 + _globals['_INT32ARRAY']._serialized_end=17369 + _globals['_INT64ARRAY']._serialized_start=17371 + _globals['_INT64ARRAY']._serialized_end=17399 + _globals['_FLOATARRAY']._serialized_start=17401 + _globals['_FLOATARRAY']._serialized_end=17429 + _globals['_DOUBLEARRAY']._serialized_start=17431 + _globals['_DOUBLEARRAY']._serialized_end=17460 + _globals['_STRINGARRAY']._serialized_start=17462 + _globals['_STRINGARRAY']._serialized_end=17491 + _globals['_TIMESTAMPARRAY']._serialized_start=17493 + _globals['_TIMESTAMPARRAY']._serialized_end=17553 + _globals['_RAWARRAY']._serialized_start=17555 + _globals['_RAWARRAY']._serialized_end=17581 + _globals['_PROTOCOLSTATUS']._serialized_start=17583 + _globals['_PROTOCOLSTATUS']._serialized_end=17671 + _globals['_MXACCESSGATEWAY']._serialized_start=22031 + _globals['_MXACCESSGATEWAY']._serialized_end=22738 # @@protoc_insertion_point(module_scope) diff --git a/clients/rust/README.md b/clients/rust/README.md index bc72195..f8853d9 100644 --- a/clients/rust/README.md +++ b/clients/rust/README.md @@ -132,6 +132,15 @@ poll. Treat the set as possibly incomplete rather than reconciling deletions from it. It is set-level degraded status, not a comment on the record's own fidelity, and is distinct from `degraded` (the subtag fallback provider). +`AlarmFeedStream` also carries that completeness verdict at feed level, as an +`alarm_feed_message::Payload::SnapshotStatus` frame whose `truncated` field is +true while the monitor's cached set derives from a truncated fetch. One arrives +at stream open (after the `ProviderStatus` frame, before the cached +`ActiveAlarm` frames) so a late joiner learns the current verdict, then one on +every verdict change — including the clearing frame sent when the gateway's +alarm monitor restarts and drops a truncated verdict. Track it if you need set +completeness on a live feed without polling `query_active_alarms`. + The session helpers keep MXAccess handles visible: ```rust diff --git a/clients/rust/crates/mxgw-cli/src/main.rs b/clients/rust/crates/mxgw-cli/src/main.rs index e28d0b5..1529835 100644 --- a/clients/rust/crates/mxgw-cli/src/main.rs +++ b/clients/rust/crates/mxgw-cli/src/main.rs @@ -2231,7 +2231,7 @@ fn event_value_to_json(value: &ProtoMxValue) -> Value { } /// Render a streamed [`AlarmFeedMessage`] as a terse one-line summary that -/// distinguishes the four `payload` oneof cases. +/// distinguishes the five `payload` oneof cases. fn alarm_feed_message_summary(message: &AlarmFeedMessage) -> String { match &message.payload { Some(alarm_feed_message::Payload::ActiveAlarm(snapshot)) => { @@ -2259,6 +2259,9 @@ fn alarm_feed_message_summary(message: &AlarmFeedMessage) -> String { status.reason ) } + Some(alarm_feed_message::Payload::SnapshotStatus(status)) => { + format!("snapshot-status truncated={}", status.truncated) + } None => "(empty)".to_owned(), } } @@ -2308,6 +2311,11 @@ fn alarm_feed_message_to_json(message: &AlarmFeedMessage) -> Value { })), } }), + Some(alarm_feed_message::Payload::SnapshotStatus(status)) => json!({ + "snapshotStatus": { + "truncated": status.truncated, + } + }), None => Value::Null, } } diff --git a/clients/rust/protos/mxaccess_gateway.proto b/clients/rust/protos/mxaccess_gateway.proto index 0ee3fb2..b5e2a6b 100644 --- a/clients/rust/protos/mxaccess_gateway.proto +++ b/clients/rust/protos/mxaccess_gateway.proto @@ -1018,6 +1018,10 @@ message AlarmFeedMessage { // Provider-mode status. Emitted once on stream open and again on every // failover/failback so late joiners learn the current mode immediately. AlarmProviderStatus provider_status = 4; + // Snapshot-completeness status. Emitted once on stream open and again on + // every change of the truncation verdict, so late joiners learn whether the + // feed's active-alarm set may be incomplete. + AlarmSnapshotStatus snapshot_status = 5; } } @@ -1028,6 +1032,23 @@ message AlarmProviderStatus { google.protobuf.Timestamp since = 4; } +// Feed-level snapshot-completeness status. Emitted once on StreamAlarms open +// (after the initial provider_status frame, before the cached active_alarm +// frames) so late joiners learn the current verdict, and again on every change +// of the truncation verdict — when a reconcile reports a different verdict, and +// when the gateway's alarm monitor restarts and drops a truncated verdict with +// the cache generation it described (feed subscribers outlive that monitor +// session, so they are sent the clearing frame). Mirrors the per-record +// ActiveAlarmSnapshot.from_truncated_snapshot caveat at feed level so live +// consumers can reason about completeness without polling QueryActiveAlarms. +message AlarmSnapshotStatus { + // True while the monitor's cached active-alarm set derives from a truncated + // (capped) worker fetch — the set may be missing alarms. Distinct from + // provider degradation (AlarmProviderStatus.degraded), which describes the + // fidelity of the records rather than the completeness of the set. + bool truncated = 1; +} + message MxStatusProxy { // Mirrors the `success` member of the MXAccess MXSTATUS_PROXY struct // (a 16-bit signed value in the COM struct, widened to int32 on the diff --git a/docs/GatewayDashboardDesign.md b/docs/GatewayDashboardDesign.md index f121526..bfc7fdb 100644 --- a/docs/GatewayDashboardDesign.md +++ b/docs/GatewayDashboardDesign.md @@ -273,7 +273,7 @@ bearer). Each hub class is `[Authorize(Policy = HubClientsPolicy)]`. | Hub | Path | Producer | Payload | Routing | |---|---|---|---|---| | `DashboardSnapshotHub` | `/hubs/snapshot` | `DashboardSnapshotPublisher` (BackgroundService consuming `IDashboardSnapshotService.WatchSnapshotsAsync`) | `DashboardSnapshot` | Sent to all connected clients on every snapshot tick, but only while at least one client is connected (see "Idle gating" below); new connections receive the current snapshot synchronously in `OnConnectedAsync`. | -| `AlarmsHub` | `/hubs/alarms` | `AlarmsHubPublisher` (BackgroundService consuming `IGatewayAlarmService.StreamAsync(filter: null)`) | `AlarmFeedMessage` (`active_alarm` / `snapshot_complete` / `transition`) | Connected clients auto-join `__alarms__`; all clients receive every message. Publisher auto-reconnects every 5s on stream faults. The alarm value fields (`current_value` / `limit_value`) are stripped from a deep-cloned copy of the message when `Dashboard:ShowTagValues` is false (the default) — on both value-bearing payload arms, so neither a live transition nor a snapshot record leaks a process value; every other field still renders. The source message is never mutated: it fans out from the same feed to gRPC `StreamAlarms` subscribers, which this dashboard-display flag does not govern. Arms carrying no value are forwarded as-is, uncloned. | +| `AlarmsHub` | `/hubs/alarms` | `AlarmsHubPublisher` (BackgroundService consuming `IGatewayAlarmService.StreamAsync(filter: null)`) | `AlarmFeedMessage` (`active_alarm` / `snapshot_complete` / `transition` / `provider_status` / `snapshot_status`) | Connected clients auto-join `__alarms__`; all clients receive every message. Publisher auto-reconnects every 5s on stream faults. The alarm value fields (`current_value` / `limit_value`) are stripped from a deep-cloned copy of the message when `Dashboard:ShowTagValues` is false (the default) — on both value-bearing payload arms, so neither a live transition nor a snapshot record leaks a process value; every other field still renders. The source message is never mutated: it fans out from the same feed to gRPC `StreamAlarms` subscribers, which this dashboard-display flag does not govern. Arms carrying no value are forwarded as-is, uncloned. | | `EventsHub` | `/hubs/events` | `DashboardEventBroadcaster` invoked by each session's internal dashboard-mirror subscriber on its `SessionEventDistributor` (registered when the session becomes Ready) | `MxEvent` | Clients call `SubscribeSession(sessionId)` to join `session:{id}`, which also registers them in `EventsHubViewerRegistry` — the mirror is gated on that registry, which counts hub and in-process viewers alike (see "Mirror gating" below). The dashboard is a first-class distributor subscriber, so it receives the session's events whether or not a gRPC client is streaming. It sees RAW session events — not the per-gRPC-subscriber `AfterWorkerSequence` filtering that `EventStreamService` applies at its own boundary — because the dashboard is a separate LDAP-authenticated monitoring view meant to show the session's full event activity. Tag values are stripped from the mirrored `MxEvent` copy by `DashboardEventBroadcaster` when `Dashboard:ShowTagValues` is false (the default) — event metadata (tag reference, quality, status, timestamps) still renders, but the value fields are blanked, so no value leaks through this seam. `SubscribeSession` is gated by `IDashboardSessionAcl` (SEC-25 / TST-15): a denied caller gets a `HubException`, is not joined to the group, and is not registered as a viewer, so the mirror stays off for a session nobody is legitimately watching. The same ACL gates the in-process seam the session-details page uses, so neither path is the weaker one. Value redaction remains an independent layer — it bounds what a *permitted* subscriber sees. | ### Default cadences @@ -652,6 +652,11 @@ Show read-only effective configuration: - auth mode, - SQLite auth database path with sensitive parts redacted if needed, - dashboard enabled state, +- the LDAP group mappings that decide what a signed-in user may see — + `Dashboard:GroupToRole` (group → `Administrator` / `Viewer`) and + `Dashboard:GroupToTag` (group → the session tags it grants), +- `Dashboard:UntaggedSessionVisibility`, which decides who sees a session whose + owning API key carries no dashboard tags, - protocol version. Do not show API key secrets or pepper values.