Point the Java client at the StreamAlarms alarm feed
Regenerate the Java protobuf stubs and replace queryActiveAlarms with streamAlarms, returning a MxGatewayAlarmFeedSubscription over AlarmFeedMessage served by the gateway's central alarm monitor (snapshot, snapshot_complete, then live transitions). Drops session_id from the acknowledge surface. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+11
-11
@@ -5,33 +5,33 @@ import io.grpc.stub.ClientResponseObserver;
|
|||||||
import io.grpc.stub.StreamObserver;
|
import io.grpc.stub.StreamObserver;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot;
|
import mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancellable handle returned by {@code queryActiveAlarms}.
|
* Cancellable handle returned by {@code streamAlarms}.
|
||||||
*
|
*
|
||||||
* <p>Wraps a caller-supplied {@link StreamObserver} and exposes a
|
* <p>Wraps a caller-supplied {@link StreamObserver} and exposes a
|
||||||
* {@link #cancel()} entry point that aborts the underlying gRPC call. The
|
* {@link #cancel()} entry point that aborts the underlying gRPC call. The
|
||||||
* subscription also implements {@link AutoCloseable} so it can participate in
|
* subscription also implements {@link AutoCloseable} so it can participate in
|
||||||
* try-with-resources blocks.
|
* try-with-resources blocks.
|
||||||
*/
|
*/
|
||||||
public final class MxGatewayActiveAlarmsSubscription implements AutoCloseable {
|
public final class MxGatewayAlarmFeedSubscription implements AutoCloseable {
|
||||||
private final AtomicReference<ClientCallStreamObserver<QueryActiveAlarmsRequest>> requestStream = new AtomicReference<>();
|
private final AtomicReference<ClientCallStreamObserver<StreamAlarmsRequest>> requestStream = new AtomicReference<>();
|
||||||
private final AtomicBoolean cancelled = new AtomicBoolean();
|
private final AtomicBoolean cancelled = new AtomicBoolean();
|
||||||
|
|
||||||
ClientResponseObserver<QueryActiveAlarmsRequest, ActiveAlarmSnapshot> wrap(StreamObserver<ActiveAlarmSnapshot> observer) {
|
ClientResponseObserver<StreamAlarmsRequest, AlarmFeedMessage> wrap(StreamObserver<AlarmFeedMessage> observer) {
|
||||||
return new ClientResponseObserver<>() {
|
return new ClientResponseObserver<>() {
|
||||||
@Override
|
@Override
|
||||||
public void beforeStart(ClientCallStreamObserver<QueryActiveAlarmsRequest> stream) {
|
public void beforeStart(ClientCallStreamObserver<StreamAlarmsRequest> stream) {
|
||||||
requestStream.set(stream);
|
requestStream.set(stream);
|
||||||
if (cancelled.get()) {
|
if (cancelled.get()) {
|
||||||
stream.cancel("client cancelled active-alarms query", null);
|
stream.cancel("client cancelled alarm feed", null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(ActiveAlarmSnapshot value) {
|
public void onNext(AlarmFeedMessage value) {
|
||||||
observer.onNext(value);
|
observer.onNext(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,9 +54,9 @@ public final class MxGatewayActiveAlarmsSubscription implements AutoCloseable {
|
|||||||
*/
|
*/
|
||||||
public void cancel() {
|
public void cancel() {
|
||||||
cancelled.set(true);
|
cancelled.set(true);
|
||||||
ClientCallStreamObserver<QueryActiveAlarmsRequest> stream = requestStream.get();
|
ClientCallStreamObserver<StreamAlarmsRequest> stream = requestStream.get();
|
||||||
if (stream != null) {
|
if (stream != null) {
|
||||||
stream.cancel("client cancelled active-alarms query", null);
|
stream.cancel("client cancelled alarm feed", null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+15
-11
@@ -10,7 +10,7 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
import mxaccess_gateway.v1.MxAccessGatewayGrpc;
|
import mxaccess_gateway.v1.MxAccessGatewayGrpc;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmReply;
|
import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmReply;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmRequest;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot;
|
import mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.CloseSessionReply;
|
import mxaccess_gateway.v1.MxaccessGateway.CloseSessionReply;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.CloseSessionRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.CloseSessionRequest;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.MxCommandReply;
|
import mxaccess_gateway.v1.MxaccessGateway.MxCommandReply;
|
||||||
@@ -19,7 +19,7 @@ import mxaccess_gateway.v1.MxaccessGateway.MxEvent;
|
|||||||
import mxaccess_gateway.v1.MxaccessGateway.OpenSessionReply;
|
import mxaccess_gateway.v1.MxaccessGateway.OpenSessionReply;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.OpenSessionRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.OpenSessionRequest;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.ProtocolStatusCode;
|
import mxaccess_gateway.v1.MxaccessGateway.ProtocolStatusCode;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.StreamEventsRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.StreamEventsRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -328,20 +328,24 @@ public final class MxGatewayClient implements AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Streams a snapshot of all alarms currently Active or ActiveAcked — the
|
* Attaches to the gateway's central alarm feed. The stream opens with one
|
||||||
* gateway's ConditionRefresh equivalent. Used after reconnect to seed
|
* {@code AlarmFeedMessage} per currently-active alarm (the ConditionRefresh
|
||||||
* local Part 9 state.
|
* snapshot), then a single {@code snapshot_complete}, then a
|
||||||
|
* {@code transition} for every subsequent raise / acknowledge / clear.
|
||||||
*
|
*
|
||||||
* @param request the {@code QueryActiveAlarmsRequest}, optionally scoped by
|
* <p>Served by the gateway's always-on alarm monitor — no worker session is
|
||||||
|
* opened — so any number of clients may attach.
|
||||||
|
*
|
||||||
|
* @param request the {@code StreamAlarmsRequest}, optionally scoped by
|
||||||
* alarm-reference prefix
|
* alarm-reference prefix
|
||||||
* @param observer caller-supplied observer that receives snapshots and completion
|
* @param observer caller-supplied observer that receives feed messages and completion
|
||||||
* @return a cancellable subscription handle
|
* @return a cancellable subscription handle
|
||||||
*/
|
*/
|
||||||
public MxGatewayActiveAlarmsSubscription queryActiveAlarms(
|
public MxGatewayAlarmFeedSubscription streamAlarms(
|
||||||
QueryActiveAlarmsRequest request, StreamObserver<ActiveAlarmSnapshot> observer) {
|
StreamAlarmsRequest request, StreamObserver<AlarmFeedMessage> observer) {
|
||||||
MxGatewayActiveAlarmsSubscription subscription = new MxGatewayActiveAlarmsSubscription();
|
MxGatewayAlarmFeedSubscription subscription = new MxGatewayAlarmFeedSubscription();
|
||||||
MxGatewayChannels.withStreamDeadline(rawAsyncStub(), options)
|
MxGatewayChannels.withStreamDeadline(rawAsyncStub(), options)
|
||||||
.queryActiveAlarms(request, subscription.wrap(observer));
|
.streamAlarms(request, subscription.wrap(observer));
|
||||||
return subscription;
|
return subscription;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+38
-32
@@ -30,10 +30,11 @@ import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmReply;
|
|||||||
import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmRequest;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot;
|
import mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.AlarmConditionState;
|
import mxaccess_gateway.v1.MxaccessGateway.AlarmConditionState;
|
||||||
|
import mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.MxEvent;
|
import mxaccess_gateway.v1.MxaccessGateway.MxEvent;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.ProtocolStatus;
|
import mxaccess_gateway.v1.MxaccessGateway.ProtocolStatus;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.ProtocolStatusCode;
|
import mxaccess_gateway.v1.MxaccessGateway.ProtocolStatusCode;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest;
|
||||||
import mxaccess_gateway.v1.MxaccessGateway.StreamEventsRequest;
|
import mxaccess_gateway.v1.MxaccessGateway.StreamEventsRequest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@@ -57,7 +58,6 @@ final class MxGatewayLowFindingsTests {
|
|||||||
AcknowledgeAlarmRequest request, StreamObserver<AcknowledgeAlarmReply> responseObserver) {
|
AcknowledgeAlarmRequest request, StreamObserver<AcknowledgeAlarmReply> responseObserver) {
|
||||||
seen.set(request);
|
seen.set(request);
|
||||||
responseObserver.onNext(AcknowledgeAlarmReply.newBuilder()
|
responseObserver.onNext(AcknowledgeAlarmReply.newBuilder()
|
||||||
.setSessionId(request.getSessionId())
|
|
||||||
.setProtocolStatus(ok())
|
.setProtocolStatus(ok())
|
||||||
.setDiagnosticMessage("acked")
|
.setDiagnosticMessage("acked")
|
||||||
.build());
|
.build());
|
||||||
@@ -67,7 +67,6 @@ final class MxGatewayLowFindingsTests {
|
|||||||
|
|
||||||
try (Harness harness = Harness.start(service, "mxgw_keyid_secret", authorization)) {
|
try (Harness harness = Harness.start(service, "mxgw_keyid_secret", authorization)) {
|
||||||
AcknowledgeAlarmReply reply = harness.client().acknowledgeAlarm(AcknowledgeAlarmRequest.newBuilder()
|
AcknowledgeAlarmReply reply = harness.client().acknowledgeAlarm(AcknowledgeAlarmRequest.newBuilder()
|
||||||
.setSessionId("s-1")
|
|
||||||
.setAlarmFullReference("Area1.Pump.PV.HiHi")
|
.setAlarmFullReference("Area1.Pump.PV.HiHi")
|
||||||
.setComment("operator note")
|
.setComment("operator note")
|
||||||
.build());
|
.build());
|
||||||
@@ -84,7 +83,6 @@ final class MxGatewayLowFindingsTests {
|
|||||||
public void acknowledgeAlarm(
|
public void acknowledgeAlarm(
|
||||||
AcknowledgeAlarmRequest request, StreamObserver<AcknowledgeAlarmReply> responseObserver) {
|
AcknowledgeAlarmRequest request, StreamObserver<AcknowledgeAlarmReply> responseObserver) {
|
||||||
responseObserver.onNext(AcknowledgeAlarmReply.newBuilder()
|
responseObserver.onNext(AcknowledgeAlarmReply.newBuilder()
|
||||||
.setSessionId(request.getSessionId())
|
|
||||||
.setProtocolStatus(ProtocolStatus.newBuilder()
|
.setProtocolStatus(ProtocolStatus.newBuilder()
|
||||||
.setCode(ProtocolStatusCode.PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND))
|
.setCode(ProtocolStatusCode.PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND))
|
||||||
.build());
|
.build());
|
||||||
@@ -96,7 +94,7 @@ final class MxGatewayLowFindingsTests {
|
|||||||
assertThrows(
|
assertThrows(
|
||||||
MxGatewayException.class,
|
MxGatewayException.class,
|
||||||
() -> harness.client().acknowledgeAlarm(AcknowledgeAlarmRequest.newBuilder()
|
() -> harness.client().acknowledgeAlarm(AcknowledgeAlarmRequest.newBuilder()
|
||||||
.setSessionId("missing")
|
.setAlarmFullReference("Area1.Pump.PV.HiHi")
|
||||||
.build()));
|
.build()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -108,7 +106,6 @@ final class MxGatewayLowFindingsTests {
|
|||||||
public void acknowledgeAlarm(
|
public void acknowledgeAlarm(
|
||||||
AcknowledgeAlarmRequest request, StreamObserver<AcknowledgeAlarmReply> responseObserver) {
|
AcknowledgeAlarmRequest request, StreamObserver<AcknowledgeAlarmReply> responseObserver) {
|
||||||
responseObserver.onNext(AcknowledgeAlarmReply.newBuilder()
|
responseObserver.onNext(AcknowledgeAlarmReply.newBuilder()
|
||||||
.setSessionId(request.getSessionId())
|
|
||||||
.setProtocolStatus(ok())
|
.setProtocolStatus(ok())
|
||||||
.setDiagnosticMessage("async-acked")
|
.setDiagnosticMessage("async-acked")
|
||||||
.build());
|
.build());
|
||||||
@@ -118,7 +115,9 @@ final class MxGatewayLowFindingsTests {
|
|||||||
|
|
||||||
try (Harness harness = Harness.start(service)) {
|
try (Harness harness = Harness.start(service)) {
|
||||||
CompletableFuture<AcknowledgeAlarmReply> future = harness.client()
|
CompletableFuture<AcknowledgeAlarmReply> future = harness.client()
|
||||||
.acknowledgeAlarmAsync(AcknowledgeAlarmRequest.newBuilder().setSessionId("s-2").build());
|
.acknowledgeAlarmAsync(AcknowledgeAlarmRequest.newBuilder()
|
||||||
|
.setAlarmFullReference("Area1.Pump.PV.HiHi")
|
||||||
|
.build());
|
||||||
assertEquals("async-acked", future.get(5, TimeUnit.SECONDS).getDiagnosticMessage());
|
assertEquals("async-acked", future.get(5, TimeUnit.SECONDS).getDiagnosticMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,39 +134,45 @@ final class MxGatewayLowFindingsTests {
|
|||||||
|
|
||||||
try (Harness harness = Harness.start(service)) {
|
try (Harness harness = Harness.start(service)) {
|
||||||
CompletableFuture<AcknowledgeAlarmReply> future = harness.client()
|
CompletableFuture<AcknowledgeAlarmReply> future = harness.client()
|
||||||
.acknowledgeAlarmAsync(AcknowledgeAlarmRequest.newBuilder().setSessionId("s-3").build());
|
.acknowledgeAlarmAsync(AcknowledgeAlarmRequest.newBuilder()
|
||||||
|
.setAlarmFullReference("Area1.Pump.PV.HiHi")
|
||||||
|
.build());
|
||||||
ExecutionException error = assertThrows(
|
ExecutionException error = assertThrows(
|
||||||
ExecutionException.class, () -> future.get(5, TimeUnit.SECONDS));
|
ExecutionException.class, () -> future.get(5, TimeUnit.SECONDS));
|
||||||
assertTrue(error.getCause() instanceof MxGatewayException, () -> String.valueOf(error.getCause()));
|
assertTrue(error.getCause() instanceof MxGatewayException, () -> String.valueOf(error.getCause()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Client.Java-007: QueryActiveAlarms RPC + subscription coverage ---
|
// --- Client.Java-007: StreamAlarms RPC + subscription coverage ---
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void queryActiveAlarmsDeliversSnapshotsToObserver() throws Exception {
|
void streamAlarmsDeliversFeedMessagesToObserver() throws Exception {
|
||||||
ActiveAlarmSnapshot snapshot = ActiveAlarmSnapshot.newBuilder()
|
AlarmFeedMessage active = AlarmFeedMessage.newBuilder()
|
||||||
.setAlarmFullReference("Area1.Tank.Level.Hi")
|
.setActiveAlarm(ActiveAlarmSnapshot.newBuilder()
|
||||||
.setSeverity(800)
|
.setAlarmFullReference("Area1.Tank.Level.Hi")
|
||||||
.setCurrentState(AlarmConditionState.ALARM_CONDITION_STATE_ACTIVE)
|
.setSeverity(800)
|
||||||
|
.setCurrentState(AlarmConditionState.ALARM_CONDITION_STATE_ACTIVE))
|
||||||
.build();
|
.build();
|
||||||
|
AlarmFeedMessage snapshotComplete =
|
||||||
|
AlarmFeedMessage.newBuilder().setSnapshotComplete(true).build();
|
||||||
TestService service = new TestService() {
|
TestService service = new TestService() {
|
||||||
@Override
|
@Override
|
||||||
public void queryActiveAlarms(
|
public void streamAlarms(
|
||||||
QueryActiveAlarmsRequest request, StreamObserver<ActiveAlarmSnapshot> responseObserver) {
|
StreamAlarmsRequest request, StreamObserver<AlarmFeedMessage> responseObserver) {
|
||||||
responseObserver.onNext(snapshot);
|
responseObserver.onNext(active);
|
||||||
|
responseObserver.onNext(snapshotComplete);
|
||||||
responseObserver.onCompleted();
|
responseObserver.onCompleted();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
try (Harness harness = Harness.start(service)) {
|
try (Harness harness = Harness.start(service)) {
|
||||||
List<ActiveAlarmSnapshot> received = new ArrayList<>();
|
List<AlarmFeedMessage> received = new ArrayList<>();
|
||||||
CountDownLatch done = new CountDownLatch(1);
|
CountDownLatch done = new CountDownLatch(1);
|
||||||
harness.client().queryActiveAlarms(
|
harness.client().streamAlarms(
|
||||||
QueryActiveAlarmsRequest.newBuilder().setSessionId("s-4").build(),
|
StreamAlarmsRequest.newBuilder().build(),
|
||||||
new StreamObserver<>() {
|
new StreamObserver<>() {
|
||||||
@Override
|
@Override
|
||||||
public void onNext(ActiveAlarmSnapshot value) {
|
public void onNext(AlarmFeedMessage value) {
|
||||||
received.add(value);
|
received.add(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,18 +187,19 @@ final class MxGatewayLowFindingsTests {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
assertTrue(done.await(5, TimeUnit.SECONDS), "stream should complete");
|
assertTrue(done.await(5, TimeUnit.SECONDS), "stream should complete");
|
||||||
assertEquals(1, received.size());
|
assertEquals(2, received.size());
|
||||||
assertEquals("Area1.Tank.Level.Hi", received.get(0).getAlarmFullReference());
|
assertEquals("Area1.Tank.Level.Hi", received.get(0).getActiveAlarm().getAlarmFullReference());
|
||||||
|
assertTrue(received.get(1).getSnapshotComplete());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void activeAlarmsSubscriptionCancelBeforeBeforeStartCancelsStream() {
|
void alarmFeedSubscriptionCancelBeforeBeforeStartCancelsStream() {
|
||||||
MxGatewayActiveAlarmsSubscription subscription = new MxGatewayActiveAlarmsSubscription();
|
MxGatewayAlarmFeedSubscription subscription = new MxGatewayAlarmFeedSubscription();
|
||||||
ClientResponseObserver<QueryActiveAlarmsRequest, ActiveAlarmSnapshot> observer =
|
ClientResponseObserver<StreamAlarmsRequest, AlarmFeedMessage> observer =
|
||||||
subscription.wrap(new StreamObserver<>() {
|
subscription.wrap(new StreamObserver<>() {
|
||||||
@Override
|
@Override
|
||||||
public void onNext(ActiveAlarmSnapshot value) {
|
public void onNext(AlarmFeedMessage value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -204,13 +210,13 @@ final class MxGatewayLowFindingsTests {
|
|||||||
public void onCompleted() {
|
public void onCompleted() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
RecordingActiveAlarmsRequestStream requestStream = new RecordingActiveAlarmsRequestStream();
|
RecordingAlarmFeedRequestStream requestStream = new RecordingAlarmFeedRequestStream();
|
||||||
|
|
||||||
subscription.cancel();
|
subscription.cancel();
|
||||||
observer.beforeStart(requestStream);
|
observer.beforeStart(requestStream);
|
||||||
|
|
||||||
assertTrue(requestStream.cancelled);
|
assertTrue(requestStream.cancelled);
|
||||||
assertEquals("client cancelled active-alarms query", requestStream.cancelMessage);
|
assertEquals("client cancelled alarm feed", requestStream.cancelMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Client.Java-007: async streamEvents + subscription cancellation ---
|
// --- Client.Java-007: async streamEvents + subscription cancellation ---
|
||||||
@@ -456,8 +462,8 @@ final class MxGatewayLowFindingsTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class RecordingActiveAlarmsRequestStream
|
private static final class RecordingAlarmFeedRequestStream
|
||||||
extends ClientCallStreamObserver<QueryActiveAlarmsRequest> {
|
extends ClientCallStreamObserver<StreamAlarmsRequest> {
|
||||||
private boolean cancelled;
|
private boolean cancelled;
|
||||||
private String cancelMessage;
|
private String cancelMessage;
|
||||||
|
|
||||||
@@ -489,7 +495,7 @@ final class MxGatewayLowFindingsTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(QueryActiveAlarmsRequest value) {
|
public void onNext(StreamAlarmsRequest value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+66
-38
@@ -170,35 +170,35 @@ public final class MxAccessGatewayGrpc {
|
|||||||
return getAcknowledgeAlarmMethod;
|
return getAcknowledgeAlarmMethod;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static volatile io.grpc.MethodDescriptor<mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest,
|
private static volatile io.grpc.MethodDescriptor<mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest,
|
||||||
mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot> getQueryActiveAlarmsMethod;
|
mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage> getStreamAlarmsMethod;
|
||||||
|
|
||||||
@io.grpc.stub.annotations.RpcMethod(
|
@io.grpc.stub.annotations.RpcMethod(
|
||||||
fullMethodName = SERVICE_NAME + '/' + "QueryActiveAlarms",
|
fullMethodName = SERVICE_NAME + '/' + "StreamAlarms",
|
||||||
requestType = mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest.class,
|
requestType = mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest.class,
|
||||||
responseType = mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot.class,
|
responseType = mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage.class,
|
||||||
methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
|
methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
|
||||||
public static io.grpc.MethodDescriptor<mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest,
|
public static io.grpc.MethodDescriptor<mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest,
|
||||||
mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot> getQueryActiveAlarmsMethod() {
|
mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage> getStreamAlarmsMethod() {
|
||||||
io.grpc.MethodDescriptor<mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest, mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot> getQueryActiveAlarmsMethod;
|
io.grpc.MethodDescriptor<mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest, mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage> getStreamAlarmsMethod;
|
||||||
if ((getQueryActiveAlarmsMethod = MxAccessGatewayGrpc.getQueryActiveAlarmsMethod) == null) {
|
if ((getStreamAlarmsMethod = MxAccessGatewayGrpc.getStreamAlarmsMethod) == null) {
|
||||||
synchronized (MxAccessGatewayGrpc.class) {
|
synchronized (MxAccessGatewayGrpc.class) {
|
||||||
if ((getQueryActiveAlarmsMethod = MxAccessGatewayGrpc.getQueryActiveAlarmsMethod) == null) {
|
if ((getStreamAlarmsMethod = MxAccessGatewayGrpc.getStreamAlarmsMethod) == null) {
|
||||||
MxAccessGatewayGrpc.getQueryActiveAlarmsMethod = getQueryActiveAlarmsMethod =
|
MxAccessGatewayGrpc.getStreamAlarmsMethod = getStreamAlarmsMethod =
|
||||||
io.grpc.MethodDescriptor.<mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest, mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot>newBuilder()
|
io.grpc.MethodDescriptor.<mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest, mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage>newBuilder()
|
||||||
.setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
|
.setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
|
||||||
.setFullMethodName(generateFullMethodName(SERVICE_NAME, "QueryActiveAlarms"))
|
.setFullMethodName(generateFullMethodName(SERVICE_NAME, "StreamAlarms"))
|
||||||
.setSampledToLocalTracing(true)
|
.setSampledToLocalTracing(true)
|
||||||
.setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
|
.setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
|
||||||
mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest.getDefaultInstance()))
|
mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest.getDefaultInstance()))
|
||||||
.setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
|
.setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
|
||||||
mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot.getDefaultInstance()))
|
mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage.getDefaultInstance()))
|
||||||
.setSchemaDescriptor(new MxAccessGatewayMethodDescriptorSupplier("QueryActiveAlarms"))
|
.setSchemaDescriptor(new MxAccessGatewayMethodDescriptorSupplier("StreamAlarms"))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return getQueryActiveAlarmsMethod;
|
return getStreamAlarmsMethod;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -303,10 +303,17 @@ public final class MxAccessGatewayGrpc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* <pre>
|
||||||
|
* Session-less central alarm feed. The stream opens with the current
|
||||||
|
* active-alarm snapshot (one `active_alarm` per alarm), then a single
|
||||||
|
* `snapshot_complete`, then a `transition` for every subsequent change.
|
||||||
|
* Served by the gateway's always-on alarm monitor; any number of clients
|
||||||
|
* fan out from the single monitor without opening a worker session.
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
default void queryActiveAlarms(mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest request,
|
default void streamAlarms(mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest request,
|
||||||
io.grpc.stub.StreamObserver<mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot> responseObserver) {
|
io.grpc.stub.StreamObserver<mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage> responseObserver) {
|
||||||
io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryActiveAlarmsMethod(), responseObserver);
|
io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getStreamAlarmsMethod(), responseObserver);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -384,11 +391,18 @@ public final class MxAccessGatewayGrpc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* <pre>
|
||||||
|
* Session-less central alarm feed. The stream opens with the current
|
||||||
|
* active-alarm snapshot (one `active_alarm` per alarm), then a single
|
||||||
|
* `snapshot_complete`, then a `transition` for every subsequent change.
|
||||||
|
* Served by the gateway's always-on alarm monitor; any number of clients
|
||||||
|
* fan out from the single monitor without opening a worker session.
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public void queryActiveAlarms(mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest request,
|
public void streamAlarms(mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest request,
|
||||||
io.grpc.stub.StreamObserver<mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot> responseObserver) {
|
io.grpc.stub.StreamObserver<mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage> responseObserver) {
|
||||||
io.grpc.stub.ClientCalls.asyncServerStreamingCall(
|
io.grpc.stub.ClientCalls.asyncServerStreamingCall(
|
||||||
getChannel().newCall(getQueryActiveAlarmsMethod(), getCallOptions()), request, responseObserver);
|
getChannel().newCall(getStreamAlarmsMethod(), getCallOptions()), request, responseObserver);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -449,12 +463,19 @@ public final class MxAccessGatewayGrpc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* <pre>
|
||||||
|
* Session-less central alarm feed. The stream opens with the current
|
||||||
|
* active-alarm snapshot (one `active_alarm` per alarm), then a single
|
||||||
|
* `snapshot_complete`, then a `transition` for every subsequent change.
|
||||||
|
* Served by the gateway's always-on alarm monitor; any number of clients
|
||||||
|
* fan out from the single monitor without opening a worker session.
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
@io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/10918")
|
@io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/10918")
|
||||||
public io.grpc.stub.BlockingClientCall<?, mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot>
|
public io.grpc.stub.BlockingClientCall<?, mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage>
|
||||||
queryActiveAlarms(mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest request) {
|
streamAlarms(mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest request) {
|
||||||
return io.grpc.stub.ClientCalls.blockingV2ServerStreamingCall(
|
return io.grpc.stub.ClientCalls.blockingV2ServerStreamingCall(
|
||||||
getChannel(), getQueryActiveAlarmsMethod(), getCallOptions(), request);
|
getChannel(), getStreamAlarmsMethod(), getCallOptions(), request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,11 +535,18 @@ public final class MxAccessGatewayGrpc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* <pre>
|
||||||
|
* Session-less central alarm feed. The stream opens with the current
|
||||||
|
* active-alarm snapshot (one `active_alarm` per alarm), then a single
|
||||||
|
* `snapshot_complete`, then a `transition` for every subsequent change.
|
||||||
|
* Served by the gateway's always-on alarm monitor; any number of clients
|
||||||
|
* fan out from the single monitor without opening a worker session.
|
||||||
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public java.util.Iterator<mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot> queryActiveAlarms(
|
public java.util.Iterator<mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage> streamAlarms(
|
||||||
mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest request) {
|
mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest request) {
|
||||||
return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
|
return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
|
||||||
getChannel(), getQueryActiveAlarmsMethod(), getCallOptions(), request);
|
getChannel(), getStreamAlarmsMethod(), getCallOptions(), request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -579,7 +607,7 @@ public final class MxAccessGatewayGrpc {
|
|||||||
private static final int METHODID_INVOKE = 2;
|
private static final int METHODID_INVOKE = 2;
|
||||||
private static final int METHODID_STREAM_EVENTS = 3;
|
private static final int METHODID_STREAM_EVENTS = 3;
|
||||||
private static final int METHODID_ACKNOWLEDGE_ALARM = 4;
|
private static final int METHODID_ACKNOWLEDGE_ALARM = 4;
|
||||||
private static final int METHODID_QUERY_ACTIVE_ALARMS = 5;
|
private static final int METHODID_STREAM_ALARMS = 5;
|
||||||
|
|
||||||
private static final class MethodHandlers<Req, Resp> implements
|
private static final class MethodHandlers<Req, Resp> implements
|
||||||
io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
|
io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
|
||||||
@@ -618,9 +646,9 @@ public final class MxAccessGatewayGrpc {
|
|||||||
serviceImpl.acknowledgeAlarm((mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmRequest) request,
|
serviceImpl.acknowledgeAlarm((mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmRequest) request,
|
||||||
(io.grpc.stub.StreamObserver<mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmReply>) responseObserver);
|
(io.grpc.stub.StreamObserver<mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmReply>) responseObserver);
|
||||||
break;
|
break;
|
||||||
case METHODID_QUERY_ACTIVE_ALARMS:
|
case METHODID_STREAM_ALARMS:
|
||||||
serviceImpl.queryActiveAlarms((mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest) request,
|
serviceImpl.streamAlarms((mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest) request,
|
||||||
(io.grpc.stub.StreamObserver<mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot>) responseObserver);
|
(io.grpc.stub.StreamObserver<mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage>) responseObserver);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
@@ -676,12 +704,12 @@ public final class MxAccessGatewayGrpc {
|
|||||||
mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmReply>(
|
mxaccess_gateway.v1.MxaccessGateway.AcknowledgeAlarmReply>(
|
||||||
service, METHODID_ACKNOWLEDGE_ALARM)))
|
service, METHODID_ACKNOWLEDGE_ALARM)))
|
||||||
.addMethod(
|
.addMethod(
|
||||||
getQueryActiveAlarmsMethod(),
|
getStreamAlarmsMethod(),
|
||||||
io.grpc.stub.ServerCalls.asyncServerStreamingCall(
|
io.grpc.stub.ServerCalls.asyncServerStreamingCall(
|
||||||
new MethodHandlers<
|
new MethodHandlers<
|
||||||
mxaccess_gateway.v1.MxaccessGateway.QueryActiveAlarmsRequest,
|
mxaccess_gateway.v1.MxaccessGateway.StreamAlarmsRequest,
|
||||||
mxaccess_gateway.v1.MxaccessGateway.ActiveAlarmSnapshot>(
|
mxaccess_gateway.v1.MxaccessGateway.AlarmFeedMessage>(
|
||||||
service, METHODID_QUERY_ACTIVE_ALARMS)))
|
service, METHODID_STREAM_ALARMS)))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -735,7 +763,7 @@ public final class MxAccessGatewayGrpc {
|
|||||||
.addMethod(getInvokeMethod())
|
.addMethod(getInvokeMethod())
|
||||||
.addMethod(getStreamEventsMethod())
|
.addMethod(getStreamEventsMethod())
|
||||||
.addMethod(getAcknowledgeAlarmMethod())
|
.addMethod(getAcknowledgeAlarmMethod())
|
||||||
.addMethod(getQueryActiveAlarmsMethod())
|
.addMethod(getStreamAlarmsMethod())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1547
-808
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user