impl WSC2
This commit is contained in:
parent
81341d0709
commit
853b2baaf6
2 changed files with 77 additions and 3 deletions
|
@ -13,7 +13,7 @@ import de.com.baseband.client.mixin.MixinProxy;
|
||||||
import de.com.baseband.client.registry.Configuration;
|
import de.com.baseband.client.registry.Configuration;
|
||||||
import de.com.baseband.client.registry.Updater;
|
import de.com.baseband.client.registry.Updater;
|
||||||
import de.com.baseband.client.util.interact.Chat;
|
import de.com.baseband.client.util.interact.Chat;
|
||||||
import de.com.baseband.client.util.net.WebServiceClient;
|
import de.com.baseband.client.util.net.WebServiceClient2;
|
||||||
import de.com.baseband.client.util.render.NotificationRender;
|
import de.com.baseband.client.util.render.NotificationRender;
|
||||||
import de.com.baseband.prod.LoadHandler;
|
import de.com.baseband.prod.LoadHandler;
|
||||||
import de.tudbut.tools.Lock;
|
import de.tudbut.tools.Lock;
|
||||||
|
@ -36,6 +36,7 @@ public class BaseBand {
|
||||||
public static final EventBus EVENT_BUS = new EventBus(Throwable::printStackTrace);
|
public static final EventBus EVENT_BUS = new EventBus(Throwable::printStackTrace);
|
||||||
public static final RemoteEventBus REMOTE_EVENT_BUS = new RemoteEventBus();
|
public static final RemoteEventBus REMOTE_EVENT_BUS = new RemoteEventBus();
|
||||||
public static final StaticEventHandler STATIC_EVENT_HANDLER = new StaticEventHandler();
|
public static final StaticEventHandler STATIC_EVENT_HANDLER = new StaticEventHandler();
|
||||||
|
public static final WebServiceClient2 wsc2 = new WebServiceClient2();
|
||||||
public static boolean enabled = true;
|
public static boolean enabled = true;
|
||||||
public static boolean finishedDisabling = false;
|
public static boolean finishedDisabling = false;
|
||||||
public static Minecraft mc;
|
public static Minecraft mc;
|
||||||
|
@ -80,7 +81,6 @@ public class BaseBand {
|
||||||
Lock lock = new Lock();
|
Lock lock = new Lock();
|
||||||
while (enabled) {
|
while (enabled) {
|
||||||
lock.lock(1000);
|
lock.lock(1000);
|
||||||
WebServiceClient.connect();
|
|
||||||
for (Updater updater : Configuration.updaters) {
|
for (Updater updater : Configuration.updaters) {
|
||||||
updater.poll();
|
updater.poll();
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,11 @@ public class BaseBand {
|
||||||
LOGGER.info("Unloaded.");
|
LOGGER.info("Unloaded.");
|
||||||
}, "Async Config Updater").start();
|
}, "Async Config Updater").start();
|
||||||
|
|
||||||
|
LOGGER.info("Starting up WSC2...");
|
||||||
|
|
||||||
|
wsc2.start();
|
||||||
|
wsc2.lock.waitHere();
|
||||||
|
|
||||||
LOGGER.info("Initialized.");
|
LOGGER.info("Initialized.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,75 @@
|
||||||
package de.com.baseband.client.util.net;
|
package de.com.baseband.client.util.net;
|
||||||
|
|
||||||
public class WebServiceClient2 {
|
import de.com.baseband.client.BaseBand;
|
||||||
|
import de.com.baseband.client.util.data.GitHash;
|
||||||
|
import de.com.baseband.prod.LoadHandler;
|
||||||
|
import de.tudbut.parsing.JSON;
|
||||||
|
import de.tudbut.parsing.TCN;
|
||||||
|
import de.tudbut.tools.Lock;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
|
public class WebServiceClient2 extends Thread {
|
||||||
// TODO make
|
// TODO make
|
||||||
// -> https://downloads.baseband.com.de
|
// -> https://downloads.baseband.com.de
|
||||||
|
|
||||||
|
BufferedReader connection;
|
||||||
|
public Lock lock = new Lock();
|
||||||
|
boolean outdated = false;
|
||||||
|
|
||||||
|
public WebServiceClient2() {
|
||||||
|
try {
|
||||||
|
connection = new BufferedReader(new InputStreamReader(new URL("https://downloads.baseband.com.de/listen").openStream()));
|
||||||
|
lock.lock();
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
} catch (IOException e) {
|
||||||
|
BaseBand.LOGGER.fatal("Cannot connect to WSC2.");
|
||||||
|
BaseBand.shutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
while (true) {
|
||||||
|
String line = connection.readLine();
|
||||||
|
|
||||||
|
TCN event = JSON.read(line);
|
||||||
|
switch (event.getString("event-kind")) {
|
||||||
|
case "init":
|
||||||
|
BaseBand.notify("Connected to WSC2.");
|
||||||
|
lock.unlock();
|
||||||
|
break;
|
||||||
|
case "refresh:1.12.2":
|
||||||
|
TCN branch = event.getSub("data").getSub(LoadHandler.data.getString("branch"));
|
||||||
|
if (branch != null) {
|
||||||
|
if (!branch.getString("commit").equals(GitHash.GIT_HASH) && !outdated) {
|
||||||
|
outdated = true;
|
||||||
|
BaseBand.notifyAll("§d§lBaseBand has updated. To update, restart Minecraft.", 40000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "refresh:ednieva":
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
BaseBand.notify("Incompatible WSC2 event received: " + event.getString("event-kind") + ". Please report this.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
connection = null;
|
||||||
|
BaseBand.LOGGER.info("WSC2 disconnected.");
|
||||||
|
lock.lock(10000);
|
||||||
|
lock.waitHere();
|
||||||
|
try {
|
||||||
|
connection = new BufferedReader(new InputStreamReader(new URL("https://downloads.baseband.com.de/listen").openStream()));
|
||||||
|
} catch (IOException ex) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue