diff --git a/clients/java/README.md b/clients/java/README.md index f530f2e..05e6c08 100644 --- a/clients/java/README.md +++ b/clients/java/README.md @@ -114,8 +114,11 @@ try (MxEventStream events = session.streamEventsAfter(lastSeenSequence)) { For alarms, `MxGatewayClient` exposes `queryActiveAlarms` (one-shot snapshot), `streamAlarms` (returns an `MxGatewayAlarmFeedSubscription` whose iterator yields alarm-feed messages from the gateway's central monitor), and -`acknowledgeAlarm` (ack by full alarm reference with an optional comment and -ack target). Close the subscription to cancel the underlying gRPC stream. +`acknowledgeAlarm` (ack by full alarm reference with an optional comment). +The ack carries operator credentials: `operator_user` is required, and +`operator_password` / `operator_domain` let the gateway authenticate as that +operator so the Historian records the real operator. An empty password is +allowed. The password is scrubbed from exceptions the client throws. Close the subscription to cancel the underlying gRPC stream. `ActiveAlarmSnapshot.getFromTruncatedSnapshot()` reports that the record came from a provider fetch which hit the per-fetch cap: the snapshot set may omit @@ -417,7 +420,7 @@ gradle :zb-mom-ww-mxgateway-cli:run --args="authenticate-user --endpoint localho gradle :zb-mom-ww-mxgateway-cli:run --args="write-secured --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id --server-handle 1 --item-handle 1 --type int32 --value 123 --current-user-id 100 --verifier-user-id 100 --json" gradle :zb-mom-ww-mxgateway-cli:run --args="stream-events --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --session-id --limit 1 --json" gradle :zb-mom-ww-mxgateway-cli:run --args="stream-alarms --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --filter-prefix Galaxy --limit 4 --json" -gradle :zb-mom-ww-mxgateway-cli:run --args="acknowledge-alarm --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --reference \"\\Galaxy\Area001.Pump001.PumpFault\" --json" +gradle :zb-mom-ww-mxgateway-cli:run --args="acknowledge-alarm --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --reference \"\\Galaxy\Area001.Pump001.PumpFault\" --operator operator1 --operator-password-env MXGATEWAY_OPERATOR_PASSWORD --json" gradle :zb-mom-ww-mxgateway-cli:run --args="smoke --endpoint localhost:5000 --api-key-env MXGATEWAY_API_KEY --plaintext --item TestObject.TestInt --json" ``` 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 a9f9bca..a448289 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 @@ -37653,13 +37653,40 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { */ com.google.protobuf.ByteString getOperatorFullNameBytes(); + + /** + *
+     * Operator credential used for AuthenticateUser before the AckMsg write.
+     * Implementations must keep this field out of logs, metrics labels, command
+     * lines, and diagnostics.
+     * 
+ * + * string operator_password = 7; + * @return The operatorPassword. + */ + java.lang.String getOperatorPassword(); + /** + *
+     * Operator credential used for AuthenticateUser before the AckMsg write.
+     * Implementations must keep this field out of logs, metrics labels, command
+     * lines, and diagnostics.
+     * 
+ * + * string operator_password = 7; + * @return The bytes for operatorPassword. + */ + com.google.protobuf.ByteString + getOperatorPasswordBytes(); } /** *
-   * Acknowledge a single alarm by its GUID. Operator identity fields are
-   * recorded atomically with the ack transition in the alarm-history log.
-   * The reply's hresult / native_status surfaces AVEVA's
-   * AlarmAckByGUID return code.
+   * Acknowledge a single alarm by its GUID. The worker resolves the GUID to the
+   * alarm's Galaxy reference from its active-alarm snapshot and acknowledges it
+   * by writing `comment` to `<TAGNAME>.AckMsg` over MXAccess after
+   * AuthenticateUser as the operator, so the alarm history records the real
+   * operator. The reply's hresult / native_status is 0 when the write was
+   * applied (or sent but unconfirmed), otherwise the AuthenticateUser HRESULT or
+   * the OnWriteComplete status detail.
    * 
* * Protobuf type {@code mxaccess_gateway.v1.AcknowledgeAlarmCommand} @@ -37689,6 +37716,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { operatorNode_ = ""; operatorDomain_ = ""; operatorFullName_ = ""; + operatorPassword_ = ""; } public static final com.google.protobuf.Descriptors.Descriptor @@ -37946,6 +37974,57 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { } } + public static final int OPERATOR_PASSWORD_FIELD_NUMBER = 7; + @SuppressWarnings("serial") + private volatile java.lang.Object operatorPassword_ = ""; + /** + *
+     * Operator credential used for AuthenticateUser before the AckMsg write.
+     * Implementations must keep this field out of logs, metrics labels, command
+     * lines, and diagnostics.
+     * 
+ * + * string operator_password = 7; + * @return The operatorPassword. + */ + @java.lang.Override + public java.lang.String getOperatorPassword() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operatorPassword_ = s; + return s; + } + } + /** + *
+     * Operator credential used for AuthenticateUser before the AckMsg write.
+     * Implementations must keep this field out of logs, metrics labels, command
+     * lines, and diagnostics.
+     * 
+ * + * string operator_password = 7; + * @return The bytes for operatorPassword. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getOperatorPasswordBytes() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operatorPassword_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -37978,6 +38057,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorFullName_)) { com.google.protobuf.GeneratedMessage.writeString(output, 6, operatorFullName_); } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorPassword_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 7, operatorPassword_); + } getUnknownFields().writeTo(output); } @@ -38005,6 +38087,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorFullName_)) { size += com.google.protobuf.GeneratedMessage.computeStringSize(6, operatorFullName_); } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorPassword_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(7, operatorPassword_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -38032,6 +38117,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { .equals(other.getOperatorDomain())) return false; if (!getOperatorFullName() .equals(other.getOperatorFullName())) return false; + if (!getOperatorPassword() + .equals(other.getOperatorPassword())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -38055,6 +38142,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { hash = (53 * hash) + getOperatorDomain().hashCode(); hash = (37 * hash) + OPERATOR_FULL_NAME_FIELD_NUMBER; hash = (53 * hash) + getOperatorFullName().hashCode(); + hash = (37 * hash) + OPERATOR_PASSWORD_FIELD_NUMBER; + hash = (53 * hash) + getOperatorPassword().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -38154,10 +38243,13 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { } /** *
-     * Acknowledge a single alarm by its GUID. Operator identity fields are
-     * recorded atomically with the ack transition in the alarm-history log.
-     * The reply's hresult / native_status surfaces AVEVA's
-     * AlarmAckByGUID return code.
+     * Acknowledge a single alarm by its GUID. The worker resolves the GUID to the
+     * alarm's Galaxy reference from its active-alarm snapshot and acknowledges it
+     * by writing `comment` to `<TAGNAME>.AckMsg` over MXAccess after
+     * AuthenticateUser as the operator, so the alarm history records the real
+     * operator. The reply's hresult / native_status is 0 when the write was
+     * applied (or sent but unconfirmed), otherwise the AuthenticateUser HRESULT or
+     * the OnWriteComplete status detail.
      * 
* * Protobuf type {@code mxaccess_gateway.v1.AcknowledgeAlarmCommand} @@ -38199,6 +38291,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { operatorNode_ = ""; operatorDomain_ = ""; operatorFullName_ = ""; + operatorPassword_ = ""; return this; } @@ -38250,6 +38343,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (((from_bitField0_ & 0x00000020) != 0)) { result.operatorFullName_ = operatorFullName_; } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.operatorPassword_ = operatorPassword_; + } } @java.lang.Override @@ -38294,6 +38390,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { bitField0_ |= 0x00000020; onChanged(); } + if (!other.getOperatorPassword().isEmpty()) { + operatorPassword_ = other.operatorPassword_; + bitField0_ |= 0x00000040; + onChanged(); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -38350,6 +38451,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { bitField0_ |= 0x00000020; break; } // case 50 + case 58: { + operatorPassword_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000040; + break; + } // case 58 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -38819,6 +38925,108 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return this; } + private java.lang.Object operatorPassword_ = ""; + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 7; + * @return The operatorPassword. + */ + public java.lang.String getOperatorPassword() { + java.lang.Object ref = operatorPassword_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operatorPassword_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 7; + * @return The bytes for operatorPassword. + */ + public com.google.protobuf.ByteString + getOperatorPasswordBytes() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operatorPassword_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 7; + * @param value The operatorPassword to set. + * @return This builder for chaining. + */ + public Builder setOperatorPassword( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + operatorPassword_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 7; + * @return This builder for chaining. + */ + public Builder clearOperatorPassword() { + operatorPassword_ = getDefaultInstance().getOperatorPassword(); + bitField0_ = (bitField0_ & ~0x00000040); + onChanged(); + return this; + } + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 7; + * @param value The bytes for operatorPassword to set. + * @return This builder for chaining. + */ + public Builder setOperatorPasswordBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + operatorPassword_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.AcknowledgeAlarmCommand) } @@ -39519,14 +39727,36 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { */ com.google.protobuf.ByteString getOperatorFullNameBytes(); + + /** + *
+     * Operator credential used for AuthenticateUser before the AckMsg write.
+     * Implementations must keep this field out of logs, metrics labels, command
+     * lines, and diagnostics.
+     * 
+ * + * string operator_password = 9; + * @return The operatorPassword. + */ + java.lang.String getOperatorPassword(); + /** + *
+     * Operator credential used for AuthenticateUser before the AckMsg write.
+     * Implementations must keep this field out of logs, metrics labels, command
+     * lines, and diagnostics.
+     * 
+ * + * string operator_password = 9; + * @return The bytes for operatorPassword. + */ + com.google.protobuf.ByteString + getOperatorPasswordBytes(); } /** *
    * Acknowledge a single alarm by its (name, provider, group) tuple. Used
    * when the public RPC's AlarmFullReference (Provider!Group.Tag) cannot
-   * be resolved to a GUID directly. The worker invokes
-   * wwAlarmConsumerClass.AlarmAckByName which reaches the same alarm
-   * history path as AlarmAckByGUID.
+   * be resolved to a GUID directly. The worker acknowledges by writing `comment` to `<alarm_name>.AckMsg` (Galaxy provider only) after AuthenticateUser as the operator.
    * 
* * Protobuf type {@code mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand} @@ -39558,6 +39788,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { operatorNode_ = ""; operatorDomain_ = ""; operatorFullName_ = ""; + operatorPassword_ = ""; } public static final com.google.protobuf.Descriptors.Descriptor @@ -39913,6 +40144,57 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { } } + public static final int OPERATOR_PASSWORD_FIELD_NUMBER = 9; + @SuppressWarnings("serial") + private volatile java.lang.Object operatorPassword_ = ""; + /** + *
+     * Operator credential used for AuthenticateUser before the AckMsg write.
+     * Implementations must keep this field out of logs, metrics labels, command
+     * lines, and diagnostics.
+     * 
+ * + * string operator_password = 9; + * @return The operatorPassword. + */ + @java.lang.Override + public java.lang.String getOperatorPassword() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operatorPassword_ = s; + return s; + } + } + /** + *
+     * Operator credential used for AuthenticateUser before the AckMsg write.
+     * Implementations must keep this field out of logs, metrics labels, command
+     * lines, and diagnostics.
+     * 
+ * + * string operator_password = 9; + * @return The bytes for operatorPassword. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getOperatorPasswordBytes() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operatorPassword_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -39951,6 +40233,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorFullName_)) { com.google.protobuf.GeneratedMessage.writeString(output, 8, operatorFullName_); } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorPassword_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 9, operatorPassword_); + } getUnknownFields().writeTo(output); } @@ -39984,6 +40269,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorFullName_)) { size += com.google.protobuf.GeneratedMessage.computeStringSize(8, operatorFullName_); } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorPassword_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(9, operatorPassword_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -40015,6 +40303,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { .equals(other.getOperatorDomain())) return false; if (!getOperatorFullName() .equals(other.getOperatorFullName())) return false; + if (!getOperatorPassword() + .equals(other.getOperatorPassword())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -40042,6 +40332,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { hash = (53 * hash) + getOperatorDomain().hashCode(); hash = (37 * hash) + OPERATOR_FULL_NAME_FIELD_NUMBER; hash = (53 * hash) + getOperatorFullName().hashCode(); + hash = (37 * hash) + OPERATOR_PASSWORD_FIELD_NUMBER; + hash = (53 * hash) + getOperatorPassword().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -40143,9 +40435,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
      * Acknowledge a single alarm by its (name, provider, group) tuple. Used
      * when the public RPC's AlarmFullReference (Provider!Group.Tag) cannot
-     * be resolved to a GUID directly. The worker invokes
-     * wwAlarmConsumerClass.AlarmAckByName which reaches the same alarm
-     * history path as AlarmAckByGUID.
+     * be resolved to a GUID directly. The worker acknowledges by writing `comment` to `<alarm_name>.AckMsg` (Galaxy provider only) after AuthenticateUser as the operator.
      * 
* * Protobuf type {@code mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand} @@ -40189,6 +40479,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { operatorNode_ = ""; operatorDomain_ = ""; operatorFullName_ = ""; + operatorPassword_ = ""; return this; } @@ -40246,6 +40537,9 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (((from_bitField0_ & 0x00000080) != 0)) { result.operatorFullName_ = operatorFullName_; } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.operatorPassword_ = operatorPassword_; + } } @java.lang.Override @@ -40300,6 +40594,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { bitField0_ |= 0x00000080; onChanged(); } + if (!other.getOperatorPassword().isEmpty()) { + operatorPassword_ = other.operatorPassword_; + bitField0_ |= 0x00000100; + onChanged(); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -40366,6 +40665,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { bitField0_ |= 0x00000080; break; } // case 66 + case 74: { + operatorPassword_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000100; + break; + } // case 74 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -41029,6 +41333,108 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return this; } + private java.lang.Object operatorPassword_ = ""; + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 9; + * @return The operatorPassword. + */ + public java.lang.String getOperatorPassword() { + java.lang.Object ref = operatorPassword_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operatorPassword_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 9; + * @return The bytes for operatorPassword. + */ + public com.google.protobuf.ByteString + getOperatorPasswordBytes() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operatorPassword_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 9; + * @param value The operatorPassword to set. + * @return This builder for chaining. + */ + public Builder setOperatorPassword( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + operatorPassword_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 9; + * @return This builder for chaining. + */ + public Builder clearOperatorPassword() { + operatorPassword_ = getDefaultInstance().getOperatorPassword(); + bitField0_ = (bitField0_ & ~0x00000100); + onChanged(); + return this; + } + /** + *
+       * Operator credential used for AuthenticateUser before the AckMsg write.
+       * Implementations must keep this field out of logs, metrics labels, command
+       * lines, and diagnostics.
+       * 
+ * + * string operator_password = 9; + * @param value The bytes for operatorPassword to set. + * @return This builder for chaining. + */ + public Builder setOperatorPasswordBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + operatorPassword_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.AcknowledgeAlarmByNameCommand) } @@ -71719,11 +72125,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { * Reply payload for AcknowledgeAlarmCommand AND * AcknowledgeAlarmByNameCommand — both ack command kinds reuse this * payload case (`MxCommandReply.acknowledge_alarm`); there is no - * dedicated by-name reply case. Surfaces AVEVA's native ack return - * code (AlarmAckByGUID for the GUID arm, AlarmAckByName for the - * by-name arm); 0 means success. The MxCommandReply's hresult field + * dedicated by-name reply case. Surfaces the ack outcome: 0 when the + * AckMsg write was applied or sent but unconfirmed; otherwise the + * AuthenticateUser HRESULT or the OnWriteComplete status detail. The MxCommandReply's hresult field * carries the same value and is preferred for protocol consumers — - * this payload exists so the gateway-side WorkerAlarmRpcDispatcher + * this payload exists so GatewayAlarmMonitor * can echo native_status into AcknowledgeAlarmReply.hresult without * unpacking the outer envelope. * @@ -71937,11 +72343,11 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { * Reply payload for AcknowledgeAlarmCommand AND * AcknowledgeAlarmByNameCommand — both ack command kinds reuse this * payload case (`MxCommandReply.acknowledge_alarm`); there is no - * dedicated by-name reply case. Surfaces AVEVA's native ack return - * code (AlarmAckByGUID for the GUID arm, AlarmAckByName for the - * by-name arm); 0 means success. The MxCommandReply's hresult field + * dedicated by-name reply case. Surfaces the ack outcome: 0 when the + * AckMsg write was applied or sent but unconfirmed; otherwise the + * AuthenticateUser HRESULT or the OnWriteComplete status detail. The MxCommandReply's hresult field * carries the same value and is preferred for protocol consumers — - * this payload exists so the gateway-side WorkerAlarmRpcDispatcher + * this payload exists so GatewayAlarmMonitor * can echo native_status into AcknowledgeAlarmReply.hresult without * unpacking the outer envelope. * @@ -87166,6 +87572,56 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { */ com.google.protobuf.ByteString getOperatorUserBytes(); + + /** + *
+     * Operator's Galaxy (or OS) password. The gateway authenticates as
+     * operator_user with it before writing the acknowledgement so the alarm
+     * history records the real operator. May be empty for accounts without a
+     * password. Credential-sensitive: implementations must keep this field out
+     * of logs, metrics labels, command lines, and diagnostics.
+     * 
+ * + * string operator_password = 6; + * @return The operatorPassword. + */ + java.lang.String getOperatorPassword(); + /** + *
+     * Operator's Galaxy (or OS) password. The gateway authenticates as
+     * operator_user with it before writing the acknowledgement so the alarm
+     * history records the real operator. May be empty for accounts without a
+     * password. Credential-sensitive: implementations must keep this field out
+     * of logs, metrics labels, command lines, and diagnostics.
+     * 
+ * + * string operator_password = 6; + * @return The bytes for operatorPassword. + */ + com.google.protobuf.ByteString + getOperatorPasswordBytes(); + + /** + *
+     * Optional domain for OS-authenticated galaxies. When set the gateway
+     * authenticates as "<operator_domain>\<operator_user>".
+     * 
+ * + * string operator_domain = 7; + * @return The operatorDomain. + */ + java.lang.String getOperatorDomain(); + /** + *
+     * Optional domain for OS-authenticated galaxies. When set the gateway
+     * authenticates as "<operator_domain>\<operator_user>".
+     * 
+ * + * string operator_domain = 7; + * @return The bytes for operatorDomain. + */ + com.google.protobuf.ByteString + getOperatorDomainBytes(); } /** * Protobuf type {@code mxaccess_gateway.v1.AcknowledgeAlarmRequest} @@ -87193,6 +87649,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { alarmFullReference_ = ""; comment_ = ""; operatorUser_ = ""; + operatorPassword_ = ""; + operatorDomain_ = ""; } public static final com.google.protobuf.Descriptors.Descriptor @@ -87390,6 +87848,110 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { } } + public static final int OPERATOR_PASSWORD_FIELD_NUMBER = 6; + @SuppressWarnings("serial") + private volatile java.lang.Object operatorPassword_ = ""; + /** + *
+     * Operator's Galaxy (or OS) password. The gateway authenticates as
+     * operator_user with it before writing the acknowledgement so the alarm
+     * history records the real operator. May be empty for accounts without a
+     * password. Credential-sensitive: implementations must keep this field out
+     * of logs, metrics labels, command lines, and diagnostics.
+     * 
+ * + * string operator_password = 6; + * @return The operatorPassword. + */ + @java.lang.Override + public java.lang.String getOperatorPassword() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operatorPassword_ = s; + return s; + } + } + /** + *
+     * Operator's Galaxy (or OS) password. The gateway authenticates as
+     * operator_user with it before writing the acknowledgement so the alarm
+     * history records the real operator. May be empty for accounts without a
+     * password. Credential-sensitive: implementations must keep this field out
+     * of logs, metrics labels, command lines, and diagnostics.
+     * 
+ * + * string operator_password = 6; + * @return The bytes for operatorPassword. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getOperatorPasswordBytes() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operatorPassword_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int OPERATOR_DOMAIN_FIELD_NUMBER = 7; + @SuppressWarnings("serial") + private volatile java.lang.Object operatorDomain_ = ""; + /** + *
+     * Optional domain for OS-authenticated galaxies. When set the gateway
+     * authenticates as "<operator_domain>\<operator_user>".
+     * 
+ * + * string operator_domain = 7; + * @return The operatorDomain. + */ + @java.lang.Override + public java.lang.String getOperatorDomain() { + java.lang.Object ref = operatorDomain_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operatorDomain_ = s; + return s; + } + } + /** + *
+     * Optional domain for OS-authenticated galaxies. When set the gateway
+     * authenticates as "<operator_domain>\<operator_user>".
+     * 
+ * + * string operator_domain = 7; + * @return The bytes for operatorDomain. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getOperatorDomainBytes() { + java.lang.Object ref = operatorDomain_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operatorDomain_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -87416,6 +87978,12 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorUser_)) { com.google.protobuf.GeneratedMessage.writeString(output, 5, operatorUser_); } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorPassword_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 6, operatorPassword_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorDomain_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 7, operatorDomain_); + } getUnknownFields().writeTo(output); } @@ -87437,6 +88005,12 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorUser_)) { size += com.google.protobuf.GeneratedMessage.computeStringSize(5, operatorUser_); } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorPassword_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(6, operatorPassword_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(operatorDomain_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(7, operatorDomain_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -87460,6 +88034,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { .equals(other.getComment())) return false; if (!getOperatorUser() .equals(other.getOperatorUser())) return false; + if (!getOperatorPassword() + .equals(other.getOperatorPassword())) return false; + if (!getOperatorDomain() + .equals(other.getOperatorDomain())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -87479,6 +88057,10 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { hash = (53 * hash) + getComment().hashCode(); hash = (37 * hash) + OPERATOR_USER_FIELD_NUMBER; hash = (53 * hash) + getOperatorUser().hashCode(); + hash = (37 * hash) + OPERATOR_PASSWORD_FIELD_NUMBER; + hash = (53 * hash) + getOperatorPassword().hashCode(); + hash = (37 * hash) + OPERATOR_DOMAIN_FIELD_NUMBER; + hash = (53 * hash) + getOperatorDomain().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -87614,6 +88196,8 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { alarmFullReference_ = ""; comment_ = ""; operatorUser_ = ""; + operatorPassword_ = ""; + operatorDomain_ = ""; return this; } @@ -87659,6 +88243,12 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { if (((from_bitField0_ & 0x00000008) != 0)) { result.operatorUser_ = operatorUser_; } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.operatorPassword_ = operatorPassword_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.operatorDomain_ = operatorDomain_; + } } @java.lang.Override @@ -87693,6 +88283,16 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { bitField0_ |= 0x00000008; onChanged(); } + if (!other.getOperatorPassword().isEmpty()) { + operatorPassword_ = other.operatorPassword_; + bitField0_ |= 0x00000010; + onChanged(); + } + if (!other.getOperatorDomain().isEmpty()) { + operatorDomain_ = other.operatorDomain_; + bitField0_ |= 0x00000020; + onChanged(); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -87739,6 +88339,16 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { bitField0_ |= 0x00000008; break; } // case 42 + case 50: { + operatorPassword_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000010; + break; + } // case 50 + case 58: { + operatorDomain_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000020; + break; + } // case 58 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -88109,6 +88719,215 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { return this; } + private java.lang.Object operatorPassword_ = ""; + /** + *
+       * Operator's Galaxy (or OS) password. The gateway authenticates as
+       * operator_user with it before writing the acknowledgement so the alarm
+       * history records the real operator. May be empty for accounts without a
+       * password. Credential-sensitive: implementations must keep this field out
+       * of logs, metrics labels, command lines, and diagnostics.
+       * 
+ * + * string operator_password = 6; + * @return The operatorPassword. + */ + public java.lang.String getOperatorPassword() { + java.lang.Object ref = operatorPassword_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operatorPassword_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Operator's Galaxy (or OS) password. The gateway authenticates as
+       * operator_user with it before writing the acknowledgement so the alarm
+       * history records the real operator. May be empty for accounts without a
+       * password. Credential-sensitive: implementations must keep this field out
+       * of logs, metrics labels, command lines, and diagnostics.
+       * 
+ * + * string operator_password = 6; + * @return The bytes for operatorPassword. + */ + public com.google.protobuf.ByteString + getOperatorPasswordBytes() { + java.lang.Object ref = operatorPassword_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operatorPassword_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Operator's Galaxy (or OS) password. The gateway authenticates as
+       * operator_user with it before writing the acknowledgement so the alarm
+       * history records the real operator. May be empty for accounts without a
+       * password. Credential-sensitive: implementations must keep this field out
+       * of logs, metrics labels, command lines, and diagnostics.
+       * 
+ * + * string operator_password = 6; + * @param value The operatorPassword to set. + * @return This builder for chaining. + */ + public Builder setOperatorPassword( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + operatorPassword_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + *
+       * Operator's Galaxy (or OS) password. The gateway authenticates as
+       * operator_user with it before writing the acknowledgement so the alarm
+       * history records the real operator. May be empty for accounts without a
+       * password. Credential-sensitive: implementations must keep this field out
+       * of logs, metrics labels, command lines, and diagnostics.
+       * 
+ * + * string operator_password = 6; + * @return This builder for chaining. + */ + public Builder clearOperatorPassword() { + operatorPassword_ = getDefaultInstance().getOperatorPassword(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + return this; + } + /** + *
+       * Operator's Galaxy (or OS) password. The gateway authenticates as
+       * operator_user with it before writing the acknowledgement so the alarm
+       * history records the real operator. May be empty for accounts without a
+       * password. Credential-sensitive: implementations must keep this field out
+       * of logs, metrics labels, command lines, and diagnostics.
+       * 
+ * + * string operator_password = 6; + * @param value The bytes for operatorPassword to set. + * @return This builder for chaining. + */ + public Builder setOperatorPasswordBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + operatorPassword_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + private java.lang.Object operatorDomain_ = ""; + /** + *
+       * Optional domain for OS-authenticated galaxies. When set the gateway
+       * authenticates as "<operator_domain>\<operator_user>".
+       * 
+ * + * string operator_domain = 7; + * @return The operatorDomain. + */ + public java.lang.String getOperatorDomain() { + java.lang.Object ref = operatorDomain_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + operatorDomain_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+       * Optional domain for OS-authenticated galaxies. When set the gateway
+       * authenticates as "<operator_domain>\<operator_user>".
+       * 
+ * + * string operator_domain = 7; + * @return The bytes for operatorDomain. + */ + public com.google.protobuf.ByteString + getOperatorDomainBytes() { + java.lang.Object ref = operatorDomain_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + operatorDomain_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+       * Optional domain for OS-authenticated galaxies. When set the gateway
+       * authenticates as "<operator_domain>\<operator_user>".
+       * 
+ * + * string operator_domain = 7; + * @param value The operatorDomain to set. + * @return This builder for chaining. + */ + public Builder setOperatorDomain( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + operatorDomain_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + *
+       * Optional domain for OS-authenticated galaxies. When set the gateway
+       * authenticates as "<operator_domain>\<operator_user>".
+       * 
+ * + * string operator_domain = 7; + * @return This builder for chaining. + */ + public Builder clearOperatorDomain() { + operatorDomain_ = getDefaultInstance().getOperatorDomain(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + return this; + } + /** + *
+       * Optional domain for OS-authenticated galaxies. When set the gateway
+       * authenticates as "<operator_domain>\<operator_user>".
+       * 
+ * + * string operator_domain = 7; + * @param value The bytes for operatorDomain to set. + * @return This builder for chaining. + */ + public Builder setOperatorDomainBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + operatorDomain_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:mxaccess_gateway.v1.AcknowledgeAlarmRequest) } @@ -88195,8 +89014,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
      * Native ack return code echoed from the worker. The worker carries the
      * ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
-     * = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
-     * WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
+     * 0 = applied or sent; otherwise the AuthenticateUser HRESULT or OnWriteComplete detail); GatewayAlarmMonitor copies that value here. This is the authoritative
      * ack-outcome field for the public RPC. Absent only when the worker reply
      * omitted the value entirely (a protocol violation).
      * 
@@ -88209,8 +89027,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
      * Native ack return code echoed from the worker. The worker carries the
      * ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
-     * = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
-     * WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
+     * 0 = applied or sent; otherwise the AuthenticateUser HRESULT or OnWriteComplete detail); GatewayAlarmMonitor copies that value here. This is the authoritative
      * ack-outcome field for the public RPC. Absent only when the worker reply
      * omitted the value entirely (a protocol violation).
      * 
@@ -88382,8 +89199,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
      * Native ack return code echoed from the worker. The worker carries the
      * ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
-     * = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
-     * WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
+     * 0 = applied or sent; otherwise the AuthenticateUser HRESULT or OnWriteComplete detail); GatewayAlarmMonitor copies that value here. This is the authoritative
      * ack-outcome field for the public RPC. Absent only when the worker reply
      * omitted the value entirely (a protocol violation).
      * 
@@ -88399,8 +89215,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
      * Native ack return code echoed from the worker. The worker carries the
      * ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
-     * = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
-     * WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
+     * 0 = applied or sent; otherwise the AuthenticateUser HRESULT or OnWriteComplete detail); GatewayAlarmMonitor copies that value here. This is the authoritative
      * ack-outcome field for the public RPC. Absent only when the worker reply
      * omitted the value entirely (a protocol violation).
      * 
@@ -89130,8 +89945,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
        * Native ack return code echoed from the worker. The worker carries the
        * ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
-       * = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
-       * WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
+       * 0 = applied or sent; otherwise the AuthenticateUser HRESULT or OnWriteComplete detail); GatewayAlarmMonitor copies that value here. This is the authoritative
        * ack-outcome field for the public RPC. Absent only when the worker reply
        * omitted the value entirely (a protocol violation).
        * 
@@ -89147,8 +89961,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
        * Native ack return code echoed from the worker. The worker carries the
        * ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
-       * = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
-       * WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
+       * 0 = applied or sent; otherwise the AuthenticateUser HRESULT or OnWriteComplete detail); GatewayAlarmMonitor copies that value here. This is the authoritative
        * ack-outcome field for the public RPC. Absent only when the worker reply
        * omitted the value entirely (a protocol violation).
        * 
@@ -89164,8 +89977,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
        * Native ack return code echoed from the worker. The worker carries the
        * ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
-       * = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
-       * WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
+       * 0 = applied or sent; otherwise the AuthenticateUser HRESULT or OnWriteComplete detail); GatewayAlarmMonitor copies that value here. This is the authoritative
        * ack-outcome field for the public RPC. Absent only when the worker reply
        * omitted the value entirely (a protocol violation).
        * 
@@ -89185,8 +89997,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { *
        * Native ack return code echoed from the worker. The worker carries the
        * ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
-       * = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
-       * WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
+       * 0 = applied or sent; otherwise the AuthenticateUser HRESULT or OnWriteComplete detail); GatewayAlarmMonitor copies that value here. This is the authoritative
        * ack-outcome field for the public RPC. Absent only when the worker reply
        * omitted the value entirely (a protocol violation).
        * 
@@ -107427,415 +108238,418 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { "verConfig\022%\n\035consecutive_failure_thresho" + "ld\030\001 \001(\005\022\'\n\037failback_probe_interval_seco" + "nds\030\002 \001(\005\022\036\n\026failback_stable_probes\030\003 \001(" + - "\005\"\241\001\n\027AcknowledgeAlarmCommand\022\022\n\nalarm_g" + + "\005\"\274\001\n\027AcknowledgeAlarmCommand\022\022\n\nalarm_g" + "uid\030\001 \001(\t\022\017\n\007comment\030\002 \001(\t\022\025\n\roperator_u" + "ser\030\003 \001(\t\022\025\n\roperator_node\030\004 \001(\t\022\027\n\017oper" + "ator_domain\030\005 \001(\t\022\032\n\022operator_full_name\030" + - "\006 \001(\t\"7\n\030QueryActiveAlarmsCommand\022\033\n\023ala" + - "rm_filter_prefix\030\001 \001(\t\"\322\001\n\035AcknowledgeAl" + - "armByNameCommand\022\022\n\nalarm_name\030\001 \001(\t\022\025\n\r" + - "provider_name\030\002 \001(\t\022\022\n\ngroup_name\030\003 \001(\t\022" + - "\017\n\007comment\030\004 \001(\t\022\025\n\roperator_user\030\005 \001(\t\022" + - "\025\n\roperator_node\030\006 \001(\t\022\027\n\017operator_domai" + - "n\030\007 \001(\t\022\032\n\022operator_full_name\030\010 \001(\t\"E\n\026U" + - "nsubscribeBulkCommand\022\025\n\rserver_handle\030\001" + - " \001(\005\022\024\n\014item_handles\030\002 \003(\005\"_\n\020WriteBulkC" + - "ommand\022\025\n\rserver_handle\030\001 \001(\005\0224\n\007entries" + - "\030\002 \003(\0132#.mxaccess_gateway.v1.WriteBulkEn" + - "try\"c\n\016WriteBulkEntry\022\023\n\013item_handle\030\001 \001" + - "(\005\022+\n\005value\030\002 \001(\0132\034.mxaccess_gateway.v1." + - "MxValue\022\017\n\007user_id\030\003 \001(\005\"a\n\021Write2BulkCo" + - "mmand\022\025\n\rserver_handle\030\001 \001(\005\0225\n\007entries\030" + - "\002 \003(\0132$.mxaccess_gateway.v1.Write2BulkEn" + - "try\"\233\001\n\017Write2BulkEntry\022\023\n\013item_handle\030\001" + - " \001(\005\022+\n\005value\030\002 \001(\0132\034.mxaccess_gateway.v" + - "1.MxValue\0225\n\017timestamp_value\030\003 \001(\0132\034.mxa" + - "ccess_gateway.v1.MxValue\022\017\n\007user_id\030\004 \001(" + - "\005\"m\n\027WriteSecuredBulkCommand\022\025\n\rserver_h" + - "andle\030\001 \001(\005\022;\n\007entries\030\002 \003(\0132*.mxaccess_" + - "gateway.v1.WriteSecuredBulkEntry\"\214\001\n\025Wri" + - "teSecuredBulkEntry\022\023\n\013item_handle\030\001 \001(\005\022" + - "\027\n\017current_user_id\030\002 \001(\005\022\030\n\020verifier_use" + - "r_id\030\003 \001(\005\022+\n\005value\030\004 \001(\0132\034.mxaccess_gat" + - "eway.v1.MxValue\"o\n\030WriteSecured2BulkComm" + - "and\022\025\n\rserver_handle\030\001 \001(\005\022<\n\007entries\030\002 " + - "\003(\0132+.mxaccess_gateway.v1.WriteSecured2B" + - "ulkEntry\"\304\001\n\026WriteSecured2BulkEntry\022\023\n\013i" + - "tem_handle\030\001 \001(\005\022\027\n\017current_user_id\030\002 \001(" + - "\005\022\030\n\020verifier_user_id\030\003 \001(\005\022+\n\005value\030\004 \001" + - "(\0132\034.mxaccess_gateway.v1.MxValue\0225\n\017time" + - "stamp_value\030\005 \001(\0132\034.mxaccess_gateway.v1." + - "MxValue\"S\n\017ReadBulkCommand\022\025\n\rserver_han" + - "dle\030\001 \001(\005\022\025\n\rtag_addresses\030\002 \003(\t\022\022\n\ntime" + - "out_ms\030\003 \001(\r\"\036\n\013PingCommand\022\017\n\007message\030\001" + - " \001(\t\"\030\n\026GetSessionStateCommand\"\026\n\024GetWor" + - "kerInfoCommand\"(\n\022DrainEventsCommand\022\022\n\n" + - "max_events\030\001 \001(\r\"H\n\025ShutdownWorkerComman" + - "d\022/\n\014grace_period\030\001 \001(\0132\031.google.protobu" + - "f.Duration\"\206\017\n\016MxCommandReply\022\022\n\nsession" + - "_id\030\001 \001(\t\022\026\n\016correlation_id\030\002 \001(\t\0220\n\004kin" + - "d\030\003 \001(\0162\".mxaccess_gateway.v1.MxCommandK" + - "ind\022<\n\017protocol_status\030\004 \001(\0132#.mxaccess_" + - "gateway.v1.ProtocolStatus\022\024\n\007hresult\030\005 \001" + - "(\005H\001\210\001\001\0222\n\014return_value\030\006 \001(\0132\034.mxaccess" + - "_gateway.v1.MxValue\0224\n\010statuses\030\007 \003(\0132\"." + - "mxaccess_gateway.v1.MxStatusProxy\022\032\n\022dia" + - "gnostic_message\030\010 \001(\t\0226\n\010register\030\024 \001(\0132" + - "\".mxaccess_gateway.v1.RegisterReplyH\000\0225\n" + - "\010add_item\030\025 \001(\0132!.mxaccess_gateway.v1.Ad" + - "dItemReplyH\000\0227\n\tadd_item2\030\026 \001(\0132\".mxacce" + - "ss_gateway.v1.AddItem2ReplyH\000\022F\n\021add_buf" + - "fered_item\030\027 \001(\0132).mxaccess_gateway.v1.A" + - "ddBufferedItemReplyH\000\0224\n\007suspend\030\030 \001(\0132!" + - ".mxaccess_gateway.v1.SuspendReplyH\000\0226\n\010a" + - "ctivate\030\031 \001(\0132\".mxaccess_gateway.v1.Acti" + - "vateReplyH\000\022G\n\021authenticate_user\030\032 \001(\0132*" + - ".mxaccess_gateway.v1.AuthenticateUserRep" + - "lyH\000\022K\n\024archestra_user_to_id\030\033 \001(\0132+.mxa" + - "ccess_gateway.v1.ArchestrAUserToIdReplyH" + - "\000\022@\n\radd_item_bulk\030\034 \001(\0132\'.mxaccess_gate" + - "way.v1.BulkSubscribeReplyH\000\022C\n\020advise_it" + - "em_bulk\030\035 \001(\0132\'.mxaccess_gateway.v1.Bulk" + - "SubscribeReplyH\000\022C\n\020remove_item_bulk\030\036 \001" + - "(\0132\'.mxaccess_gateway.v1.BulkSubscribeRe" + - "plyH\000\022F\n\023un_advise_item_bulk\030\037 \001(\0132\'.mxa" + - "ccess_gateway.v1.BulkSubscribeReplyH\000\022A\n" + - "\016subscribe_bulk\030 \001(\0132\'.mxaccess_gateway" + - ".v1.BulkSubscribeReplyH\000\022C\n\020unsubscribe_" + - "bulk\030! \001(\0132\'.mxaccess_gateway.v1.BulkSub" + - "scribeReplyH\000\022N\n\021acknowledge_alarm\030\" \001(\013" + - "21.mxaccess_gateway.v1.AcknowledgeAlarmR" + - "eplyPayloadH\000\022Q\n\023query_active_alarms\030# \001" + - "(\01322.mxaccess_gateway.v1.QueryActiveAlar" + - "msReplyPayloadH\000\0229\n\nwrite_bulk\030$ \001(\0132#.m" + - "xaccess_gateway.v1.BulkWriteReplyH\000\022:\n\013w" + - "rite2_bulk\030% \001(\0132#.mxaccess_gateway.v1.B" + - "ulkWriteReplyH\000\022A\n\022write_secured_bulk\030& " + - "\001(\0132#.mxaccess_gateway.v1.BulkWriteReply" + - "H\000\022B\n\023write_secured2_bulk\030\' \001(\0132#.mxacce" + - "ss_gateway.v1.BulkWriteReplyH\000\0227\n\tread_b" + - "ulk\030( \001(\0132\".mxaccess_gateway.v1.BulkRead" + - "ReplyH\000\022?\n\rsession_state\030d \001(\0132&.mxacces" + - "s_gateway.v1.SessionStateReplyH\000\022;\n\013work" + - "er_info\030e \001(\0132$.mxaccess_gateway.v1.Work" + - "erInfoReplyH\000\022=\n\014drain_events\030f \001(\0132%.mx" + - "access_gateway.v1.DrainEventsReplyH\000B\t\n\007" + - "payloadB\n\n\010_hresult\"&\n\rRegisterReply\022\025\n\r" + - "server_handle\030\001 \001(\005\"#\n\014AddItemReply\022\023\n\013i" + - "tem_handle\030\001 \001(\005\"$\n\rAddItem2Reply\022\023\n\013ite" + - "m_handle\030\001 \001(\005\"+\n\024AddBufferedItemReply\022\023" + - "\n\013item_handle\030\001 \001(\005\"B\n\014SuspendReply\0222\n\006s" + - "tatus\030\001 \001(\0132\".mxaccess_gateway.v1.MxStat" + - "usProxy\"C\n\rActivateReply\0222\n\006status\030\001 \001(\013" + - "2\".mxaccess_gateway.v1.MxStatusProxy\"(\n\025" + - "AuthenticateUserReply\022\017\n\007user_id\030\001 \001(\005\")" + - "\n\026ArchestrAUserToIdReply\022\017\n\007user_id\030\001 \001(" + - "\005\"\201\001\n\017SubscribeResult\022\025\n\rserver_handle\030\001" + - " \001(\005\022\023\n\013tag_address\030\002 \001(\t\022\023\n\013item_handle" + - "\030\003 \001(\005\022\026\n\016was_successful\030\004 \001(\010\022\025\n\rerror_" + - "message\030\005 \001(\t\"K\n\022BulkSubscribeReply\0225\n\007r" + - "esults\030\001 \003(\0132$.mxaccess_gateway.v1.Subsc" + - "ribeResult\"\304\001\n\017BulkWriteResult\022\025\n\rserver" + - "_handle\030\001 \001(\005\022\023\n\013item_handle\030\002 \001(\005\022\026\n\016wa" + - "s_successful\030\003 \001(\010\022\024\n\007hresult\030\004 \001(\005H\000\210\001\001" + - "\0224\n\010statuses\030\005 \003(\0132\".mxaccess_gateway.v1" + - ".MxStatusProxy\022\025\n\rerror_message\030\006 \001(\tB\n\n" + - "\010_hresult\"G\n\016BulkWriteReply\0225\n\007results\030\001" + - " \003(\0132$.mxaccess_gateway.v1.BulkWriteResu" + - "lt\"\276\002\n\016BulkReadResult\022\025\n\rserver_handle\030\001" + - " \001(\005\022\023\n\013tag_address\030\002 \001(\t\022\023\n\013item_handle" + - "\030\003 \001(\005\022\026\n\016was_successful\030\004 \001(\010\022\022\n\nwas_ca" + - "ched\030\005 \001(\010\022+\n\005value\030\006 \001(\0132\034.mxaccess_gat" + - "eway.v1.MxValue\022\017\n\007quality\030\007 \001(\005\0224\n\020sour" + - "ce_timestamp\030\010 \001(\0132\032.google.protobuf.Tim" + - "estamp\0224\n\010statuses\030\t \003(\0132\".mxaccess_gate" + - "way.v1.MxStatusProxy\022\025\n\rerror_message\030\n " + - "\001(\t\"E\n\rBulkReadReply\0224\n\007results\030\001 \003(\0132#." + - "mxaccess_gateway.v1.BulkReadResult\"E\n\021Se" + - "ssionStateReply\0220\n\005state\030\001 \001(\0162!.mxacces" + - "s_gateway.v1.SessionState\"u\n\017WorkerInfoR" + - "eply\022\031\n\021worker_process_id\030\001 \001(\005\022\026\n\016worke" + - "r_version\030\002 \001(\t\022\027\n\017mxaccess_progid\030\003 \001(\t" + - "\022\026\n\016mxaccess_clsid\030\004 \001(\t\"@\n\020DrainEventsR" + - "eply\022,\n\006events\030\001 \003(\0132\034.mxaccess_gateway." + - "v1.MxEvent\"5\n\034AcknowledgeAlarmReplyPaylo" + - "ad\022\025\n\rnative_status\030\001 \001(\005\"x\n\035QueryActive" + - "AlarmsReplyPayload\022;\n\tsnapshots\030\001 \003(\0132(." + - "mxaccess_gateway.v1.ActiveAlarmSnapshot\022" + - "\032\n\022snapshot_truncated\030\002 \001(\010\"\217\010\n\007MxEvent\022" + - "2\n\006family\030\001 \001(\0162\".mxaccess_gateway.v1.Mx" + - "EventFamily\022\022\n\nsession_id\030\002 \001(\t\022\025\n\rserve" + - "r_handle\030\003 \001(\005\022\023\n\013item_handle\030\004 \001(\005\022+\n\005v" + - "alue\030\005 \001(\0132\034.mxaccess_gateway.v1.MxValue" + - "\022\017\n\007quality\030\006 \001(\005\0224\n\020source_timestamp\030\007 " + - "\001(\0132\032.google.protobuf.Timestamp\0224\n\010statu" + - "ses\030\010 \003(\0132\".mxaccess_gateway.v1.MxStatus" + - "Proxy\022\027\n\017worker_sequence\030\t \001(\004\0224\n\020worker" + - "_timestamp\030\n \001(\0132\032.google.protobuf.Times" + - "tamp\022=\n\031gateway_receive_timestamp\030\013 \001(\0132" + - "\032.google.protobuf.Timestamp\022\024\n\007hresult\030\014" + - " \001(\005H\001\210\001\001\022\022\n\nraw_status\030\r \001(\t\0227\n\nreplay_" + - "gap\030\016 \001(\0132\036.mxaccess_gateway.v1.ReplayGa" + - "pH\002\210\001\001\022@\n\016on_data_change\030\024 \001(\0132&.mxacces" + - "s_gateway.v1.OnDataChangeEventH\000\022F\n\021on_w" + - "rite_complete\030\025 \001(\0132).mxaccess_gateway.v" + - "1.OnWriteCompleteEventH\000\022I\n\022operation_co" + - "mplete\030\026 \001(\0132+.mxaccess_gateway.v1.Opera" + - "tionCompleteEventH\000\022Q\n\027on_buffered_data_" + - "change\030\027 \001(\0132..mxaccess_gateway.v1.OnBuf" + - "feredDataChangeEventH\000\022J\n\023on_alarm_trans" + - "ition\030\030 \001(\0132+.mxaccess_gateway.v1.OnAlar" + - "mTransitionEventH\000\022^\n\036on_alarm_provider_" + - "mode_changed\030\031 \001(\01324.mxaccess_gateway.v1" + - ".OnAlarmProviderModeChangedEventH\000B\006\n\004bo" + - "dyB\n\n\010_hresultB\r\n\013_replay_gap\"P\n\tReplayG" + - "ap\022 \n\030requested_after_sequence\030\001 \001(\004\022!\n\031" + - "oldest_available_sequence\030\002 \001(\004\"\023\n\021OnDat" + - "aChangeEvent\"\026\n\024OnWriteCompleteEvent\"\030\n\026" + - "OperationCompleteEvent\"\324\001\n\031OnBufferedDat" + - "aChangeEvent\0222\n\tdata_type\030\001 \001(\0162\037.mxacce" + - "ss_gateway.v1.MxDataType\0224\n\016quality_valu" + - "es\030\002 \001(\0132\034.mxaccess_gateway.v1.MxArray\0226" + - "\n\020timestamp_values\030\003 \001(\0132\034.mxaccess_gate" + - "way.v1.MxArray\022\025\n\rraw_data_type\030\004 \001(\005\"\320\004" + - "\n\026OnAlarmTransitionEvent\022\034\n\024alarm_full_r" + - "eference\030\001 \001(\t\022\037\n\027source_object_referenc" + - "e\030\002 \001(\t\022\027\n\017alarm_type_name\030\003 \001(\t\022A\n\017tran" + - "sition_kind\030\004 \001(\0162(.mxaccess_gateway.v1." + - "AlarmTransitionKind\022\020\n\010severity\030\005 \001(\005\022<\n" + - "\030original_raise_timestamp\030\006 \001(\0132\032.google" + - ".protobuf.Timestamp\0228\n\024transition_timest" + - "amp\030\007 \001(\0132\032.google.protobuf.Timestamp\022\025\n" + - "\roperator_user\030\010 \001(\t\022\030\n\020operator_comment" + - "\030\t \001(\t\022\020\n\010category\030\n \001(\t\022\023\n\013description\030" + - "\013 \001(\t\0223\n\rcurrent_value\030\014 \001(\0132\034.mxaccess_" + - "gateway.v1.MxValue\0221\n\013limit_value\030\r \001(\0132" + - "\034.mxaccess_gateway.v1.MxValue\022\020\n\010degrade" + - "d\030\016 \001(\010\022?\n\017source_provider\030\017 \001(\0162&.mxacc" + - "ess_gateway.v1.AlarmProviderMode\"\240\001\n\037OnA" + - "larmProviderModeChangedEvent\0224\n\004mode\030\001 \001" + - "(\0162&.mxaccess_gateway.v1.AlarmProviderMo" + - "de\022\016\n\006reason\030\002 \001(\t\022\017\n\007hresult\030\003 \001(\005\022&\n\002a" + - "t\030\004 \001(\0132\032.google.protobuf.Timestamp\"\361\004\n\023" + - "ActiveAlarmSnapshot\022\034\n\024alarm_full_refere" + - "nce\030\001 \001(\t\022\037\n\027source_object_reference\030\002 \001" + - "(\t\022\027\n\017alarm_type_name\030\003 \001(\t\022\020\n\010severity\030" + - "\004 \001(\005\022<\n\030original_raise_timestamp\030\005 \001(\0132" + - "\032.google.protobuf.Timestamp\022?\n\rcurrent_s" + - "tate\030\006 \001(\0162(.mxaccess_gateway.v1.AlarmCo" + - "nditionState\022\020\n\010category\030\007 \001(\t\022\023\n\013descri" + - "ption\030\010 \001(\t\022=\n\031last_transition_timestamp" + - "\030\t \001(\0132\032.google.protobuf.Timestamp\022\025\n\rop" + - "erator_user\030\n \001(\t\022\030\n\020operator_comment\030\013 " + - "\001(\t\0223\n\rcurrent_value\030\014 \001(\0132\034.mxaccess_ga" + - "teway.v1.MxValue\0221\n\013limit_value\030\r \001(\0132\034." + - "mxaccess_gateway.v1.MxValue\022\020\n\010degraded\030" + - "\016 \001(\010\022?\n\017source_provider\030\017 \001(\0162&.mxacces" + - "s_gateway.v1.AlarmProviderMode\022\037\n\027from_t" + - "runcated_snapshot\030\020 \001(\010\"\220\001\n\027AcknowledgeA" + - "larmRequest\022\035\n\025client_correlation_id\030\002 \001" + - "(\t\022\034\n\024alarm_full_reference\030\003 \001(\t\022\017\n\007comm" + - "ent\030\004 \001(\t\022\025\n\roperator_user\030\005 \001(\tJ\004\010\001\020\002R\n" + - "session_id\"\361\001\n\025AcknowledgeAlarmReply\022\026\n\016" + - "correlation_id\030\002 \001(\t\022<\n\017protocol_status\030" + - "\003 \001(\0132#.mxaccess_gateway.v1.ProtocolStat" + - "us\022\024\n\007hresult\030\004 \001(\005H\000\210\001\001\0222\n\006status\030\005 \001(\013" + - "2\".mxaccess_gateway.v1.MxStatusProxy\022\032\n\022" + - "diagnostic_message\030\006 \001(\tB\n\n\010_hresultJ\004\010\001" + - "\020\002R\nsession_id\"Q\n\023StreamAlarmsRequest\022\035\n" + - "\025client_correlation_id\030\001 \001(\t\022\033\n\023alarm_fi" + - "lter_prefix\030\002 \001(\t\"\311\002\n\020AlarmFeedMessage\022@" + - "\n\014active_alarm\030\001 \001(\0132(.mxaccess_gateway." + - "v1.ActiveAlarmSnapshotH\000\022\033\n\021snapshot_com" + - "plete\030\002 \001(\010H\000\022A\n\ntransition\030\003 \001(\0132+.mxac" + - "cess_gateway.v1.OnAlarmTransitionEventH\000" + - "\022C\n\017provider_status\030\004 \001(\0132(.mxaccess_gat" + - "eway.v1.AlarmProviderStatusH\000\022C\n\017snapsho" + - "t_status\030\005 \001(\0132(.mxaccess_gateway.v1.Ala" + - "rmSnapshotStatusH\000B\t\n\007payload\"\230\001\n\023AlarmP" + - "roviderStatus\0224\n\004mode\030\001 \001(\0162&.mxaccess_g" + - "ateway.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.g" + - "oogle.protobuf.Timestamp\"(\n\023AlarmSnapsho" + - "tStatus\022\021\n\ttruncated\030\001 \001(\010\"\353\001\n\rMxStatusP" + - "roxy\022\017\n\007success\030\001 \001(\005\0227\n\010category\030\002 \001(\0162" + - "%.mxaccess_gateway.v1.MxStatusCategory\0228", - "\n\013detected_by\030\003 \001(\0162#.mxaccess_gateway.v" + - "1.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\007MxValue\0222\n\t" + - "data_type\030\001 \001(\0162\037.mxaccess_gateway.v1.Mx" + - "DataType\022\024\n\014variant_type\030\002 \001(\t\022\017\n\007is_nul" + - "l\030\003 \001(\010\022\026\n\016raw_diagnostic\030\004 \001(\t\022\025\n\rraw_d" + - "ata_type\030\005 \001(\005\022\024\n\nbool_value\030\n \001(\010H\000\022\025\n\013" + - "int32_value\030\013 \001(\005H\000\022\025\n\013int64_value\030\014 \001(\003" + - "H\000\022\025\n\013float_value\030\r \001(\002H\000\022\026\n\014double_valu" + - "e\030\016 \001(\001H\000\022\026\n\014string_value\030\017 \001(\tH\000\0225\n\017tim" + - "estamp_value\030\020 \001(\0132\032.google.protobuf.Tim" + - "estampH\000\0223\n\013array_value\030\021 \001(\0132\034.mxaccess" + - "_gateway.v1.MxArrayH\000\022\023\n\traw_value\030\022 \001(\014" + - "H\000\022@\n\022sparse_array_value\030\023 \001(\0132\".mxacces" + - "s_gateway.v1.MxSparseArrayH\000B\006\n\004kind\"\376\004\n" + - "\007MxArray\022:\n\021element_data_type\030\001 \001(\0162\037.mx" + - "access_gateway.v1.MxDataType\022\024\n\014variant_" + - "type\030\002 \001(\t\022\022\n\ndimensions\030\003 \003(\r\022\026\n\016raw_di" + - "agnostic\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_ga" + - "teway.v1.BoolArrayH\000\0227\n\014int32_values\030\013 \001" + - "(\0132\037.mxaccess_gateway.v1.Int32ArrayH\000\0227\n" + - "\014int64_values\030\014 \001(\0132\037.mxaccess_gateway.v" + - "1.Int64ArrayH\000\0227\n\014float_values\030\r \001(\0132\037.m" + - "xaccess_gateway.v1.FloatArrayH\000\0229\n\rdoubl" + - "e_values\030\016 \001(\0132 .mxaccess_gateway.v1.Dou" + - "bleArrayH\000\0229\n\rstring_values\030\017 \001(\0132 .mxac" + - "cess_gateway.v1.StringArrayH\000\022?\n\020timesta" + - "mp_values\030\020 \001(\0132#.mxaccess_gateway.v1.Ti" + - "mestampArrayH\000\0223\n\nraw_values\030\021 \001(\0132\035.mxa" + - "ccess_gateway.v1.RawArrayH\000B\010\n\006values\"\231\001" + - "\n\rMxSparseArray\022:\n\021element_data_type\030\001 \001" + - "(\0162\037.mxaccess_gateway.v1.MxDataType\022\024\n\014t" + - "otal_length\030\002 \001(\r\0226\n\010elements\030\003 \003(\0132$.mx" + - "access_gateway.v1.MxSparseElement\"M\n\017MxS" + - "parseElement\022\r\n\005index\030\001 \001(\r\022+\n\005value\030\002 \001" + - "(\0132\034.mxaccess_gateway.v1.MxValue\"\033\n\tBool" + - "Array\022\016\n\006values\030\001 \003(\010\"\034\n\nInt32Array\022\016\n\006v" + - "alues\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\013Doubl" + - "eArray\022\016\n\006values\030\001 \003(\001\"\035\n\013StringArray\022\016\n" + - "\006values\030\001 \003(\t\"<\n\016TimestampArray\022*\n\006value" + - "s\030\001 \003(\0132\032.google.protobuf.Timestamp\"\032\n\010R" + - "awArray\022\016\n\006values\030\001 \003(\014\"X\n\016ProtocolStatu" + - "s\0225\n\004code\030\001 \001(\0162\'.mxaccess_gateway.v1.Pr" + - "otocolStatusCode\022\017\n\007message\030\002 \001(\t*\314\013\n\rMx" + - "CommandKind\022\037\n\033MX_COMMAND_KIND_UNSPECIFI" + - "ED\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_KIND_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\031MX_COMMA" + - "ND_KIND_UN_ADVISE\020\007\022&\n\"MX_COMMAND_KIND_A" + - "DVISE_SUPERVISORY\020\010\022%\n!MX_COMMAND_KIND_A" + - "DD_BUFFERED_ITEM\020\t\0220\n,MX_COMMAND_KIND_SE" + - "T_BUFFERED_UPDATE_INTERVAL\020\n\022\033\n\027MX_COMMA" + - "ND_KIND_SUSPEND\020\013\022\034\n\030MX_COMMAND_KIND_ACT" + - "IVATE\020\014\022\031\n\025MX_COMMAND_KIND_WRITE\020\r\022\032\n\026MX" + - "_COMMAND_KIND_WRITE2\020\016\022!\n\035MX_COMMAND_KIN" + - "D_WRITE_SECURED\020\017\022\"\n\036MX_COMMAND_KIND_WRI" + - "TE_SECURED2\020\020\022%\n!MX_COMMAND_KIND_AUTHENT" + - "ICATE_USER\020\021\022(\n$MX_COMMAND_KIND_ARCHESTR" + - "A_USER_TO_ID\020\022\022!\n\035MX_COMMAND_KIND_ADD_IT" + - "EM_BULK\020\023\022$\n MX_COMMAND_KIND_ADVISE_ITEM" + - "_BULK\020\024\022$\n MX_COMMAND_KIND_REMOVE_ITEM_B" + - "ULK\020\025\022\'\n#MX_COMMAND_KIND_UN_ADVISE_ITEM_" + - "BULK\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" + - "#MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS\020\034\022-" + - "\n)MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_N" + - "AME\020\035\022\036\n\032MX_COMMAND_KIND_WRITE_BULK\020\036\022\037\n" + - "\033MX_COMMAND_KIND_WRITE2_BULK\020\037\022&\n\"MX_COM" + - "MAND_KIND_WRITE_SECURED_BULK\020 \022\'\n#MX_COM" + - "MAND_KIND_WRITE_SECURED2_BULK\020!\022\035\n\031MX_CO" + - "MMAND_KIND_READ_BULK\020\"\022+\n\'MX_COMMAND_KIN" + - "D_UPDATE_ALARM_WATCH_LIST\020#\022\030\n\024MX_COMMAN" + - "D_KIND_PING\020d\022%\n!MX_COMMAND_KIND_GET_SES" + - "SION_STATE\020e\022#\n\037MX_COMMAND_KIND_GET_WORK" + - "ER_INFO\020f\022 \n\034MX_COMMAND_KIND_DRAIN_EVENT" + - "S\020g\022#\n\037MX_COMMAND_KIND_SHUTDOWN_WORKER\020h" + - "*z\n\021AlarmProviderMode\022#\n\037ALARM_PROVIDER_" + - "MODE_UNSPECIFIED\020\000\022 \n\034ALARM_PROVIDER_MOD" + - "E_ALARMMGR\020\001\022\036\n\032ALARM_PROVIDER_MODE_SUBT" + - "AG\020\002*\255\002\n\rMxEventFamily\022\037\n\033MX_EVENT_FAMIL" + - "Y_UNSPECIFIED\020\000\022\"\n\036MX_EVENT_FAMILY_ON_DA" + - "TA_CHANGE\020\001\022%\n!MX_EVENT_FAMILY_ON_WRITE_" + - "COMPLETE\020\002\022&\n\"MX_EVENT_FAMILY_OPERATION_" + - "COMPLETE\020\003\022+\n\'MX_EVENT_FAMILY_ON_BUFFERE" + - "D_DATA_CHANGE\020\004\022\'\n#MX_EVENT_FAMILY_ON_AL" + - "ARM_TRANSITION\020\005\0222\n.MX_EVENT_FAMILY_ON_A" + - "LARM_PROVIDER_MODE_CHANGED\020\006*\312\001\n\023AlarmTr" + - "ansitionKind\022%\n!ALARM_TRANSITION_KIND_UN" + - "SPECIFIED\020\000\022\037\n\033ALARM_TRANSITION_KIND_RAI" + - "SE\020\001\022%\n!ALARM_TRANSITION_KIND_ACKNOWLEDG" + - "E\020\002\022\037\n\033ALARM_TRANSITION_KIND_CLEAR\020\003\022#\n\037" + - "ALARM_TRANSITION_KIND_RETRIGGER\020\004*\252\001\n\023Al" + - "armConditionState\022%\n!ALARM_CONDITION_STA" + - "TE_UNSPECIFIED\020\000\022 \n\034ALARM_CONDITION_STAT" + - "E_ACTIVE\020\001\022&\n\"ALARM_CONDITION_STATE_ACTI" + - "VE_ACKED\020\002\022\"\n\036ALARM_CONDITION_STATE_INAC" + - "TIVE\020\003*\245\003\n\020MxStatusCategory\022\"\n\036MX_STATUS" + - "_CATEGORY_UNSPECIFIED\020\000\022\036\n\032MX_STATUS_CAT" + - "EGORY_UNKNOWN\020\001\022\031\n\025MX_STATUS_CATEGORY_OK" + - "\020\002\022\036\n\032MX_STATUS_CATEGORY_PENDING\020\003\022\036\n\032MX" + - "_STATUS_CATEGORY_WARNING\020\004\022*\n&MX_STATUS_" + - "CATEGORY_COMMUNICATION_ERROR\020\005\022*\n&MX_STA" + - "TUS_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!M" + - "X_STATUS_CATEGORY_SOFTWARE_ERROR\020\t\022\"\n\036MX" + - "_STATUS_CATEGORY_OTHER_ERROR\020\n*\312\002\n\016MxSta" + - "tusSource\022 \n\034MX_STATUS_SOURCE_UNSPECIFIE" + - "D\020\000\022\034\n\030MX_STATUS_SOURCE_UNKNOWN\020\001\022#\n\037MX_" + - "STATUS_SOURCE_REQUESTING_LMX\020\002\022#\n\037MX_STA" + - "TUS_SOURCE_RESPONDING_LMX\020\003\022#\n\037MX_STATUS" + - "_SOURCE_REQUESTING_NMX\020\004\022#\n\037MX_STATUS_SO" + - "URCE_RESPONDING_NMX\020\005\0221\n-MX_STATUS_SOURC" + - "E_REQUESTING_AUTOMATION_OBJECT\020\006\0221\n-MX_S" + - "TATUS_SOURCE_RESPONDING_AUTOMATION_OBJEC" + - "T\020\007*\335\004\n\nMxDataType\022\034\n\030MX_DATA_TYPE_UNSPE" + - "CIFIED\020\000\022\030\n\024MX_DATA_TYPE_UNKNOWN\020\001\022\030\n\024MX" + - "_DATA_TYPE_NO_DATA\020\002\022\030\n\024MX_DATA_TYPE_BOO" + - "LEAN\020\003\022\030\n\024MX_DATA_TYPE_INTEGER\020\004\022\026\n\022MX_D" + - "ATA_TYPE_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_TY" + - "PE_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_TYPE_STATUS_TYPE\020\013\022\025\n\021MX_DATA_TYPE_" + - "ENUM\020\014\022-\n)MX_DATA_TYPE_SECURITY_CLASSIFI" + - "CATION_ENUM\020\r\022\"\n\036MX_DATA_TYPE_DATA_QUALI" + - "TY_TYPE\020\016\022\037\n\033MX_DATA_TYPE_QUALIFIED_ENUM" + - "\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_DATA" + - "_TYPE_END\020\023*\243\003\n\022ProtocolStatusCode\022$\n PR" + - "OTOCOL_STATUS_CODE_UNSPECIFIED\020\000\022\033\n\027PROT" + - "OCOL_STATUS_CODE_OK\020\001\022(\n$PROTOCOL_STATUS" + - "_CODE_INVALID_REQUEST\020\002\022*\n&PROTOCOL_STAT" + - "US_CODE_SESSION_NOT_FOUND\020\003\022*\n&PROTOCOL_" + - "STATUS_CODE_SESSION_NOT_READY\020\004\022+\n\'PROTO" + - "COL_STATUS_CODE_WORKER_UNAVAILABLE\020\005\022 \n\034" + - "PROTOCOL_STATUS_CODE_TIMEOUT\020\006\022!\n\035PROTOC" + - "OL_STATUS_CODE_CANCELED\020\007\022+\n\'PROTOCOL_ST" + - "ATUS_CODE_PROTOCOL_VIOLATION\020\010\022)\n%PROTOC" + - "OL_STATUS_CODE_MXACCESS_FAILURE\020\t*\277\002\n\014Se" + - "ssionState\022\035\n\031SESSION_STATE_UNSPECIFIED\020" + - "\000\022\032\n\026SESSION_STATE_CREATING\020\001\022!\n\035SESSION" + - "_STATE_STARTING_WORKER\020\002\022\"\n\036SESSION_STAT" + - "E_WAITING_FOR_PIPE\020\003\022\035\n\031SESSION_STATE_HA" + - "NDSHAKING\020\004\022%\n!SESSION_STATE_INITIALIZIN" + - "G_WORKER\020\005\022\027\n\023SESSION_STATE_READY\020\006\022\031\n\025S" + - "ESSION_STATE_CLOSING\020\007\022\030\n\024SESSION_STATE_" + - "CLOSED\020\010\022\031\n\025SESSION_STATE_FAULTED\020\t2\303\005\n\017" + - "MxAccessGateway\022]\n\013OpenSession\022\'.mxacces" + - "s_gateway.v1.OpenSessionRequest\032%.mxacce" + - "ss_gateway.v1.OpenSessionReply\022`\n\014CloseS" + - "ession\022(.mxaccess_gateway.v1.CloseSessio" + - "nRequest\032&.mxaccess_gateway.v1.CloseSess" + - "ionReply\022T\n\006Invoke\022%.mxaccess_gateway.v1" + - ".MxCommandRequest\032#.mxaccess_gateway.v1." + - "MxCommandReply\022X\n\014StreamEvents\022(.mxacces" + - "s_gateway.v1.StreamEventsRequest\032\034.mxacc" + - "ess_gateway.v1.MxEvent0\001\022l\n\020AcknowledgeA" + - "larm\022,.mxaccess_gateway.v1.AcknowledgeAl" + - "armRequest\032*.mxaccess_gateway.v1.Acknowl" + - "edgeAlarmReply\022a\n\014StreamAlarms\022(.mxacces" + - "s_gateway.v1.StreamAlarmsRequest\032%.mxacc" + - "ess_gateway.v1.AlarmFeedMessage0\001\022n\n\021Que" + - "ryActiveAlarms\022-.mxaccess_gateway.v1.Que" + - "ryActiveAlarmsRequest\032(.mxaccess_gateway" + - ".v1.ActiveAlarmSnapshot0\001B&\252\002#ZB.MOM.WW." + - "MxGateway.Contracts.Protob\006proto3" + "\006 \001(\t\022\031\n\021operator_password\030\007 \001(\t\"7\n\030Quer" + + "yActiveAlarmsCommand\022\033\n\023alarm_filter_pre" + + "fix\030\001 \001(\t\"\355\001\n\035AcknowledgeAlarmByNameComm" + + "and\022\022\n\nalarm_name\030\001 \001(\t\022\025\n\rprovider_name" + + "\030\002 \001(\t\022\022\n\ngroup_name\030\003 \001(\t\022\017\n\007comment\030\004 " + + "\001(\t\022\025\n\roperator_user\030\005 \001(\t\022\025\n\roperator_n" + + "ode\030\006 \001(\t\022\027\n\017operator_domain\030\007 \001(\t\022\032\n\022op" + + "erator_full_name\030\010 \001(\t\022\031\n\021operator_passw" + + "ord\030\t \001(\t\"E\n\026UnsubscribeBulkCommand\022\025\n\rs" + + "erver_handle\030\001 \001(\005\022\024\n\014item_handles\030\002 \003(\005" + + "\"_\n\020WriteBulkCommand\022\025\n\rserver_handle\030\001 " + + "\001(\005\0224\n\007entries\030\002 \003(\0132#.mxaccess_gateway." + + "v1.WriteBulkEntry\"c\n\016WriteBulkEntry\022\023\n\013i" + + "tem_handle\030\001 \001(\005\022+\n\005value\030\002 \001(\0132\034.mxacce" + + "ss_gateway.v1.MxValue\022\017\n\007user_id\030\003 \001(\005\"a" + + "\n\021Write2BulkCommand\022\025\n\rserver_handle\030\001 \001" + + "(\005\0225\n\007entries\030\002 \003(\0132$.mxaccess_gateway.v" + + "1.Write2BulkEntry\"\233\001\n\017Write2BulkEntry\022\023\n" + + "\013item_handle\030\001 \001(\005\022+\n\005value\030\002 \001(\0132\034.mxac" + + "cess_gateway.v1.MxValue\0225\n\017timestamp_val" + + "ue\030\003 \001(\0132\034.mxaccess_gateway.v1.MxValue\022\017" + + "\n\007user_id\030\004 \001(\005\"m\n\027WriteSecuredBulkComma" + + "nd\022\025\n\rserver_handle\030\001 \001(\005\022;\n\007entries\030\002 \003" + + "(\0132*.mxaccess_gateway.v1.WriteSecuredBul" + + "kEntry\"\214\001\n\025WriteSecuredBulkEntry\022\023\n\013item" + + "_handle\030\001 \001(\005\022\027\n\017current_user_id\030\002 \001(\005\022\030" + + "\n\020verifier_user_id\030\003 \001(\005\022+\n\005value\030\004 \001(\0132" + + "\034.mxaccess_gateway.v1.MxValue\"o\n\030WriteSe" + + "cured2BulkCommand\022\025\n\rserver_handle\030\001 \001(\005" + + "\022<\n\007entries\030\002 \003(\0132+.mxaccess_gateway.v1." + + "WriteSecured2BulkEntry\"\304\001\n\026WriteSecured2" + + "BulkEntry\022\023\n\013item_handle\030\001 \001(\005\022\027\n\017curren" + + "t_user_id\030\002 \001(\005\022\030\n\020verifier_user_id\030\003 \001(" + + "\005\022+\n\005value\030\004 \001(\0132\034.mxaccess_gateway.v1.M" + + "xValue\0225\n\017timestamp_value\030\005 \001(\0132\034.mxacce" + + "ss_gateway.v1.MxValue\"S\n\017ReadBulkCommand" + + "\022\025\n\rserver_handle\030\001 \001(\005\022\025\n\rtag_addresses" + + "\030\002 \003(\t\022\022\n\ntimeout_ms\030\003 \001(\r\"\036\n\013PingComman" + + "d\022\017\n\007message\030\001 \001(\t\"\030\n\026GetSessionStateCom" + + "mand\"\026\n\024GetWorkerInfoCommand\"(\n\022DrainEve" + + "ntsCommand\022\022\n\nmax_events\030\001 \001(\r\"H\n\025Shutdo" + + "wnWorkerCommand\022/\n\014grace_period\030\001 \001(\0132\031." + + "google.protobuf.Duration\"\206\017\n\016MxCommandRe" + + "ply\022\022\n\nsession_id\030\001 \001(\t\022\026\n\016correlation_i" + + "d\030\002 \001(\t\0220\n\004kind\030\003 \001(\0162\".mxaccess_gateway" + + ".v1.MxCommandKind\022<\n\017protocol_status\030\004 \001" + + "(\0132#.mxaccess_gateway.v1.ProtocolStatus\022" + + "\024\n\007hresult\030\005 \001(\005H\001\210\001\001\0222\n\014return_value\030\006 " + + "\001(\0132\034.mxaccess_gateway.v1.MxValue\0224\n\010sta" + + "tuses\030\007 \003(\0132\".mxaccess_gateway.v1.MxStat" + + "usProxy\022\032\n\022diagnostic_message\030\010 \001(\t\0226\n\010r" + + "egister\030\024 \001(\0132\".mxaccess_gateway.v1.Regi" + + "sterReplyH\000\0225\n\010add_item\030\025 \001(\0132!.mxaccess" + + "_gateway.v1.AddItemReplyH\000\0227\n\tadd_item2\030" + + "\026 \001(\0132\".mxaccess_gateway.v1.AddItem2Repl" + + "yH\000\022F\n\021add_buffered_item\030\027 \001(\0132).mxacces" + + "s_gateway.v1.AddBufferedItemReplyH\000\0224\n\007s" + + "uspend\030\030 \001(\0132!.mxaccess_gateway.v1.Suspe" + + "ndReplyH\000\0226\n\010activate\030\031 \001(\0132\".mxaccess_g" + + "ateway.v1.ActivateReplyH\000\022G\n\021authenticat" + + "e_user\030\032 \001(\0132*.mxaccess_gateway.v1.Authe" + + "nticateUserReplyH\000\022K\n\024archestra_user_to_" + + "id\030\033 \001(\0132+.mxaccess_gateway.v1.ArchestrA" + + "UserToIdReplyH\000\022@\n\radd_item_bulk\030\034 \001(\0132\'" + + ".mxaccess_gateway.v1.BulkSubscribeReplyH" + + "\000\022C\n\020advise_item_bulk\030\035 \001(\0132\'.mxaccess_g" + + "ateway.v1.BulkSubscribeReplyH\000\022C\n\020remove" + + "_item_bulk\030\036 \001(\0132\'.mxaccess_gateway.v1.B" + + "ulkSubscribeReplyH\000\022F\n\023un_advise_item_bu" + + "lk\030\037 \001(\0132\'.mxaccess_gateway.v1.BulkSubsc" + + "ribeReplyH\000\022A\n\016subscribe_bulk\030 \001(\0132\'.mx" + + "access_gateway.v1.BulkSubscribeReplyH\000\022C" + + "\n\020unsubscribe_bulk\030! \001(\0132\'.mxaccess_gate" + + "way.v1.BulkSubscribeReplyH\000\022N\n\021acknowled" + + "ge_alarm\030\" \001(\01321.mxaccess_gateway.v1.Ack" + + "nowledgeAlarmReplyPayloadH\000\022Q\n\023query_act" + + "ive_alarms\030# \001(\01322.mxaccess_gateway.v1.Q" + + "ueryActiveAlarmsReplyPayloadH\000\0229\n\nwrite_" + + "bulk\030$ \001(\0132#.mxaccess_gateway.v1.BulkWri" + + "teReplyH\000\022:\n\013write2_bulk\030% \001(\0132#.mxacces" + + "s_gateway.v1.BulkWriteReplyH\000\022A\n\022write_s" + + "ecured_bulk\030& \001(\0132#.mxaccess_gateway.v1." + + "BulkWriteReplyH\000\022B\n\023write_secured2_bulk\030" + + "\' \001(\0132#.mxaccess_gateway.v1.BulkWriteRep" + + "lyH\000\0227\n\tread_bulk\030( \001(\0132\".mxaccess_gatew" + + "ay.v1.BulkReadReplyH\000\022?\n\rsession_state\030d" + + " \001(\0132&.mxaccess_gateway.v1.SessionStateR" + + "eplyH\000\022;\n\013worker_info\030e \001(\0132$.mxaccess_g" + + "ateway.v1.WorkerInfoReplyH\000\022=\n\014drain_eve" + + "nts\030f \001(\0132%.mxaccess_gateway.v1.DrainEve" + + "ntsReplyH\000B\t\n\007payloadB\n\n\010_hresult\"&\n\rReg" + + "isterReply\022\025\n\rserver_handle\030\001 \001(\005\"#\n\014Add" + + "ItemReply\022\023\n\013item_handle\030\001 \001(\005\"$\n\rAddIte" + + "m2Reply\022\023\n\013item_handle\030\001 \001(\005\"+\n\024AddBuffe" + + "redItemReply\022\023\n\013item_handle\030\001 \001(\005\"B\n\014Sus" + + "pendReply\0222\n\006status\030\001 \001(\0132\".mxaccess_gat" + + "eway.v1.MxStatusProxy\"C\n\rActivateReply\0222" + + "\n\006status\030\001 \001(\0132\".mxaccess_gateway.v1.MxS" + + "tatusProxy\"(\n\025AuthenticateUserReply\022\017\n\007u" + + "ser_id\030\001 \001(\005\")\n\026ArchestrAUserToIdReply\022\017" + + "\n\007user_id\030\001 \001(\005\"\201\001\n\017SubscribeResult\022\025\n\rs" + + "erver_handle\030\001 \001(\005\022\023\n\013tag_address\030\002 \001(\t\022" + + "\023\n\013item_handle\030\003 \001(\005\022\026\n\016was_successful\030\004" + + " \001(\010\022\025\n\rerror_message\030\005 \001(\t\"K\n\022BulkSubsc" + + "ribeReply\0225\n\007results\030\001 \003(\0132$.mxaccess_ga" + + "teway.v1.SubscribeResult\"\304\001\n\017BulkWriteRe" + + "sult\022\025\n\rserver_handle\030\001 \001(\005\022\023\n\013item_hand" + + "le\030\002 \001(\005\022\026\n\016was_successful\030\003 \001(\010\022\024\n\007hres" + + "ult\030\004 \001(\005H\000\210\001\001\0224\n\010statuses\030\005 \003(\0132\".mxacc" + + "ess_gateway.v1.MxStatusProxy\022\025\n\rerror_me" + + "ssage\030\006 \001(\tB\n\n\010_hresult\"G\n\016BulkWriteRepl" + + "y\0225\n\007results\030\001 \003(\0132$.mxaccess_gateway.v1" + + ".BulkWriteResult\"\276\002\n\016BulkReadResult\022\025\n\rs" + + "erver_handle\030\001 \001(\005\022\023\n\013tag_address\030\002 \001(\t\022" + + "\023\n\013item_handle\030\003 \001(\005\022\026\n\016was_successful\030\004" + + " \001(\010\022\022\n\nwas_cached\030\005 \001(\010\022+\n\005value\030\006 \001(\0132" + + "\034.mxaccess_gateway.v1.MxValue\022\017\n\007quality" + + "\030\007 \001(\005\0224\n\020source_timestamp\030\010 \001(\0132\032.googl" + + "e.protobuf.Timestamp\0224\n\010statuses\030\t \003(\0132\"" + + ".mxaccess_gateway.v1.MxStatusProxy\022\025\n\rer" + + "ror_message\030\n \001(\t\"E\n\rBulkReadReply\0224\n\007re" + + "sults\030\001 \003(\0132#.mxaccess_gateway.v1.BulkRe" + + "adResult\"E\n\021SessionStateReply\0220\n\005state\030\001" + + " \001(\0162!.mxaccess_gateway.v1.SessionState\"" + + "u\n\017WorkerInfoReply\022\031\n\021worker_process_id\030" + + "\001 \001(\005\022\026\n\016worker_version\030\002 \001(\t\022\027\n\017mxacces" + + "s_progid\030\003 \001(\t\022\026\n\016mxaccess_clsid\030\004 \001(\t\"@" + + "\n\020DrainEventsReply\022,\n\006events\030\001 \003(\0132\034.mxa" + + "ccess_gateway.v1.MxEvent\"5\n\034AcknowledgeA" + + "larmReplyPayload\022\025\n\rnative_status\030\001 \001(\005\"" + + "x\n\035QueryActiveAlarmsReplyPayload\022;\n\tsnap" + + "shots\030\001 \003(\0132(.mxaccess_gateway.v1.Active" + + "AlarmSnapshot\022\032\n\022snapshot_truncated\030\002 \001(" + + "\010\"\217\010\n\007MxEvent\0222\n\006family\030\001 \001(\0162\".mxaccess" + + "_gateway.v1.MxEventFamily\022\022\n\nsession_id\030" + + "\002 \001(\t\022\025\n\rserver_handle\030\003 \001(\005\022\023\n\013item_han" + + "dle\030\004 \001(\005\022+\n\005value\030\005 \001(\0132\034.mxaccess_gate" + + "way.v1.MxValue\022\017\n\007quality\030\006 \001(\005\0224\n\020sourc" + + "e_timestamp\030\007 \001(\0132\032.google.protobuf.Time" + + "stamp\0224\n\010statuses\030\010 \003(\0132\".mxaccess_gatew" + + "ay.v1.MxStatusProxy\022\027\n\017worker_sequence\030\t" + + " \001(\004\0224\n\020worker_timestamp\030\n \001(\0132\032.google." + + "protobuf.Timestamp\022=\n\031gateway_receive_ti" + + "mestamp\030\013 \001(\0132\032.google.protobuf.Timestam" + + "p\022\024\n\007hresult\030\014 \001(\005H\001\210\001\001\022\022\n\nraw_status\030\r " + + "\001(\t\0227\n\nreplay_gap\030\016 \001(\0132\036.mxaccess_gatew" + + "ay.v1.ReplayGapH\002\210\001\001\022@\n\016on_data_change\030\024" + + " \001(\0132&.mxaccess_gateway.v1.OnDataChangeE" + + "ventH\000\022F\n\021on_write_complete\030\025 \001(\0132).mxac" + + "cess_gateway.v1.OnWriteCompleteEventH\000\022I" + + "\n\022operation_complete\030\026 \001(\0132+.mxaccess_ga" + + "teway.v1.OperationCompleteEventH\000\022Q\n\027on_" + + "buffered_data_change\030\027 \001(\0132..mxaccess_ga" + + "teway.v1.OnBufferedDataChangeEventH\000\022J\n\023" + + "on_alarm_transition\030\030 \001(\0132+.mxaccess_gat" + + "eway.v1.OnAlarmTransitionEventH\000\022^\n\036on_a" + + "larm_provider_mode_changed\030\031 \001(\01324.mxacc" + + "ess_gateway.v1.OnAlarmProviderModeChange" + + "dEventH\000B\006\n\004bodyB\n\n\010_hresultB\r\n\013_replay_" + + "gap\"P\n\tReplayGap\022 \n\030requested_after_sequ" + + "ence\030\001 \001(\004\022!\n\031oldest_available_sequence\030" + + "\002 \001(\004\"\023\n\021OnDataChangeEvent\"\026\n\024OnWriteCom" + + "pleteEvent\"\030\n\026OperationCompleteEvent\"\324\001\n" + + "\031OnBufferedDataChangeEvent\0222\n\tdata_type\030" + + "\001 \001(\0162\037.mxaccess_gateway.v1.MxDataType\0224" + + "\n\016quality_values\030\002 \001(\0132\034.mxaccess_gatewa" + + "y.v1.MxArray\0226\n\020timestamp_values\030\003 \001(\0132\034" + + ".mxaccess_gateway.v1.MxArray\022\025\n\rraw_data" + + "_type\030\004 \001(\005\"\320\004\n\026OnAlarmTransitionEvent\022\034" + + "\n\024alarm_full_reference\030\001 \001(\t\022\037\n\027source_o" + + "bject_reference\030\002 \001(\t\022\027\n\017alarm_type_name" + + "\030\003 \001(\t\022A\n\017transition_kind\030\004 \001(\0162(.mxacce" + + "ss_gateway.v1.AlarmTransitionKind\022\020\n\010sev" + + "erity\030\005 \001(\005\022<\n\030original_raise_timestamp\030" + + "\006 \001(\0132\032.google.protobuf.Timestamp\0228\n\024tra" + + "nsition_timestamp\030\007 \001(\0132\032.google.protobu" + + "f.Timestamp\022\025\n\roperator_user\030\010 \001(\t\022\030\n\020op" + + "erator_comment\030\t \001(\t\022\020\n\010category\030\n \001(\t\022\023" + + "\n\013description\030\013 \001(\t\0223\n\rcurrent_value\030\014 \001" + + "(\0132\034.mxaccess_gateway.v1.MxValue\0221\n\013limi" + + "t_value\030\r \001(\0132\034.mxaccess_gateway.v1.MxVa" + + "lue\022\020\n\010degraded\030\016 \001(\010\022?\n\017source_provider" + + "\030\017 \001(\0162&.mxaccess_gateway.v1.AlarmProvid" + + "erMode\"\240\001\n\037OnAlarmProviderModeChangedEve" + + "nt\0224\n\004mode\030\001 \001(\0162&.mxaccess_gateway.v1.A" + + "larmProviderMode\022\016\n\006reason\030\002 \001(\t\022\017\n\007hres" + + "ult\030\003 \001(\005\022&\n\002at\030\004 \001(\0132\032.google.protobuf." + + "Timestamp\"\361\004\n\023ActiveAlarmSnapshot\022\034\n\024ala" + + "rm_full_reference\030\001 \001(\t\022\037\n\027source_object" + + "_reference\030\002 \001(\t\022\027\n\017alarm_type_name\030\003 \001(" + + "\t\022\020\n\010severity\030\004 \001(\005\022<\n\030original_raise_ti" + + "mestamp\030\005 \001(\0132\032.google.protobuf.Timestam" + + "p\022?\n\rcurrent_state\030\006 \001(\0162(.mxaccess_gate" + + "way.v1.AlarmConditionState\022\020\n\010category\030\007" + + " \001(\t\022\023\n\013description\030\010 \001(\t\022=\n\031last_transi" + + "tion_timestamp\030\t \001(\0132\032.google.protobuf.T" + + "imestamp\022\025\n\roperator_user\030\n \001(\t\022\030\n\020opera" + + "tor_comment\030\013 \001(\t\0223\n\rcurrent_value\030\014 \001(\013" + + "2\034.mxaccess_gateway.v1.MxValue\0221\n\013limit_" + + "value\030\r \001(\0132\034.mxaccess_gateway.v1.MxValu" + + "e\022\020\n\010degraded\030\016 \001(\010\022?\n\017source_provider\030\017" + + " \001(\0162&.mxaccess_gateway.v1.AlarmProvider" + + "Mode\022\037\n\027from_truncated_snapshot\030\020 \001(\010\"\304\001" + + "\n\027AcknowledgeAlarmRequest\022\035\n\025client_corr" + + "elation_id\030\002 \001(\t\022\034\n\024alarm_full_reference" + + "\030\003 \001(\t\022\017\n\007comment\030\004 \001(\t\022\025\n\roperator_user" + + "\030\005 \001(\t\022\031\n\021operator_password\030\006 \001(\t\022\027\n\017ope" + + "rator_domain\030\007 \001(\tJ\004\010\001\020\002R\nsession_id\"\361\001\n" + + "\025AcknowledgeAlarmReply\022\026\n\016correlation_id" + + "\030\002 \001(\t\022<\n\017protocol_status\030\003 \001(\0132#.mxacce" + + "ss_gateway.v1.ProtocolStatus\022\024\n\007hresult\030" + + "\004 \001(\005H\000\210\001\001\0222\n\006status\030\005 \001(\0132\".mxaccess_ga" + + "teway.v1.MxStatusProxy\022\032\n\022diagnostic_mes" + + "sage\030\006 \001(\tB\n\n\010_hresultJ\004\010\001\020\002R\nsession_id" + + "\"Q\n\023StreamAlarmsRequest\022\035\n\025client_correl" + + "ation_id\030\001 \001(\t\022\033\n\023alarm_filter_prefix\030\002 " + + "\001(\t\"\311\002\n\020AlarmFeedMessage\022@\n\014active_alarm" + + "\030\001 \001(\0132(.mxaccess_gateway.v1.ActiveAlarm" + + "SnapshotH\000\022\033\n\021snapshot_complete\030\002 \001(\010H\000\022" + + "A\n\ntransition\030\003 \001(\0132+.mxaccess_gateway.v" + + "1.OnAlarmTransitionEventH\000\022C\n\017provider_s" + + "tatus\030\004 \001(\0132(.mxaccess_gateway.v1.AlarmP" + + "roviderStatusH\000\022C\n\017snapshot_status\030\005 \001(\013" + + "2(.mxaccess_gateway.v1.AlarmSnapshotStat" + + "usH\000B\t\n\007payload\"\230\001\n\023AlarmProviderStatus\022" + + "4\n\004mode\030\001 \001(\0162&.mxaccess_gateway.v1.Alar" + + "mProviderMode\022\020\n\010degraded\030\002 \001(\010\022\016\n\006reaso" + + "n\030\003 \001(\t\022)\n\005since\030\004 \001(\0132\032.google.protobuf" + + ".Timestamp\"(\n\023AlarmSnapshotStatus\022\021\n\ttru", + "ncated\030\001 \001(\010\"\353\001\n\rMxStatusProxy\022\017\n\007succes" + + "s\030\001 \001(\005\0227\n\010category\030\002 \001(\0162%.mxaccess_gat" + + "eway.v1.MxStatusCategory\0228\n\013detected_by\030" + + "\003 \001(\0162#.mxaccess_gateway.v1.MxStatusSour" + + "ce\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\007MxValue\0222\n\tdata_type\030\001 \001(" + + "\0162\037.mxaccess_gateway.v1.MxDataType\022\024\n\014va" + + "riant_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_value\030\014 \001(\003H\000\022\025\n\013float_va" + + "lue\030\r \001(\002H\000\022\026\n\014double_value\030\016 \001(\001H\000\022\026\n\014s" + + "tring_value\030\017 \001(\tH\000\0225\n\017timestamp_value\030\020" + + " \001(\0132\032.google.protobuf.TimestampH\000\0223\n\013ar" + + "ray_value\030\021 \001(\0132\034.mxaccess_gateway.v1.Mx" + + "ArrayH\000\022\023\n\traw_value\030\022 \001(\014H\000\022@\n\022sparse_a" + + "rray_value\030\023 \001(\0132\".mxaccess_gateway.v1.M" + + "xSparseArrayH\000B\006\n\004kind\"\376\004\n\007MxArray\022:\n\021el" + + "ement_data_type\030\001 \001(\0162\037.mxaccess_gateway" + + ".v1.MxDataType\022\024\n\014variant_type\030\002 \001(\t\022\022\n\n" + + "dimensions\030\003 \003(\r\022\026\n\016raw_diagnostic\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_gateway.v1.BoolA" + + "rrayH\000\0227\n\014int32_values\030\013 \001(\0132\037.mxaccess_" + + "gateway.v1.Int32ArrayH\000\0227\n\014int64_values\030" + + "\014 \001(\0132\037.mxaccess_gateway.v1.Int64ArrayH\000" + + "\0227\n\014float_values\030\r \001(\0132\037.mxaccess_gatewa" + + "y.v1.FloatArrayH\000\0229\n\rdouble_values\030\016 \001(\013" + + "2 .mxaccess_gateway.v1.DoubleArrayH\000\0229\n\r" + + "string_values\030\017 \001(\0132 .mxaccess_gateway.v" + + "1.StringArrayH\000\022?\n\020timestamp_values\030\020 \001(" + + "\0132#.mxaccess_gateway.v1.TimestampArrayH\000" + + "\0223\n\nraw_values\030\021 \001(\0132\035.mxaccess_gateway." + + "v1.RawArrayH\000B\010\n\006values\"\231\001\n\rMxSparseArra" + + "y\022:\n\021element_data_type\030\001 \001(\0162\037.mxaccess_" + + "gateway.v1.MxDataType\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\005value\030\002 \001(\0132\034.mxaccess_" + + "gateway.v1.MxValue\"\033\n\tBoolArray\022\016\n\006value" + + "s\030\001 \003(\010\"\034\n\nInt32Array\022\016\n\006values\030\001 \003(\005\"\034\n" + + "\nInt64Array\022\016\n\006values\030\001 \003(\003\"\034\n\nFloatArra" + + "y\022\016\n\006values\030\001 \003(\002\"\035\n\013DoubleArray\022\016\n\006valu" + + "es\030\001 \003(\001\"\035\n\013StringArray\022\016\n\006values\030\001 \003(\t\"" + + "<\n\016TimestampArray\022*\n\006values\030\001 \003(\0132\032.goog" + + "le.protobuf.Timestamp\"\032\n\010RawArray\022\016\n\006val" + + "ues\030\001 \003(\014\"X\n\016ProtocolStatus\0225\n\004code\030\001 \001(" + + "\0162\'.mxaccess_gateway.v1.ProtocolStatusCo" + + "de\022\017\n\007message\030\002 \001(\t*\314\013\n\rMxCommandKind\022\037\n" + + "\033MX_COMMAND_KIND_UNSPECIFIED\020\000\022\034\n\030MX_COM" + + "MAND_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_KIND_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\031MX_COMMAND_KIND_UN_ADV" + + "ISE\020\007\022&\n\"MX_COMMAND_KIND_ADVISE_SUPERVIS" + + "ORY\020\010\022%\n!MX_COMMAND_KIND_ADD_BUFFERED_IT" + + "EM\020\t\0220\n,MX_COMMAND_KIND_SET_BUFFERED_UPD" + + "ATE_INTERVAL\020\n\022\033\n\027MX_COMMAND_KIND_SUSPEN" + + "D\020\013\022\034\n\030MX_COMMAND_KIND_ACTIVATE\020\014\022\031\n\025MX_" + + "COMMAND_KIND_WRITE\020\r\022\032\n\026MX_COMMAND_KIND_" + + "WRITE2\020\016\022!\n\035MX_COMMAND_KIND_WRITE_SECURE" + + "D\020\017\022\"\n\036MX_COMMAND_KIND_WRITE_SECURED2\020\020\022" + + "%\n!MX_COMMAND_KIND_AUTHENTICATE_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 M" + + "X_COMMAND_KIND_ADVISE_ITEM_BULK\020\024\022$\n MX_" + + "COMMAND_KIND_REMOVE_ITEM_BULK\020\025\022\'\n#MX_CO" + + "MMAND_KIND_UN_ADVISE_ITEM_BULK\020\026\022\"\n\036MX_C" + + "OMMAND_KIND_SUBSCRIBE_BULK\020\027\022$\n MX_COMMA" + + "ND_KIND_UNSUBSCRIBE_BULK\020\030\022$\n MX_COMMAND" + + "_KIND_SUBSCRIBE_ALARMS\020\031\022&\n\"MX_COMMAND_K" + + "IND_UNSUBSCRIBE_ALARMS\020\032\022%\n!MX_COMMAND_K" + + "IND_ACKNOWLEDGE_ALARM\020\033\022\'\n#MX_COMMAND_KI" + + "ND_QUERY_ACTIVE_ALARMS\020\034\022-\n)MX_COMMAND_K" + + "IND_ACKNOWLEDGE_ALARM_BY_NAME\020\035\022\036\n\032MX_CO" + + "MMAND_KIND_WRITE_BULK\020\036\022\037\n\033MX_COMMAND_KI" + + "ND_WRITE2_BULK\020\037\022&\n\"MX_COMMAND_KIND_WRIT" + + "E_SECURED_BULK\020 \022\'\n#MX_COMMAND_KIND_WRIT" + + "E_SECURED2_BULK\020!\022\035\n\031MX_COMMAND_KIND_REA" + + "D_BULK\020\"\022+\n\'MX_COMMAND_KIND_UPDATE_ALARM" + + "_WATCH_LIST\020#\022\030\n\024MX_COMMAND_KIND_PING\020d\022" + + "%\n!MX_COMMAND_KIND_GET_SESSION_STATE\020e\022#" + + "\n\037MX_COMMAND_KIND_GET_WORKER_INFO\020f\022 \n\034M" + + "X_COMMAND_KIND_DRAIN_EVENTS\020g\022#\n\037MX_COMM" + + "AND_KIND_SHUTDOWN_WORKER\020h*z\n\021AlarmProvi" + + "derMode\022#\n\037ALARM_PROVIDER_MODE_UNSPECIFI" + + "ED\020\000\022 \n\034ALARM_PROVIDER_MODE_ALARMMGR\020\001\022\036" + + "\n\032ALARM_PROVIDER_MODE_SUBTAG\020\002*\255\002\n\rMxEve" + + "ntFamily\022\037\n\033MX_EVENT_FAMILY_UNSPECIFIED\020" + + "\000\022\"\n\036MX_EVENT_FAMILY_ON_DATA_CHANGE\020\001\022%\n" + + "!MX_EVENT_FAMILY_ON_WRITE_COMPLETE\020\002\022&\n\"" + + "MX_EVENT_FAMILY_OPERATION_COMPLETE\020\003\022+\n\'" + + "MX_EVENT_FAMILY_ON_BUFFERED_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\023AlarmTransitionKind\022%" + + "\n!ALARM_TRANSITION_KIND_UNSPECIFIED\020\000\022\037\n" + + "\033ALARM_TRANSITION_KIND_RAISE\020\001\022%\n!ALARM_" + + "TRANSITION_KIND_ACKNOWLEDGE\020\002\022\037\n\033ALARM_T" + + "RANSITION_KIND_CLEAR\020\003\022#\n\037ALARM_TRANSITI" + + "ON_KIND_RETRIGGER\020\004*\252\001\n\023AlarmConditionSt" + + "ate\022%\n!ALARM_CONDITION_STATE_UNSPECIFIED" + + "\020\000\022 \n\034ALARM_CONDITION_STATE_ACTIVE\020\001\022&\n\"" + + "ALARM_CONDITION_STATE_ACTIVE_ACKED\020\002\022\"\n\036" + + "ALARM_CONDITION_STATE_INACTIVE\020\003*\245\003\n\020MxS" + + "tatusCategory\022\"\n\036MX_STATUS_CATEGORY_UNSP" + + "ECIFIED\020\000\022\036\n\032MX_STATUS_CATEGORY_UNKNOWN\020" + + "\001\022\031\n\025MX_STATUS_CATEGORY_OK\020\002\022\036\n\032MX_STATU" + + "S_CATEGORY_PENDING\020\003\022\036\n\032MX_STATUS_CATEGO" + + "RY_WARNING\020\004\022*\n&MX_STATUS_CATEGORY_COMMU" + + "NICATION_ERROR\020\005\022*\n&MX_STATUS_CATEGORY_C" + + "ONFIGURATION_ERROR\020\006\022(\n$MX_STATUS_CATEGO" + + "RY_OPERATIONAL_ERROR\020\007\022%\n!MX_STATUS_CATE" + + "GORY_SECURITY_ERROR\020\010\022%\n!MX_STATUS_CATEG" + + "ORY_SOFTWARE_ERROR\020\t\022\"\n\036MX_STATUS_CATEGO" + + "RY_OTHER_ERROR\020\n*\312\002\n\016MxStatusSource\022 \n\034M" + + "X_STATUS_SOURCE_UNSPECIFIED\020\000\022\034\n\030MX_STAT" + + "US_SOURCE_UNKNOWN\020\001\022#\n\037MX_STATUS_SOURCE_" + + "REQUESTING_LMX\020\002\022#\n\037MX_STATUS_SOURCE_RES" + + "PONDING_LMX\020\003\022#\n\037MX_STATUS_SOURCE_REQUES" + + "TING_NMX\020\004\022#\n\037MX_STATUS_SOURCE_RESPONDIN" + + "G_NMX\020\005\0221\n-MX_STATUS_SOURCE_REQUESTING_A" + + "UTOMATION_OBJECT\020\006\0221\n-MX_STATUS_SOURCE_R" + + "ESPONDING_AUTOMATION_OBJECT\020\007*\335\004\n\nMxData" + + "Type\022\034\n\030MX_DATA_TYPE_UNSPECIFIED\020\000\022\030\n\024MX" + + "_DATA_TYPE_UNKNOWN\020\001\022\030\n\024MX_DATA_TYPE_NO_" + + "DATA\020\002\022\030\n\024MX_DATA_TYPE_BOOLEAN\020\003\022\030\n\024MX_D" + + "ATA_TYPE_INTEGER\020\004\022\026\n\022MX_DATA_TYPE_FLOAT" + + "\020\005\022\027\n\023MX_DATA_TYPE_DOUBLE\020\006\022\027\n\023MX_DATA_T" + + "YPE_STRING\020\007\022\025\n\021MX_DATA_TYPE_TIME\020\010\022\035\n\031M" + + "X_DATA_TYPE_ELAPSED_TIME\020\t\022\037\n\033MX_DATA_TY" + + "PE_REFERENCE_TYPE\020\n\022\034\n\030MX_DATA_TYPE_STAT" + + "US_TYPE\020\013\022\025\n\021MX_DATA_TYPE_ENUM\020\014\022-\n)MX_D" + + "ATA_TYPE_SECURITY_CLASSIFICATION_ENUM\020\r\022" + + "\"\n\036MX_DATA_TYPE_DATA_QUALITY_TYPE\020\016\022\037\n\033M" + + "X_DATA_TYPE_QUALIFIED_ENUM\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_TY" + + "PE_BIG_STRING\020\022\022\024\n\020MX_DATA_TYPE_END\020\023*\243\003" + + "\n\022ProtocolStatusCode\022$\n PROTOCOL_STATUS_" + + "CODE_UNSPECIFIED\020\000\022\033\n\027PROTOCOL_STATUS_CO" + + "DE_OK\020\001\022(\n$PROTOCOL_STATUS_CODE_INVALID_" + + "REQUEST\020\002\022*\n&PROTOCOL_STATUS_CODE_SESSIO" + + "N_NOT_FOUND\020\003\022*\n&PROTOCOL_STATUS_CODE_SE" + + "SSION_NOT_READY\020\004\022+\n\'PROTOCOL_STATUS_COD" + + "E_WORKER_UNAVAILABLE\020\005\022 \n\034PROTOCOL_STATU" + + "S_CODE_TIMEOUT\020\006\022!\n\035PROTOCOL_STATUS_CODE" + + "_CANCELED\020\007\022+\n\'PROTOCOL_STATUS_CODE_PROT" + + "OCOL_VIOLATION\020\010\022)\n%PROTOCOL_STATUS_CODE" + + "_MXACCESS_FAILURE\020\t*\277\002\n\014SessionState\022\035\n\031" + + "SESSION_STATE_UNSPECIFIED\020\000\022\032\n\026SESSION_S" + + "TATE_CREATING\020\001\022!\n\035SESSION_STATE_STARTIN" + + "G_WORKER\020\002\022\"\n\036SESSION_STATE_WAITING_FOR_" + + "PIPE\020\003\022\035\n\031SESSION_STATE_HANDSHAKING\020\004\022%\n" + + "!SESSION_STATE_INITIALIZING_WORKER\020\005\022\027\n\023" + + "SESSION_STATE_READY\020\006\022\031\n\025SESSION_STATE_C" + + "LOSING\020\007\022\030\n\024SESSION_STATE_CLOSED\020\010\022\031\n\025SE" + + "SSION_STATE_FAULTED\020\t2\303\005\n\017MxAccessGatewa" + + "y\022]\n\013OpenSession\022\'.mxaccess_gateway.v1.O" + + "penSessionRequest\032%.mxaccess_gateway.v1." + + "OpenSessionReply\022`\n\014CloseSession\022(.mxacc" + + "ess_gateway.v1.CloseSessionRequest\032&.mxa" + + "ccess_gateway.v1.CloseSessionReply\022T\n\006In" + + "voke\022%.mxaccess_gateway.v1.MxCommandRequ" + + "est\032#.mxaccess_gateway.v1.MxCommandReply" + + "\022X\n\014StreamEvents\022(.mxaccess_gateway.v1.S" + + "treamEventsRequest\032\034.mxaccess_gateway.v1" + + ".MxEvent0\001\022l\n\020AcknowledgeAlarm\022,.mxacces" + + "s_gateway.v1.AcknowledgeAlarmRequest\032*.m" + + "xaccess_gateway.v1.AcknowledgeAlarmReply" + + "\022a\n\014StreamAlarms\022(.mxaccess_gateway.v1.S" + + "treamAlarmsRequest\032%.mxaccess_gateway.v1" + + ".AlarmFeedMessage0\001\022n\n\021QueryActiveAlarms" + + "\022-.mxaccess_gateway.v1.QueryActiveAlarms" + + "Request\032(.mxaccess_gateway.v1.ActiveAlar" + + "mSnapshot0\001B&\252\002#ZB.MOM.WW.MxGateway.Cont" + + "racts.Protob\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -108064,7 +108878,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { internal_static_mxaccess_gateway_v1_AcknowledgeAlarmCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AcknowledgeAlarmCommand_descriptor, - new java.lang.String[] { "AlarmGuid", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName", }); + new java.lang.String[] { "AlarmGuid", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName", "OperatorPassword", }); internal_static_mxaccess_gateway_v1_QueryActiveAlarmsCommand_descriptor = getDescriptor().getMessageType(37); internal_static_mxaccess_gateway_v1_QueryActiveAlarmsCommand_fieldAccessorTable = new @@ -108076,7 +108890,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { internal_static_mxaccess_gateway_v1_AcknowledgeAlarmByNameCommand_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AcknowledgeAlarmByNameCommand_descriptor, - new java.lang.String[] { "AlarmName", "ProviderName", "GroupName", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName", }); + new java.lang.String[] { "AlarmName", "ProviderName", "GroupName", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName", "OperatorPassword", }); internal_static_mxaccess_gateway_v1_UnsubscribeBulkCommand_descriptor = getDescriptor().getMessageType(39); internal_static_mxaccess_gateway_v1_UnsubscribeBulkCommand_fieldAccessorTable = new @@ -108346,7 +109160,7 @@ public final class MxaccessGateway extends com.google.protobuf.GeneratedFile { internal_static_mxaccess_gateway_v1_AcknowledgeAlarmRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_mxaccess_gateway_v1_AcknowledgeAlarmRequest_descriptor, - new java.lang.String[] { "ClientCorrelationId", "AlarmFullReference", "Comment", "OperatorUser", }); + new java.lang.String[] { "ClientCorrelationId", "AlarmFullReference", "Comment", "OperatorUser", "OperatorPassword", "OperatorDomain", }); internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReply_descriptor = getDescriptor().getMessageType(84); internal_static_mxaccess_gateway_v1_AcknowledgeAlarmReply_fieldAccessorTable = new 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 b40fe5b..6965356 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 @@ -1822,6 +1822,31 @@ public final class MxGatewayCli implements Callable { @Option(names = "--operator", description = "Operator user performing the acknowledge.") String operator = ""; + @Option(names = "--operator-domain", description = "Operator Galaxy domain (optional).") + String operatorDomain = ""; + + @Option( + names = "--operator-password", + description = "Operator Galaxy password (credential; prefer --operator-password-env). Never echoed.") + String operatorPassword; + + @Option( + names = "--operator-password-env", + defaultValue = "MXGATEWAY_OPERATOR_PASSWORD", + description = "Environment variable holding the operator password when --operator-password is omitted.") + String operatorPasswordEnv; + + private String resolveOperatorPassword() { + if (operatorPassword != null && !operatorPassword.isEmpty()) { + return operatorPassword; + } + String name = operatorPasswordEnv == null || operatorPasswordEnv.isBlank() + ? "MXGATEWAY_OPERATOR_PASSWORD" + : operatorPasswordEnv; + String value = System.getenv(name); + return value == null ? "" : value; + } + AcknowledgeAlarmCommand(MxGatewayCliClientFactory clientFactory) { super(clientFactory); } @@ -1833,6 +1858,8 @@ public final class MxGatewayCli implements Callable { .setAlarmFullReference(reference) .setComment(comment) .setOperatorUser(operator) + .setOperatorDomain(operatorDomain == null ? "" : operatorDomain) + .setOperatorPassword(resolveOperatorPassword()) .build()); writeOutput( "acknowledge-alarm", diff --git a/clients/java/zb-mom-ww-mxgateway-cli/src/test/java/com/zb/mom/ww/mxgateway/cli/MxGatewayCliTests.java b/clients/java/zb-mom-ww-mxgateway-cli/src/test/java/com/zb/mom/ww/mxgateway/cli/MxGatewayCliTests.java index c8e0bb8..49ee7a8 100644 --- a/clients/java/zb-mom-ww-mxgateway-cli/src/test/java/com/zb/mom/ww/mxgateway/cli/MxGatewayCliTests.java +++ b/clients/java/zb-mom-ww-mxgateway-cli/src/test/java/com/zb/mom/ww/mxgateway/cli/MxGatewayCliTests.java @@ -714,9 +714,16 @@ final class MxGatewayCliTests { "checked", "--operator", "operator1", + "--operator-domain", + "CORP", + "--operator-password", + "pw-secret", "--json"); assertEquals(0, run.exitCode()); + assertEquals("CORP", factory.client.lastAcknowledgeAlarmRequest.getOperatorDomain()); + assertEquals("pw-secret", factory.client.lastAcknowledgeAlarmRequest.getOperatorPassword()); + assertFalse(run.output().contains("pw-secret"), run.output()); assertEquals("Tank01.Level.HiHi", factory.client.lastAcknowledgeAlarmRequest.getAlarmFullReference()); assertEquals("checked", factory.client.lastAcknowledgeAlarmRequest.getComment()); assertEquals("operator1", factory.client.lastAcknowledgeAlarmRequest.getOperatorUser()); @@ -770,6 +777,10 @@ final class MxGatewayCliTests { "--plaintext", "--reference", "\\Galaxy\\Area001.Pump001.PumpFault", + "--operator", + "operator1", + "--operator-password-env", + "MXGATEWAY_OPERATOR_PASSWORD", "--json" }; assertReadmeExampleParses(args); diff --git a/clients/java/zb-mom-ww-mxgateway-client/src/main/java/com/zb/mom/ww/mxgateway/client/MxGatewayClient.java b/clients/java/zb-mom-ww-mxgateway-client/src/main/java/com/zb/mom/ww/mxgateway/client/MxGatewayClient.java index 8021011..aa23f6a 100644 --- a/clients/java/zb-mom-ww-mxgateway-client/src/main/java/com/zb/mom/ww/mxgateway/client/MxGatewayClient.java +++ b/clients/java/zb-mom-ww-mxgateway-client/src/main/java/com/zb/mom/ww/mxgateway/client/MxGatewayClient.java @@ -273,6 +273,11 @@ public final class MxGatewayClient implements AutoCloseable { * worker's MXAccess session; the resulting native MxStatus is returned * in the reply. Acks are idempotent at the MxAccess layer. * + *

{@code operator_user} is required; the gateway authenticates it with + * {@code operator_password} (and optional {@code operator_domain}) and the + * Historian records that operator. An empty password is allowed. The + * password is scrubbed from any exception this method throws. + * * @param request the {@code AcknowledgeAlarmRequest} * @return the raw acknowledge reply * @throws MxGatewayException on transport or protocol failure @@ -283,10 +288,14 @@ public final class MxGatewayClient implements AutoCloseable { MxGatewayErrors.ensureProtocolSuccess("acknowledge alarm", reply.getProtocolStatus(), null); return reply; } catch (RuntimeException error) { - if (error instanceof MxGatewayException) { - throw error; + MxGatewayException mapped = error instanceof MxGatewayException gatewayError + ? gatewayError + : (MxGatewayException) MxGatewayErrors.fromGrpc("acknowledge alarm", error); + String secret = request.getOperatorPassword(); + if (secret.isEmpty()) { + throw mapped; } - throw MxGatewayErrors.fromGrpc("acknowledge alarm", error); + throw MxGatewayErrors.redacted(mapped, secret); } } diff --git a/clients/java/zb-mom-ww-mxgateway-client/src/main/java/com/zb/mom/ww/mxgateway/client/MxGatewayErrors.java b/clients/java/zb-mom-ww-mxgateway-client/src/main/java/com/zb/mom/ww/mxgateway/client/MxGatewayErrors.java index 638ad9c..e970a15 100644 --- a/clients/java/zb-mom-ww-mxgateway-client/src/main/java/com/zb/mom/ww/mxgateway/client/MxGatewayErrors.java +++ b/clients/java/zb-mom-ww-mxgateway-client/src/main/java/com/zb/mom/ww/mxgateway/client/MxGatewayErrors.java @@ -28,6 +28,43 @@ final class MxGatewayErrors { return new MxGatewayException("gateway " + operation + " failed: " + error.getMessage(), error); } + /** + * Rebuilds a gateway exception with an exact secret scrubbed from its + * message and protocol status. The original is not chained as a cause + * because its message and cause chain may carry the secret. + */ + static MxGatewayException redacted(MxGatewayException error, String secret) { + String message = MxGatewaySecrets.redactExact(error.getMessage(), secret); + if (error instanceof MxAccessException ex) { + return new MxAccessException(message, scrub(ex.protocolStatus(), secret), ex.reply(), null); + } + if (error instanceof MxGatewayCommandException ex) { + return new MxGatewayCommandException(message, scrub(ex.protocolStatus(), secret), ex.reply(), null); + } + if (error instanceof MxGatewaySessionException ex) { + return new MxGatewaySessionException(message, scrub(ex.protocolStatus(), secret), null); + } + if (error instanceof MxGatewayWorkerException ex) { + return new MxGatewayWorkerException(message, scrub(ex.protocolStatus(), secret), null); + } + if (error instanceof MxGatewayAuthenticationException) { + return new MxGatewayAuthenticationException(message, null); + } + if (error instanceof MxGatewayAuthorizationException) { + return new MxGatewayAuthorizationException(message, null); + } + return new MxGatewayException(message); + } + + private static ProtocolStatus scrub(ProtocolStatus status, String secret) { + if (status == null) { + return null; + } + return status.toBuilder() + .setMessage(MxGatewaySecrets.redactExact(status.getMessage(), secret)) + .build(); + } + static void ensureProtocolSuccess(String operation, ProtocolStatus status, MxCommandReply reply) { if (status == null || status.getCode() == ProtocolStatusCode.PROTOCOL_STATUS_CODE_OK) { return;