Bridge: отправка ping-пакетов на Zond
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
group = 'asys'
|
group = 'asys'
|
||||||
version = '0.8-SNAPSHOT'
|
version = '0.8.1-SNAPSHOT'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
|
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
|
||||||
|
|||||||
@@ -18,6 +18,11 @@ public class BridgePlugin extends JavaPlugin {
|
|||||||
this.bridgeBukkit.startReconnect();
|
this.bridgeBukkit.startReconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
this.bridgeBukkit.startPing();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
this.bridgeBukkit.setNeedReconnect(false);
|
this.bridgeBukkit.setNeedReconnect(false);
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public abstract class AbstractBridge implements IBridge {
|
|||||||
connectTicker = new TaskTicker().setStepTimeMs(5000L);
|
connectTicker = new TaskTicker().setStepTimeMs(5000L);
|
||||||
connectTicker.setTask(() -> {
|
connectTicker.setTask(() -> {
|
||||||
getLogger().info(String.format("Connect(%d) to Zond...", ++tryConnect));
|
getLogger().info(String.format("Connect(%d) to Zond...", ++tryConnect));
|
||||||
client.connect(getConfig().getString("host"), getConfig().getInt("port"));
|
client.connect("127.0.0.1", getConfig().getInt("port"));
|
||||||
if (client.isConnected()) {
|
if (client.isConnected()) {
|
||||||
stopReconnect();
|
stopReconnect();
|
||||||
} else {
|
} else {
|
||||||
@@ -48,24 +48,13 @@ public abstract class AbstractBridge implements IBridge {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startPing(Channel channel) {
|
public void startPing() {
|
||||||
pingTicker = new TaskTicker().setStepTimeMs(5000L);
|
pingTicker = new TaskTicker().setStepTimeMs(5000L);
|
||||||
pingTicker.setTask(() -> {
|
pingTicker.setTask(() -> {
|
||||||
channel.write(new CS_Ping(
|
client.sendPacket(new CS_Ping(
|
||||||
System.currentTimeMillis(),
|
System.currentTimeMillis(),
|
||||||
20.0D, //FIXME fake tps
|
20.0D, //FIXME fake tps
|
||||||
getCountOnlinePlayers()
|
getCountOnlinePlayers()));
|
||||||
));
|
|
||||||
if (channel.isWritable()) {
|
|
||||||
channel.flush();
|
|
||||||
} else {
|
|
||||||
getLogger().warn("Lost connection!");
|
|
||||||
channel.close();
|
|
||||||
stopPing();
|
|
||||||
|
|
||||||
getLogger().warn("Try reconnect...");
|
|
||||||
startReconnect();
|
|
||||||
}
|
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package asys.bridge.client;
|
package asys.bridge.client;
|
||||||
|
|
||||||
|
import asys.mcsmanager.packets.Packet;
|
||||||
import asys.mcsmanager.packets.codec.PacketDecoder;
|
import asys.mcsmanager.packets.codec.PacketDecoder;
|
||||||
import asys.mcsmanager.packets.codec.PacketEncoder;
|
import asys.mcsmanager.packets.codec.PacketEncoder;
|
||||||
import asys.mcsmanager.packets.codec.PacketHandler;
|
import asys.mcsmanager.packets.codec.PacketHandler;
|
||||||
@@ -65,4 +66,10 @@ public class Client {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendPacket(Packet packet) {
|
||||||
|
if (isConnected()) {
|
||||||
|
channelFuture.channel().writeAndFlush(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,6 @@
|
|||||||
*/
|
*/
|
||||||
package asys.bridge.client;
|
package asys.bridge.client;
|
||||||
|
|
||||||
import io.netty.channel.Channel;
|
|
||||||
|
|
||||||
public interface IBridge {
|
public interface IBridge {
|
||||||
ILogger getLogger();
|
ILogger getLogger();
|
||||||
IConfig getConfig();
|
IConfig getConfig();
|
||||||
@@ -15,7 +13,7 @@ public interface IBridge {
|
|||||||
boolean isNeedReconnect();
|
boolean isNeedReconnect();
|
||||||
void setNeedReconnect(boolean value);
|
void setNeedReconnect(boolean value);
|
||||||
void stopReconnect();
|
void stopReconnect();
|
||||||
void startPing(Channel channel);
|
void startPing();
|
||||||
void stopPing();
|
void stopPing();
|
||||||
void disconnect();
|
void disconnect();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user