package cz.cuni.mff.d3s.been.hostruntime; import java.io.Serializable; import cz.cuni.mff.d3s.been.core.ri.MonitorSample; import cz.cuni.mff.d3s.been.detectors.MonitoringListener; import cz.cuni.mff.d3s.been.mq.IMessageSender; import cz.cuni.mff.d3s.been.mq.MessagingException; /** * A {@link cz.cuni.mff.d3s.been.detectors.MonitoringListener} that resends * received data using an {@link cz.cuni.mff.d3s.been.mq.IMessageSender} * * @author Radek Macha */ public class ResendMonitoringListener implements MonitoringListener { private final IMessageSender<Serializable> sender; private ResendMonitoringListener(IMessageSender<Serializable> sender) { this.sender = sender; } /** * Crates new MonitoringListener. * * @param sender * the sender used to resend monitoring events. * @return new MonitoringListener */ public static MonitoringListener create(IMessageSender<Serializable> sender) { return new ResendMonitoringListener(sender); } @Override public void sampleGenerated(MonitorSample sample) { try { sender.send(new MonitoringSampleMessage(sample)); } catch (MessagingException e) { throw new RuntimeException("Cannot request message.", e); } } @Override public void close() { sender.close(); } }