diff --git a/strolch-plc-gw-client/src/main/java/li/strolch/plc/gw/client/PlcGwClientHandler.java b/strolch-plc-gw-client/src/main/java/li/strolch/plc/gw/client/PlcGwClientHandler.java index a89432d..87ff519 100644 --- a/strolch-plc-gw-client/src/main/java/li/strolch/plc/gw/client/PlcGwClientHandler.java +++ b/strolch-plc-gw-client/src/main/java/li/strolch/plc/gw/client/PlcGwClientHandler.java @@ -267,7 +267,7 @@ public class PlcGwClientHandler extends StrolchComponent implements GlobalPlcLis if (lastUpdate > TimeUnit.HOURS.toMillis(1)) { logger.info("Sending system state to server..."); JsonObject stateJ = new JsonObject(); - stateJ.addProperty(PARAM_MESSAGE_TYPE, MSG_TYPE_AUTHENTICATION); + stateJ.addProperty(PARAM_MESSAGE_TYPE, MSG_TYPE_STATE_NOTIFICATION); stateJ.addProperty(PARAM_PLC_ID, this.plcId); stateJ.add(PARAM_IP_ADDRESSES, getIpAddresses()); stateJ.add(PARAM_VERSIONS, getVersions()); diff --git a/strolch-plc-gw-server/src/main/java/li/strolch/plc/gw/server/PlcGwServerHandler.java b/strolch-plc-gw-server/src/main/java/li/strolch/plc/gw/server/PlcGwServerHandler.java index 1925982..a7fa2f3 100644 --- a/strolch-plc-gw-server/src/main/java/li/strolch/plc/gw/server/PlcGwServerHandler.java +++ b/strolch-plc-gw-server/src/main/java/li/strolch/plc/gw/server/PlcGwServerHandler.java @@ -20,10 +20,10 @@ import com.google.gson.JsonParser; import com.google.gson.JsonPrimitive; import li.strolch.agent.api.ComponentContainer; import li.strolch.agent.api.StrolchComponent; -import li.strolch.model.log.LogMessage; -import li.strolch.model.log.LogMessageState; import li.strolch.handler.operationslog.OperationsLog; import li.strolch.model.Locator; +import li.strolch.model.log.LogMessage; +import li.strolch.model.log.LogMessageState; import li.strolch.plc.model.*; import li.strolch.privilege.base.NotAuthenticatedException; import li.strolch.privilege.model.Certificate; @@ -296,6 +296,12 @@ public class PlcGwServerHandler extends StrolchComponent { break; } + case MSG_TYPE_STATE_NOTIFICATION: { + PlcSession plcSession = assertPlcAuthed(plcId, session.getId()); + handleStateMsg(plcSession, jsonObject); + break; + } + case MSG_TYPE_MESSAGE: { assertPlcAuthed(plcId, session.getId()); handleMessage(jsonObject); @@ -351,6 +357,7 @@ public class PlcGwServerHandler extends StrolchComponent { } List listeners; + //noinspection SynchronizationOnLocalVariableOrMethodParameter synchronized (plcListeners) { listeners = plcListeners.getList(addressKey); if (listeners == null) { @@ -433,6 +440,10 @@ public class PlcGwServerHandler extends StrolchComponent { this.plcStateHandler.handlePlcState(plcSession, ConnectionState.Connected, "", authJ); } + private void handleStateMsg(PlcSession plcSession, JsonObject stateMsgJ) { + this.plcStateHandler.handlePlcState(plcSession, ConnectionState.Connected, "", stateMsgJ); + } + private void sendAuthResponse(PlcSession plcSession, JsonObject jsonObject) { try { String data = jsonObject.toString(); diff --git a/strolch-plc-gw-server/src/main/java/li/strolch/plc/gw/server/PlcServerWebSocketEndpoint.java b/strolch-plc-gw-server/src/main/java/li/strolch/plc/gw/server/PlcServerWebSocketEndpoint.java index 4c6762b..51292d8 100644 --- a/strolch-plc-gw-server/src/main/java/li/strolch/plc/gw/server/PlcServerWebSocketEndpoint.java +++ b/strolch-plc-gw-server/src/main/java/li/strolch/plc/gw/server/PlcServerWebSocketEndpoint.java @@ -8,7 +8,7 @@ import li.strolch.rest.RestfulStrolchComponent; @ServerEndpoint("/websocket/strolch/plc") public class PlcServerWebSocketEndpoint { - private PlcGwServerHandler serverHandler; + private final PlcGwServerHandler serverHandler; public PlcServerWebSocketEndpoint() { this.serverHandler = RestfulStrolchComponent.getInstance().getComponent(PlcGwServerHandler.class);