mirror of https://github.com/webbukkit/dynmap.git
Allow tracking uptime of the internal web server similar to tracking API availability
This commit is contained in:
parent
31d1b400f0
commit
980acd0f24
|
@ -679,6 +679,7 @@ public class DynmapCore implements DynmapCommonAPI {
|
||||||
Log.warning("Using external server, but " + JsonFileClientUpdateComponent.class.toString() + " is DISABLED!");
|
Log.warning("Using external server, but " + JsonFileClientUpdateComponent.class.toString() + " is DISABLED!");
|
||||||
webserverCompConfigWarn = true;
|
webserverCompConfigWarn = true;
|
||||||
}
|
}
|
||||||
|
DynmapWebserverStateListener.stateWebServerDisabled();
|
||||||
}
|
}
|
||||||
if (webserverCompConfigWarn) {
|
if (webserverCompConfigWarn) {
|
||||||
Log.warning("If the website is missing files or not loading/updating, this might be why.");
|
Log.warning("If the website is missing files or not loading/updating, this might be why.");
|
||||||
|
@ -1075,6 +1076,7 @@ public class DynmapCore implements DynmapCommonAPI {
|
||||||
try {
|
try {
|
||||||
if(webServer != null) {
|
if(webServer != null) {
|
||||||
webServer.start();
|
webServer.start();
|
||||||
|
DynmapWebserverStateListener.stateWebserverStarted();
|
||||||
Log.info("Web server started on address " + webhostname + ":" + webport);
|
Log.info("Web server started on address " + webhostname + ":" + webport);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -1100,6 +1102,7 @@ public class DynmapCore implements DynmapCommonAPI {
|
||||||
Log.severe("Failed to stop WebServer!", e);
|
Log.severe("Failed to stop WebServer!", e);
|
||||||
}
|
}
|
||||||
webServer = null;
|
webServer = null;
|
||||||
|
DynmapWebserverStateListener.stateWebserverStopped();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (componentManager != null) {
|
if (componentManager != null) {
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
package org.dynmap;
|
||||||
|
|
||||||
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listener class for the Dynmap integrated web server lifecycle, will only work if the internal webserver is actually being used.
|
||||||
|
*/
|
||||||
|
public abstract class DynmapWebserverStateListener
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Status flag indicating if the web server is online or offline.
|
||||||
|
*/
|
||||||
|
private static boolean webserverStarted = false;
|
||||||
|
|
||||||
|
private static final CopyOnWriteArrayList<DynmapWebserverStateListener> listeners = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when API becomes enabled, or during call to register listener if API is already enabled
|
||||||
|
*/
|
||||||
|
public abstract void webserverStarted();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when API becomes enabled, or during call to register listener if API is already enabled
|
||||||
|
*/
|
||||||
|
public abstract void webserverStopped();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is fired to indicate the listener that the internal web server is not enabled, thus indicating that {@link DynmapWebserverStateListener#webserverStarted()} and {@link DynmapWebserverStateListener#webserverStopped()} will not fire.
|
||||||
|
*/
|
||||||
|
public void webserverDisabled() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register listener instance
|
||||||
|
*
|
||||||
|
* @param listener - listener to register
|
||||||
|
*/
|
||||||
|
public static void register(DynmapWebserverStateListener listener)
|
||||||
|
{
|
||||||
|
listeners.add(listener);
|
||||||
|
if (webserverStarted)
|
||||||
|
{
|
||||||
|
listener.webserverStarted();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregister listener instance
|
||||||
|
*
|
||||||
|
* @param listener - listener to unregister
|
||||||
|
*/
|
||||||
|
public static void unregister(DynmapWebserverStateListener listener) {
|
||||||
|
listeners.remove(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Internal call - MODS/PLUGINS MUST NOT USE
|
||||||
|
public static void stateWebserverStarted()
|
||||||
|
{
|
||||||
|
if (webserverStarted)
|
||||||
|
{
|
||||||
|
stateWebserverStopped();
|
||||||
|
}
|
||||||
|
webserverStarted = true;
|
||||||
|
for (DynmapWebserverStateListener l : listeners)
|
||||||
|
{
|
||||||
|
l.webserverStarted();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Internal call - MODS/PLUGINS MUST NOT USE
|
||||||
|
public static void stateWebserverStopped()
|
||||||
|
{
|
||||||
|
for (DynmapWebserverStateListener l : listeners)
|
||||||
|
{
|
||||||
|
l.webserverStopped();
|
||||||
|
}
|
||||||
|
webserverStarted = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Internal call - MODS/PLUGINS MUST NOT USE
|
||||||
|
public static void stateWebServerDisabled()
|
||||||
|
{
|
||||||
|
for (DynmapWebserverStateListener l : listeners)
|
||||||
|
{
|
||||||
|
l.webserverDisabled();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue