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!");
|
||||
webserverCompConfigWarn = true;
|
||||
}
|
||||
DynmapWebserverStateListener.stateWebServerDisabled();
|
||||
}
|
||||
if (webserverCompConfigWarn) {
|
||||
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 {
|
||||
if(webServer != null) {
|
||||
webServer.start();
|
||||
DynmapWebserverStateListener.stateWebserverStarted();
|
||||
Log.info("Web server started on address " + webhostname + ":" + webport);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
@ -1100,6 +1102,7 @@ public class DynmapCore implements DynmapCommonAPI {
|
|||
Log.severe("Failed to stop WebServer!", e);
|
||||
}
|
||||
webServer = null;
|
||||
DynmapWebserverStateListener.stateWebserverStopped();
|
||||
}
|
||||
|
||||
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