Skip to content
This repository was archived by the owner on Jun 7, 2022. It is now read-only.

Commit f2a2da2

Browse files
author
Tarek
committed
added fix for screen system + non blocking screen system
1 parent 657e6e3 commit f2a2da2

File tree

5 files changed

+78
-115
lines changed

5 files changed

+78
-115
lines changed

cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/CloudNetWrapper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@
2222
import de.dytanic.cloudnet.web.client.WebClient;
2323
import de.dytanic.cloudnetwrapper.command.*;
2424
import de.dytanic.cloudnetwrapper.handlers.IWrapperHandler;
25+
import de.dytanic.cloudnetwrapper.handlers.ReadConsoleLogHandler;
2526
import de.dytanic.cloudnetwrapper.handlers.StopTimeHandler;
2627
import de.dytanic.cloudnetwrapper.network.packet.in.*;
2728
import de.dytanic.cloudnetwrapper.network.packet.out.PacketOutSetReadyWrapper;
2829
import de.dytanic.cloudnetwrapper.network.packet.out.PacketOutUpdateCPUUsage;
2930
import de.dytanic.cloudnetwrapper.network.packet.out.PacketOutUpdateWrapperInfo;
3031
import de.dytanic.cloudnetwrapper.network.packet.out.PacketOutWrapperScreen;
31-
import de.dytanic.cloudnetwrapper.screen.ScreenProvider;
3232
import de.dytanic.cloudnetwrapper.server.BungeeCord;
3333
import de.dytanic.cloudnetwrapper.server.CloudGameServer;
3434
import de.dytanic.cloudnetwrapper.server.GameServer;
@@ -56,7 +56,6 @@ public final class CloudNetWrapper implements Executable, Runnable, ShutdownOnCe
5656
private final CloudLogger cloudNetLogging;
5757
private final CloudNetWrapperConfig wrapperConfig;
5858
private final Scheduler scheduler = new Scheduler(40);
59-
private final ScreenProvider screenProvider = new ScreenProvider();
6059
private final CommandManager commandManager = new CommandManager();
6160
private final WebClient webClient = new WebClient();
6261
private Auth auth;
@@ -180,9 +179,10 @@ public boolean bootstrap() throws Exception
180179
//Server Handlers
181180
{
182181
networkConnection.sendPacket(new PacketOutSetReadyWrapper(true));
183-
IWrapperHandler iWrapperHandler = new StopTimeHandler();
182+
IWrapperHandler iWrapperHandler = new StopTimeHandler(), readConsoleLogWrapperHandler = new ReadConsoleLogHandler();
184183

185184
scheduler.runTaskRepeatSync(iWrapperHandler.toExecutor(), 0, iWrapperHandler.getTicks());
185+
scheduler.runTaskRepeatSync(readConsoleLogWrapperHandler.toExecutor(), 0, readConsoleLogWrapperHandler.getTicks());
186186

187187
scheduler.runTaskRepeatAsync(new Runnable() {
188188
@Override
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package de.dytanic.cloudnetwrapper.handlers;
2+
3+
import de.dytanic.cloudnet.lib.server.screen.ScreenInfo;
4+
import de.dytanic.cloudnetwrapper.CloudNetWrapper;
5+
import de.dytanic.cloudnetwrapper.network.packet.out.PacketOutSendScreenLine;
6+
import de.dytanic.cloudnetwrapper.server.BungeeCord;
7+
import de.dytanic.cloudnetwrapper.server.CloudGameServer;
8+
import de.dytanic.cloudnetwrapper.server.GameServer;
9+
import de.dytanic.cloudnetwrapper.server.process.ServerDispatcher;
10+
11+
import java.io.InputStream;
12+
import java.nio.charset.StandardCharsets;
13+
import java.util.Collections;
14+
15+
public final class ReadConsoleLogHandler implements IWrapperHandler {
16+
17+
private final StringBuffer stringBuffer = new StringBuffer();
18+
19+
private final byte[] buffer = new byte[1024];
20+
21+
private int len;
22+
23+
@Override
24+
public void run(CloudNetWrapper obj)
25+
{
26+
for (CloudGameServer cloudGameServer : obj.getCloudServers().values())
27+
if (cloudGameServer.isAlive() && cloudGameServer.getInstance() != null)
28+
readConsoleLog(cloudGameServer);
29+
30+
for (BungeeCord bungeeCord : obj.getProxys().values())
31+
if (bungeeCord.isAlive() && bungeeCord.getInstance() != null)
32+
readConsoleLog(bungeeCord);
33+
34+
for (GameServer gameServer : obj.getServers().values())
35+
if (gameServer.isAlive() && gameServer.getInstance() != null)
36+
readConsoleLog(gameServer);
37+
}
38+
39+
private void readConsoleLog(ServerDispatcher server)
40+
{
41+
if (server.getInstance().isAlive() && server.getInstance().getInputStream() != null)
42+
{
43+
try
44+
{
45+
46+
InputStream inputStream = server.getInstance().getInputStream();
47+
48+
while (inputStream.available() > 0 && (len = inputStream.read(buffer, 0, buffer.length)) != -1)
49+
stringBuffer.append(new String(buffer, 0, len, StandardCharsets.UTF_8));
50+
51+
for (String input : stringBuffer.toString().split("\r"))
52+
for (String text : input.split("\n"))
53+
if (!text.trim().isEmpty())
54+
{
55+
CloudNetWrapper.getInstance().getNetworkConnection()
56+
.sendPacket(new PacketOutSendScreenLine(Collections.singletonList(new ScreenInfo(server.getServiceId(), input))));
57+
}
58+
59+
} catch (Exception ignored)
60+
{
61+
} finally
62+
{
63+
stringBuffer.setLength(0);
64+
}
65+
}
66+
}
67+
68+
@Override
69+
public int getTicks()
70+
{
71+
return 40;
72+
}
73+
}

cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/network/packet/in/PacketInScreen.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,16 @@
44

55
package de.dytanic.cloudnetwrapper.network.packet.in;
66

7-
import com.google.gson.reflect.TypeToken;
8-
import de.dytanic.cloudnet.lib.DefaultType;
97
import de.dytanic.cloudnet.lib.network.protocol.packet.PacketInHandler;
108
import de.dytanic.cloudnet.lib.network.protocol.packet.PacketSender;
11-
import de.dytanic.cloudnet.lib.server.info.ProxyInfo;
12-
import de.dytanic.cloudnet.lib.server.info.ServerInfo;
139
import de.dytanic.cloudnet.lib.utility.document.Document;
14-
import de.dytanic.cloudnetwrapper.CloudNetWrapper;
15-
import de.dytanic.cloudnetwrapper.server.BungeeCord;
16-
import de.dytanic.cloudnetwrapper.server.GameServer;
1710

1811
public final class PacketInScreen extends PacketInHandler {
1912

2013
@Override
2114
public void handleInput(Document data, PacketSender packetSender)
2215
{
16+
/*
2317
if (data.getObject("type", DefaultType.class) != DefaultType.BUNGEE_CORD)
2418
{
2519
ServerInfo server = data.getObject("serverInfo", new TypeToken<ServerInfo>() {
@@ -45,5 +39,6 @@ else if (CloudNetWrapper.getInstance().getScreenProvider().contains(gameServer))
4539
CloudNetWrapper.getInstance().getScreenProvider().cancel(gameServer);
4640
}
4741
}
42+
*/
4843
}
4944
}

cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/screen/ScreenLoader.java

Lines changed: 0 additions & 56 deletions
This file was deleted.

cloudnet-wrapper/src/main/java/de/dytanic/cloudnetwrapper/screen/ScreenProvider.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)