package com.megatim.fdxconsultation.service.impl.sockets; import com.megatim.fdxconsultation.core.ifaces.supervision.StandaloneServerStateEntityManager; import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity; import com.megatim.fdxconsultation.service.impl.sockets.encoders.StandaloneServerStateEntityDecoder; import com.megatim.fdxconsultation.service.impl.sockets.encoders.StandaloneServerStateEntityEncoder; import com.megatim.fdxconsultation.service.impl.sockets.helpers.StandaloneServerStateSessionHandler; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.inject.Inject; import javax.websocket.EncodeException; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; /** * * @author lenovo */ @ServerEndpoint(value = "/standalone-server-state", encoders = {StandaloneServerStateEntityEncoder.class}, decoders = {StandaloneServerStateEntityDecoder.class} ) public class StandaloneServerStateEndpoint { @Inject private StandaloneServerStateSessionHandler standaloneServerStateSessionHandler; @Inject private StandaloneServerStateEntityManager standaloneServerStateEntityManager; @OnOpen public void onOpen(Session session) { if (standaloneServerStateEntityManager.getCurrentStandaloneServerStateEntity() != null) { try { session.getBasicRemote().sendObject(standaloneServerStateEntityManager.getCurrentStandaloneServerStateEntity()); } catch (IOException | EncodeException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } standaloneServerStateSessionHandler.addSession(session); } @OnMessage public void onMessage(StandaloneServerStateEntity message, Session session) { } @OnClose public void onClose(Session session) { standaloneServerStateSessionHandler.removeSession(session); } @OnError public void onError(Session session, Throwable throwable) { standaloneServerStateSessionHandler.removeSession(session); } }