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.