package com.megatim.fdxconsultation.service.impl.sockets.helpers; import com.megatim.fdxconsultation.model.supervision.Transfert; import com.megatim.fdxconsultation.service.impl.camel.consumer.TransfertDataMessageConsumer; 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 TransfertDataMessageSessionHandler { private final Map idtoSessions = new ConcurrentHashMap<>(); public void addSession(Session session) { idtoSessions.put(session.getId(), session); } public void removeSession(Session session) { idtoSessions.remove(session.getId()); } public void sendMessage(Transfert transfert) { getSessions().forEach(session -> { try { session.getBasicRemote().sendObject(transfert); } catch (IOException | EncodeException ex) { Logger.getLogger(TransfertDataMessageConsumer.class.getName()).log(Level.SEVERE, null, ex); } }); } private List getSessions() { return idtoSessions .entrySet() .stream() .map(e -> e.getValue()) .collect(Collectors.toList()); } }