vnoření mapObject zpet do map
parent
ca6161b505
commit
758ce624ef
164
log.log
164
log.log
|
|
@ -1,60 +1,104 @@
|
||||||
13.02.25 18:7:16 I ---------------------------------------------
|
13.02.25 20:29:14 I ---------------------------------------------
|
||||||
13.02.25 18:7:16 I jNet Server
|
13.02.25 20:29:14 I jNet Server
|
||||||
13.02.25 18:7:16 I Version: 1 (Thu Feb 13 09:04:35 CET 2025)
|
13.02.25 20:29:14 I Version: 1 (Thu Feb 13 09:04:35 CET 2025)
|
||||||
13.02.25 18:7:16 I ---------------------------------------------
|
13.02.25 20:29:14 I ---------------------------------------------
|
||||||
13.02.25 18:7:16 I
|
13.02.25 20:29:14 I
|
||||||
13.02.25 18:7:16 I Loading config ...
|
13.02.25 20:29:14 I Loading config ...
|
||||||
13.02.25 18:7:16 I successfully
|
13.02.25 20:29:15 I successfully
|
||||||
13.02.25 18:7:16 D Debug mode on
|
13.02.25 20:29:15 D Debug mode on
|
||||||
13.02.25 18:7:16 I Connecting to a selected database ...
|
13.02.25 20:29:15 I Connecting to a selected database ...
|
||||||
13.02.25 18:7:16 I successfully
|
13.02.25 20:29:15 I successfully
|
||||||
13.02.25 18:7:16 I Loading user list ...
|
13.02.25 20:29:15 I Loading user list ...
|
||||||
13.02.25 18:7:16 I load 2 user(s)
|
13.02.25 20:29:15 I load 2 user(s)
|
||||||
13.02.25 18:7:16 I Loading map list ...
|
13.02.25 20:29:15 I Loading map list ...
|
||||||
13.02.25 18:7:16 I load 6 map(s)
|
13.02.25 20:29:15 I load 6 map(s)
|
||||||
13.02.25 18:7:16 I Loading object list ...
|
13.02.25 20:29:15 I Loading object type ...
|
||||||
13.02.25 18:7:17 I load 8 object(s)
|
13.02.25 20:29:15 I load 12 type(s)
|
||||||
13.02.25 18:7:17 I Loading object type ...
|
13.02.25 20:29:15 I Loading SNMP profile ...
|
||||||
13.02.25 18:7:17 I load 12 type(s)
|
13.02.25 20:29:15 I load 2 profile(s)
|
||||||
13.02.25 18:7:17 I Loading SNMP profile ...
|
13.02.25 20:29:15 I Loading events ...
|
||||||
13.02.25 18:7:17 I load 2 profile(s)
|
13.02.25 20:29:15 I load 35 event(s)
|
||||||
13.02.25 18:7:17 I Loading events ...
|
13.02.25 20:29:16 I Ping probe start
|
||||||
13.02.25 18:7:17 I load 30 event(s)
|
13.02.25 20:29:16 I Server is ready and listening on port 1225
|
||||||
13.02.25 18:7:17 I Ping probe start
|
13.02.25 20:29:16 D -> Message type: 1
|
||||||
13.02.25 18:7:17 I Server is ready and listening on port 1225
|
13.02.25 20:29:16 I Authorization request send (kubernetes.docker.internal)
|
||||||
13.02.25 18:7:49 D -> Message type: 1
|
13.02.25 20:29:16 D <- Message type: 3
|
||||||
13.02.25 18:7:49 I Authorization request send (kubernetes.docker.internal)
|
13.02.25 20:29:16 D -> Message type: 4
|
||||||
13.02.25 18:7:49 D <- Message type: 3
|
13.02.25 20:29:16 I User: michal logged in (kubernetes.docker.internal)
|
||||||
13.02.25 18:7:49 D -> Message type: 4
|
13.02.25 20:29:16 D <- Message type: 5
|
||||||
13.02.25 18:7:49 I User: michal logged in (kubernetes.docker.internal)
|
13.02.25 20:29:16 D <- Message type: 9
|
||||||
13.02.25 18:7:49 D <- Message type: 5
|
13.02.25 20:29:16 D <- For all. Message type: 7
|
||||||
13.02.25 18:7:49 D <- Message type: 9
|
13.02.25 20:29:16 D <- Message type: 13
|
||||||
13.02.25 18:7:49 D <- For all. Message type: 7
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 13
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 8
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 11
|
||||||
13.02.25 18:7:49 D <- Message type: 8
|
13.02.25 20:29:16 D <- Message type: 11
|
||||||
13.02.25 18:7:49 D <- Message type: 11
|
13.02.25 20:29:16 D <- Message type: 100
|
||||||
13.02.25 18:7:49 D <- Message type: 11
|
13.02.25 20:29:16 D <- Message type: 100
|
||||||
13.02.25 18:7:49 D <- Message type: 100
|
13.02.25 20:29:16 D <- Message type: 100
|
||||||
13.02.25 18:7:49 D <- Message type: 100
|
13.02.25 20:29:16 D <- Message type: 100
|
||||||
13.02.25 18:7:49 D <- Message type: 100
|
13.02.25 20:29:16 D <- Message type: 100
|
||||||
13.02.25 18:7:49 D <- Message type: 100
|
13.02.25 20:29:16 D <- Message type: 100
|
||||||
13.02.25 18:7:49 D <- Message type: 100
|
13.02.25 20:29:16 D <- Message type: 110
|
||||||
13.02.25 18:7:49 D <- Message type: 100
|
13.02.25 20:29:16 D <- Message type: 107
|
||||||
13.02.25 18:7:49 D <- Message type: 14
|
13.02.25 20:29:16 D <- Message type: 107
|
||||||
13.02.25 18:7:49 D <- Message type: 110
|
13.02.25 20:29:19 I Client disconnected
|
||||||
13.02.25 18:7:49 D <- Message type: 107
|
13.02.25 20:29:21 D -> Message type: 1
|
||||||
13.02.25 18:7:49 D <- Message type: 107
|
13.02.25 20:29:21 I Authorization request send (kubernetes.docker.internal)
|
||||||
13.02.25 18:8:31 D -> Message type: 105
|
13.02.25 20:29:21 D <- Message type: 3
|
||||||
13.02.25 18:8:31 D <- For all. Message type: 105
|
13.02.25 20:29:21 D -> Message type: 4
|
||||||
13.02.25 18:8:31 D <- For all. Message type: 108
|
13.02.25 20:29:21 I User: michal logged in (kubernetes.docker.internal)
|
||||||
|
13.02.25 20:29:21 D <- Message type: 5
|
||||||
|
13.02.25 20:29:21 D <- Message type: 9
|
||||||
|
13.02.25 20:29:21 D <- For all. Message type: 7
|
||||||
|
13.02.25 20:29:21 D <- Message type: 13
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 8
|
||||||
|
13.02.25 20:29:21 D <- Message type: 11
|
||||||
|
13.02.25 20:29:21 D <- Message type: 11
|
||||||
|
13.02.25 20:29:21 D <- Message type: 100
|
||||||
|
13.02.25 20:29:21 D <- Message type: 100
|
||||||
|
13.02.25 20:29:21 D <- Message type: 100
|
||||||
|
13.02.25 20:29:21 D <- Message type: 100
|
||||||
|
13.02.25 20:29:21 D <- Message type: 100
|
||||||
|
13.02.25 20:29:21 D <- Message type: 100
|
||||||
|
13.02.25 20:29:21 D <- Message type: 110
|
||||||
|
13.02.25 20:29:21 D <- Message type: 107
|
||||||
|
13.02.25 20:29:21 D <- Message type: 107
|
||||||
|
13.02.25 20:29:48 D -> Message type: 102
|
||||||
|
13.02.25 20:29:48 D <- For all. Message type: 106
|
||||||
|
13.02.25 20:29:51 D -> Message type: 102
|
||||||
|
13.02.25 20:29:51 D <- For all. Message type: 106
|
||||||
|
13.02.25 20:29:52 D -> Message type: 102
|
||||||
|
13.02.25 20:29:52 D <- For all. Message type: 106
|
||||||
|
13.02.25 20:29:53 D -> Message type: 102
|
||||||
|
13.02.25 20:29:53 D <- For all. Message type: 106
|
||||||
|
13.02.25 20:29:56 D -> Message type: 102
|
||||||
|
13.02.25 20:29:56 D <- For all. Message type: 106
|
||||||
|
13.02.25 20:29:57 D -> Message type: 102
|
||||||
|
13.02.25 20:29:57 D <- For all. Message type: 106
|
||||||
|
13.02.25 20:29:59 D -> Message type: 102
|
||||||
|
13.02.25 20:29:59 D <- For all. Message type: 106
|
||||||
|
13.02.25 20:30:38 D -> Message type: 105
|
||||||
|
13.02.25 20:30:38 D <- For all. Message type: 105
|
||||||
|
13.02.25 20:30:38 D <- For all. Message type: 108
|
||||||
|
|
|
||||||
|
|
@ -164,7 +164,8 @@ public class Database {
|
||||||
Map m = new Map(
|
Map m = new Map(
|
||||||
rs.getInt("id"),
|
rs.getInt("id"),
|
||||||
rs.getString("name"),
|
rs.getString("name"),
|
||||||
rs.getBoolean("locked"));
|
rs.getBoolean("locked"),
|
||||||
|
getMapObject(rs.getInt("id")));
|
||||||
list.add(m);
|
list.add(m);
|
||||||
}
|
}
|
||||||
rs.close();
|
rs.close();
|
||||||
|
|
|
||||||
|
|
@ -31,13 +31,13 @@ public class Server {
|
||||||
|
|
||||||
public static PropertiesManager config;
|
public static PropertiesManager config;
|
||||||
public static List<Map> maps = new ArrayList<>();
|
public static List<Map> maps = new ArrayList<>();
|
||||||
public static ArrayList<MapObject> mapObject= new ArrayList<>();
|
//public static ArrayList<MapObject> mapObject= new ArrayList<>();
|
||||||
public static ArrayList<OnlineClients> onlineClients = new ArrayList<>();
|
public static List<OnlineClients> onlineClients = new ArrayList<>();
|
||||||
public static ArrayList<ObjectType> objectType = new ArrayList<>();
|
public static List<ObjectType> objectType = new ArrayList<>();
|
||||||
public static ArrayList<SnmpProfile> snmpProfile = new ArrayList<>();
|
public static List<SnmpProfile> snmpProfile = new ArrayList<>();
|
||||||
public static ArrayList<SnmpProbe> snmpProbe = new ArrayList<>();
|
public static List<SnmpProbe> snmpProbe = new ArrayList<>();
|
||||||
public static ArrayList<User> users = new ArrayList<>();
|
public static List<User> users = new ArrayList<>();
|
||||||
public static ArrayList<Event> events = new ArrayList<>();
|
public static List<Event> events = new ArrayList<>();
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
|
@ -101,10 +101,6 @@ public class Server {
|
||||||
maps = Database.getMapList();
|
maps = Database.getMapList();
|
||||||
LogFile.printInfo(" load " + maps.size() + " map(s)");
|
LogFile.printInfo(" load " + maps.size() + " map(s)");
|
||||||
|
|
||||||
LogFile.printInfo("Loading object list ...");
|
|
||||||
mapObject = Database.getAllMapObject();
|
|
||||||
LogFile.printInfo(" load " + mapObject.size() + " object(s)");
|
|
||||||
|
|
||||||
LogFile.printInfo("Loading object type ...");
|
LogFile.printInfo("Loading object type ...");
|
||||||
objectType = Database.getObjectType();
|
objectType = Database.getObjectType();
|
||||||
LogFile.printInfo(" load " + objectType.size() + " type(s)");
|
LogFile.printInfo(" load " + objectType.size() + " type(s)");
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ public class ServerMessageParser {
|
||||||
LogFile.printDebug("-> Message type: " + msg.getType());
|
LogFile.printDebug("-> Message type: " + msg.getType());
|
||||||
|
|
||||||
ListIterator<Map> iteratorMap = Server.maps.listIterator();
|
ListIterator<Map> iteratorMap = Server.maps.listIterator();
|
||||||
ListIterator<MapObject> iteratorMapObject = Server.mapObject.listIterator();
|
|
||||||
|
|
||||||
switch (msg.getType()) {
|
switch (msg.getType()) {
|
||||||
|
|
||||||
|
|
@ -98,8 +97,6 @@ public class ServerMessageParser {
|
||||||
for (Map i : Server.maps) {
|
for (Map i : Server.maps) {
|
||||||
send(new Message(Message.MAP, i));
|
send(new Message(Message.MAP, i));
|
||||||
}
|
}
|
||||||
// odeslat seznam objektu
|
|
||||||
send(Message.OBJECT_LIST, Server.mapObject);
|
|
||||||
// odeslat seznam udalosti
|
// odeslat seznam udalosti
|
||||||
send(new Message(Message.EVENT_LIST, Server.events));
|
send(new Message(Message.EVENT_LIST, Server.events));
|
||||||
// odeslat seznam snmp profilů
|
// odeslat seznam snmp profilů
|
||||||
|
|
@ -148,7 +145,11 @@ public class ServerMessageParser {
|
||||||
case Message.ADD_OBJECT:
|
case Message.ADD_OBJECT:
|
||||||
MapObject mo = Database.addMapObject((MapObject) msg.getMsg());
|
MapObject mo = Database.addMapObject((MapObject) msg.getMsg());
|
||||||
// pridat do seznamu
|
// pridat do seznamu
|
||||||
Server.mapObject.add(mo);
|
for (Map map : Server.maps) {
|
||||||
|
if (map.getId() == mo.getMap()) {
|
||||||
|
map.getObjects().add(mo);
|
||||||
|
}
|
||||||
|
}
|
||||||
// odesle všem novy objekt
|
// odesle všem novy objekt
|
||||||
sendAll(new Message(Message.ADD_OBJECT, mo));
|
sendAll(new Message(Message.ADD_OBJECT, mo));
|
||||||
// prida event a odesle ho
|
// prida event a odesle ho
|
||||||
|
|
@ -162,17 +163,18 @@ public class ServerMessageParser {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Message.REMOVE_OBJECT:
|
case Message.REMOVE_OBJECT:
|
||||||
while (iteratorMapObject.hasNext()) {
|
for (Map map : Server.maps) {
|
||||||
MapObject obj = iteratorMapObject.next();
|
for (MapObject object : map.getObjects()) {
|
||||||
if (obj.getId() == (int) msg.getMsg()) {
|
if (object.getId() == (int) msg.getMsg()) {
|
||||||
// odebere z databaze
|
// odebere z databaze
|
||||||
Database.removeObject(obj.getId());
|
Database.removeObject(object.getId());
|
||||||
// odesle informaci o odebrani objektu klientum
|
// odesle informaci o odebrani objektu klientum
|
||||||
sendAll(new Message(Message.REMOVE_OBJECT, obj.getId()));
|
sendAll(new Message(Message.REMOVE_OBJECT, object.getId()));
|
||||||
// odebere ze seznamu
|
// odebere ze seznamu
|
||||||
iteratorMapObject.remove();
|
map.getObjects().remove(object);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -209,18 +211,19 @@ public class ServerMessageParser {
|
||||||
// zmenit v databázi
|
// zmenit v databázi
|
||||||
Database.objectMove(data[0], data[1], data[2]);
|
Database.objectMove(data[0], data[1], data[2]);
|
||||||
// zmenit v seznamu
|
// zmenit v seznamu
|
||||||
while (iteratorMapObject.hasNext()) {
|
for (Map mapa : Server.maps) {
|
||||||
MapObject obj = iteratorMapObject.next();
|
for (MapObject object : mapa.getObjects()) {
|
||||||
if (obj.getId() == data[0]) {
|
if (object.getId() == data[0]) {
|
||||||
// zmenit pozici
|
// zmenit pozici
|
||||||
obj.setX(data[1]);
|
object.setX(data[1]);
|
||||||
obj.setY(data[2]);
|
object.setY(data[2]);
|
||||||
// zapsat zmenu do databaze
|
// zapsat zmenu do databaze
|
||||||
Database.objectMove(data[0], data[1], data[2]);
|
Database.objectMove(data[0], data[1], data[2]);
|
||||||
// preposlat zmenu klientum
|
// preposlat zmenu klientum
|
||||||
sendAll(new Message(Message.UPDATE_OBJECT, obj));
|
sendAll(new Message(Message.UPDATE_OBJECT, object));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Message.UPDATE_OBJECT:
|
case Message.UPDATE_OBJECT:
|
||||||
|
|
@ -228,11 +231,14 @@ public class ServerMessageParser {
|
||||||
// zmenit v databazi
|
// zmenit v databazi
|
||||||
Database.updateObject(mo_u);
|
Database.updateObject(mo_u);
|
||||||
// zmenit v seznamu
|
// zmenit v seznamu
|
||||||
while (iteratorMapObject.hasNext()) {
|
for (Map m : Server.maps) {
|
||||||
if (iteratorMapObject.next().getId() == mo_u.getId()) {
|
for (int i = 0; i < m.getObjects().size(); i++) {
|
||||||
iteratorMapObject.set(mo_u);
|
if (m.getObjects().get(i).getId() == mo_u.getId()) {
|
||||||
|
m.getObjects().set(i, mo_u);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// preposlat zmenu klientum
|
// preposlat zmenu klientum
|
||||||
sendAll(new Message(Message.UPDATE_OBJECT, mo_u));
|
sendAll(new Message(Message.UPDATE_OBJECT, mo_u));
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import java.io.InputStreamReader;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import jnet.lib.LogFile;
|
import jnet.lib.LogFile;
|
||||||
import jnet.lib.Status;
|
import jnet.lib.Status;
|
||||||
|
import jnet.lib.object.Map;
|
||||||
import jnet.lib.object.MapObject;
|
import jnet.lib.object.MapObject;
|
||||||
import jnet.server.Server;
|
import jnet.server.Server;
|
||||||
|
|
||||||
|
|
@ -21,9 +22,12 @@ public class NettyPing extends Thread {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
LogFile.printInfo("Ping probe start");
|
LogFile.printInfo("Ping probe start");
|
||||||
for (MapObject mapObject : Server.mapObject) {
|
for (Map map : Server.maps) {
|
||||||
schedulePing(mapObject);
|
for (MapObject mapObject : map.getObjects()) {
|
||||||
|
schedulePing(mapObject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void schedulePing(MapObject object) {
|
private static void schedulePing(MapObject object) {
|
||||||
|
|
@ -39,7 +43,7 @@ public class NettyPing extends Thread {
|
||||||
private static void pingHost(MapObject object) {
|
private static void pingHost(MapObject object) {
|
||||||
try {
|
try {
|
||||||
String command = System.getProperty("os.name").startsWith("Windows")
|
String command = System.getProperty("os.name").startsWith("Windows")
|
||||||
? "ping -n 1 -w " + String.valueOf((Server.config.getInt("ping_timeout")*1000)) + " " + object.getIp() // Timeout 2000 ms (Windows)
|
? "ping -n 1 -w " + String.valueOf((Server.config.getInt("ping_timeout") * 1000)) + " " + object.getIp() // Timeout 2000 ms (Windows)
|
||||||
: "ping -c 1 -W " + String.valueOf(Server.config.getInt("ping_timeout")) + " " + object.getIp(); // Timeout 2 sec (Linux)
|
: "ping -c 1 -W " + String.valueOf(Server.config.getInt("ping_timeout")) + " " + object.getIp(); // Timeout 2 sec (Linux)
|
||||||
|
|
||||||
Process process = Runtime.getRuntime().exec(command);
|
Process process = Runtime.getRuntime().exec(command);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import jnet.lib.LogFile;
|
||||||
import jnet.lib.Message;
|
import jnet.lib.Message;
|
||||||
import jnet.lib.Status;
|
import jnet.lib.Status;
|
||||||
import jnet.lib.object.Event;
|
import jnet.lib.object.Event;
|
||||||
|
import jnet.lib.object.Map;
|
||||||
import jnet.lib.object.MapObject;
|
import jnet.lib.object.MapObject;
|
||||||
import jnet.server.Database;
|
import jnet.server.Database;
|
||||||
import jnet.server.Server;
|
import jnet.server.Server;
|
||||||
|
|
@ -41,7 +42,8 @@ public class Ping extends Thread {
|
||||||
|
|
||||||
// Naplánování periodického provádění kontrol
|
// Naplánování periodického provádění kontrol
|
||||||
scheduledExecutorService.scheduleAtFixedRate(() -> {
|
scheduledExecutorService.scheduleAtFixedRate(() -> {
|
||||||
for (MapObject mo : Server.mapObject) {
|
for (Map map : Server.maps) {
|
||||||
|
for (MapObject mo : map.getObjects()) {
|
||||||
if (mo.isActive()) {
|
if (mo.isActive()) {
|
||||||
// Vytvoření úkolu pro pingování každé IP adresy
|
// Vytvoření úkolu pro pingování každé IP adresy
|
||||||
executorService.submit(() -> {
|
executorService.submit(() -> {
|
||||||
|
|
@ -59,6 +61,8 @@ public class Ping extends Thread {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}, 0, PERIOD, TimeUnit.SECONDS);
|
}, 0, PERIOD, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue