переведен функционал keep alive на сетевой модуль
This commit is contained in:
@@ -24,22 +24,14 @@ import static org.slf4j.helpers.MessageFormatter.format;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class H2PlayerManager implements PlayerManager, Runnable {
|
||||
public class H2PlayerManager implements PlayerManager {
|
||||
@Setter
|
||||
@Autowired
|
||||
private H2PlayerDAO h2playerDao;
|
||||
private List<H2Player> playerList = Collections.synchronizedList(new ArrayList<>());
|
||||
private final Object lock = new Object();
|
||||
@Setter
|
||||
private int keepAliveInterval = 1;
|
||||
@Autowired
|
||||
private World world;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
(new Thread(this, "KeepAlive")).start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Player createPlayer(String name, EntityLocation location, World world) {
|
||||
//TODO в дальнейшем следует в этом методе только имплементацию Player
|
||||
@@ -65,11 +57,8 @@ public class H2PlayerManager implements PlayerManager, Runnable {
|
||||
public void joinServer(Player player) {
|
||||
//TODO в дальнейшем следует именно этому методу передать функции инсерта в БД
|
||||
H2Player h2Player = (H2Player) player;
|
||||
synchronized (lock) {
|
||||
playerList.add(h2Player);
|
||||
h2Player.setOnline(true);
|
||||
lock.notify();
|
||||
}
|
||||
playerList.add(h2Player);
|
||||
h2Player.setOnline(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,13 +68,9 @@ public class H2PlayerManager implements PlayerManager, Runnable {
|
||||
h2playerDao.update(h2Player);
|
||||
} catch (SQLException e) {
|
||||
log.error(format("Update player '{}'", h2Player.getName()).getMessage(), e);
|
||||
synchronized (lock) {
|
||||
playerList.remove(h2Player);
|
||||
}
|
||||
playerList.remove(h2Player);
|
||||
} finally {
|
||||
h2Player.setId(0);
|
||||
h2Player.setOnline(false);
|
||||
h2Player.setWorld(null);
|
||||
h2Player.getLoadedChunks().clear();
|
||||
}
|
||||
}
|
||||
@@ -153,27 +138,4 @@ public class H2PlayerManager implements PlayerManager, Runnable {
|
||||
return h2Player;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (!Thread.currentThread().isInterrupted()) {
|
||||
while(getCountPlayers() == 0) {
|
||||
synchronized (lock) {
|
||||
try {
|
||||
lock.wait();
|
||||
} catch (InterruptedException e) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getBroadcastChannel().sendKeepAlive();
|
||||
|
||||
try {
|
||||
Thread.sleep(keepAliveInterval);
|
||||
} catch (InterruptedException e) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user