package cz.cuni.mff.d3s.been.hostruntime; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import cz.cuni.mff.d3s.been.cluster.context.ClusterContext; import cz.cuni.mff.d3s.been.core.persistence.Entities; import cz.cuni.mff.d3s.been.core.ri.MonitorSample; import cz.cuni.mff.d3s.been.detectors.MonitoringListener; import cz.cuni.mff.d3s.been.persistence.DAOException; /** * Persister of Monitoring events * * @author Kuba Brecka */ class PersistMonitoringListener implements MonitoringListener { private static final Logger log = LoggerFactory.getLogger(PersistMonitoringListener.class); private ClusterContext ctx; private HostRuntime runtime; /** * Creates new PersistMonitoringListener/ * * @param ctx * connection to the cluster * @param runtime * this Host Runtime */ public PersistMonitoringListener(ClusterContext ctx, HostRuntime runtime) { this.ctx = ctx; this.runtime = runtime; } @Override public void sampleGenerated(MonitorSample sample) { try { MonitoringEntity entity = new MonitoringEntity(); entity.setSample(sample); entity.setRuntimeId(runtime.getId()); entity.setCreated(sample.getTimestamp()); ctx.getPersistence().asyncPersist(Entities.LOG_MONITORING.getId(), entity); } catch (DAOException e) { log.warn("Cannot persist monitoring sample for Host Runtime {}", runtime.getId(), e); } } @Override public void close() { } }