package ws.wamplay.controllers.messageHandlers; import com.fasterxml.jackson.databind.JsonNode; import play.Logger; import play.Logger.ALogger; import ws.wamplay.callbacks.PubSubCallback; import ws.wamplay.controllers.WAMPlayServer; import ws.wamplay.models.PubSub; import ws.wamplay.models.WAMPlayClient; public class SubscribeHandler implements MessageHandler { static ALogger log = Logger.of(SubscribeHandler.class); @Override public void process(WAMPlayClient senderClient, JsonNode message) { String topic = message.get(1).asText(); PubSubCallback cb = PubSub.getPubSubCallback(topic); if (cb == null) { log.error("Topic not found: " + topic); return; } boolean sucessful = cb.runSubCallback(senderClient.getSessionID()); if (!sucessful) { log.debug("Callback for " + topic + " canceled."); return; } if (WAMPlayServer.isTopic(topic)) { senderClient.subscribe(topic); return; } log.error("Client tried to subscribe to nonexistant topic: " + topic); } }