Archived
0

Bridge: отправка ping-пакетов на Zond

This commit is contained in:
2017-06-24 17:12:29 +03:00
parent c96bb37845
commit 42f94093a7
5 changed files with 18 additions and 19 deletions

View File

@@ -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/' }

View File

@@ -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);

View File

@@ -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();
} }

View File

@@ -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);
}
}
} }

View File

@@ -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();
} }