package com.megatim.fdxconsultation.core.impl.sockets; import com.megatim.fdxconsultation.model.dataproduction.DataProduction; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; import javax.enterprise.context.ApplicationScoped; import javax.websocket.EncodeException; import javax.websocket.Session; /** * * @author Gabuntu */ @ApplicationScoped public class DataProductionSessionHandler { private final Map idToSessions = new ConcurrentHashMap<>(); public void publishMessage(DataProduction dataProduction) { getSessions().forEach(s -> { try { s.getBasicRemote().sendObject(dataProduction); } catch (IOException | EncodeException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, ex.getMessage(), ex); } }); } public void addSession(Session session) { idToSessions.put(session.getId(), session); } public void removeSession(Session session) { idToSessions.remove(session.getId()); } private List getSessions() { return idToSessions .entrySet() .stream() .map(e -> e.getValue()) .collect(Collectors.toList()); } }