1 changed files with 56 additions and 0 deletions
@ -0,0 +1,56 @@ |
|||||
|
package app.updates; |
||||
|
|
||||
|
import app.entities.Stats; |
||||
|
import jakarta.annotation.PostConstruct; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.beans.factory.annotation.Qualifier; |
||||
|
import org.springframework.jdbc.core.JdbcTemplate; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.time.Instant; |
||||
|
|
||||
|
@Component |
||||
|
public class OnlineUpdater extends BaseUpdater { |
||||
|
|
||||
|
private Stats stats; |
||||
|
private final Logger logger = LoggerFactory.getLogger(getClass()); |
||||
|
|
||||
|
@Autowired |
||||
|
@Qualifier("jt_rw") |
||||
|
private JdbcTemplate jdbcTemplate; |
||||
|
private final static int sleep_time = 30 * 1000; |
||||
|
|
||||
|
@Autowired |
||||
|
public OnlineUpdater(Stats stats) { |
||||
|
this.stats = stats; |
||||
|
} |
||||
|
|
||||
|
@PostConstruct |
||||
|
public void AfterStart() { |
||||
|
logger.warn("Per server online updater enabled"); |
||||
|
stats.getServers().forEach((server_name, server) -> { |
||||
|
logger.info("{} created online updater", server_name); |
||||
|
CreateTaskUpdater(() -> AppendOnlineStats(server_name), sleep_time); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public boolean AppendOnlineStats(String server_id) { |
||||
|
long utime = Instant.now().getEpochSecond(); |
||||
|
int player_count = stats.getServers().get(server_id).getPlayer_count(); |
||||
|
int player_max = stats.getServers().get(server_id).getMax_players(); |
||||
|
jdbcTemplate.update("INSERT INTO `servers_online` (`utime`, `player_count`, `max_players`, `server_id`) VALUES (?, ?, ?, ?)", |
||||
|
utime, player_count, player_max, server_id); |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
//CREATE TABLE `tf2.facti13`.`servers_online` (`id` INT NOT NULL AUTO_INCREMENT , `utime` INT NOT NULL , `player_count` INT NOT NULL , `max_players` INT NOT NULL , `server_id` VARCHAR(32) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;
|
||||
|
public class ServerOnline { |
||||
|
private int id; |
||||
|
private long utime; |
||||
|
private int player_count; |
||||
|
private int max_players; |
||||
|
private String server_id; |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue