package org.bigbluebutton.red5.monitoring; import org.bigbluebutton.common.converters.FromJsonDecoder; import org.bigbluebutton.common.messages.IBigBlueButtonMessage; import org.bigbluebutton.common.messages.PubSubPongMessage; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class BbbAppsIsKeepAliveHandler { private BbbAppsIsAliveMonitorService monitorService; private final FromJsonDecoder decoder = new FromJsonDecoder(); public void setBbbAppsIsAliveMonitorService(BbbAppsIsAliveMonitorService s) { monitorService = s; } public void handleKeepAliveMessage(String message) { JsonParser parser = new JsonParser(); JsonObject obj = (JsonObject) parser.parse(message); if (obj.has("header") && obj.has("payload")) { JsonObject header = (JsonObject) obj.get("header"); if (header.has("name")) { String messageName = header.get("name").getAsString(); switch (messageName) { case PubSubPongMessage.PUBSUB_PONG: processBbbAppsIsAliveMessage(message); break; } } } } private void processBbbAppsIsAliveMessage(String json) { IBigBlueButtonMessage msg = decoder.decodeMessage(json); if (msg != null) { PubSubPongMessage m = (PubSubPongMessage) msg; monitorService.handleKeepAliveMessage(m.payload.system, m.payload.timestamp); } } }