package cc.blynk.server.workers;
import cc.blynk.server.Holder;
import cc.blynk.server.core.BlockingIOProcessor;
import cc.blynk.server.core.dao.SessionDao;
import cc.blynk.server.core.dao.UserDao;
import cc.blynk.server.core.stats.GlobalStats;
import cc.blynk.server.core.stats.model.Stat;
import cc.blynk.server.db.DBManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* Worker responsible for logging current request rate,
* methods invocation statistics, active channels count and
* currently pending blocking tasks.
*
* The Blynk Project.
* Created by Dmitriy Dumanskiy.
* Created on 18.04.15.
*/
public class StatsWorker implements Runnable {
private static final Logger log = LogManager.getLogger(StatsWorker.class);
private final GlobalStats stats;
private final SessionDao sessionDao;
private final UserDao userDao;
private final DBManager dbManager;
private final String region;
private final BlockingIOProcessor blockingIOProcessor;
public StatsWorker(Holder holder) {
this.stats = holder.stats;
this.sessionDao = holder.sessionDao;
this.userDao = holder.userDao;
this.dbManager = holder.dbManager;
this.region = holder.region;
this.blockingIOProcessor = holder.blockingIOProcessor;
}
@Override
public void run() {
try {
Stat stat = new Stat(sessionDao, userDao, blockingIOProcessor, stats, true);
log.info(stat);
dbManager.insertStat(this.region, stat);
} catch (Exception e) {
log.error("Error making stats.", e);
}
}
}