Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-11-16 21:10:30 +01:00
feat: Add server registered/unregistered events (#1386)
* feat: Add server registered/unregistered events * Annotate new API with `@Beta` * Migrate from classes to records * Add null checks * Fix code style indent * Add links in documentation * Fix docs indent --------- Co-authored-by: powercas_gamer <cas@mizule.dev>
Dieser Commit ist enthalten in:
Ursprung
44b1e0c6f9
Commit
09f687e5d5
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2024 Velocity Contributors
|
||||||
|
*
|
||||||
|
* The Velocity API is licensed under the terms of the MIT License. For more details,
|
||||||
|
* reference the LICENSE file in the api top-level directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.velocitypowered.api.event.proxy.server;
|
||||||
|
|
||||||
|
import com.google.common.annotations.Beta;
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||||
|
import com.velocitypowered.api.proxy.server.ServerInfo;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This event is fired by the proxy after a backend server is registered to the server map.
|
||||||
|
* Currently, it may occur when a server is registered dynamically at runtime or when a server is
|
||||||
|
* replaced due to configuration reload.
|
||||||
|
*
|
||||||
|
* @see com.velocitypowered.api.proxy.ProxyServer#registerServer(ServerInfo)
|
||||||
|
*
|
||||||
|
* @param registeredServer A {@link RegisteredServer} that has been registered.
|
||||||
|
* @since 3.3.0
|
||||||
|
*/
|
||||||
|
@Beta
|
||||||
|
public record ServerRegisteredEvent(@NotNull RegisteredServer registeredServer) {
|
||||||
|
public ServerRegisteredEvent {
|
||||||
|
Preconditions.checkNotNull(registeredServer, "registeredServer");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2024 Velocity Contributors
|
||||||
|
*
|
||||||
|
* The Velocity API is licensed under the terms of the MIT License. For more details,
|
||||||
|
* reference the LICENSE file in the api top-level directory.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.velocitypowered.api.event.proxy.server;
|
||||||
|
|
||||||
|
import com.google.common.annotations.Beta;
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||||
|
import com.velocitypowered.api.proxy.server.ServerInfo;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This event is fired by the proxy after a backend server is unregistered from the server map.
|
||||||
|
* Currently, it may occur when a server is unregistered dynamically at runtime
|
||||||
|
* or when a server is replaced due to configuration reload.
|
||||||
|
*
|
||||||
|
* @see com.velocitypowered.api.proxy.ProxyServer#unregisterServer(ServerInfo)
|
||||||
|
*
|
||||||
|
* @param unregisteredServer A {@link RegisteredServer} that has been unregistered.
|
||||||
|
* @since 3.3.0
|
||||||
|
*/
|
||||||
|
@Beta
|
||||||
|
public record ServerUnregisteredEvent(@NotNull RegisteredServer unregisteredServer) {
|
||||||
|
public ServerUnregisteredEvent {
|
||||||
|
Preconditions.checkNotNull(unregisteredServer, "unregisteredServer");
|
||||||
|
}
|
||||||
|
}
|
@ -19,6 +19,8 @@ package com.velocitypowered.proxy.server;
|
|||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.velocitypowered.api.event.proxy.server.ServerRegisteredEvent;
|
||||||
|
import com.velocitypowered.api.event.proxy.server.ServerUnregisteredEvent;
|
||||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||||
import com.velocitypowered.api.proxy.server.ServerInfo;
|
import com.velocitypowered.api.proxy.server.ServerInfo;
|
||||||
import com.velocitypowered.proxy.VelocityServer;
|
import com.velocitypowered.proxy.VelocityServer;
|
||||||
@ -84,6 +86,10 @@ public class ServerMap {
|
|||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Server with name " + serverInfo.getName() + " already registered");
|
"Server with name " + serverInfo.getName() + " already registered");
|
||||||
} else if (existing == null) {
|
} else if (existing == null) {
|
||||||
|
if (server != null) {
|
||||||
|
server.getEventManager().fireAndForget(new ServerRegisteredEvent(rs));
|
||||||
|
}
|
||||||
|
|
||||||
return rs;
|
return rs;
|
||||||
} else {
|
} else {
|
||||||
return existing;
|
return existing;
|
||||||
@ -107,5 +113,9 @@ public class ServerMap {
|
|||||||
"Trying to remove server %s with differing information", serverInfo.getName());
|
"Trying to remove server %s with differing information", serverInfo.getName());
|
||||||
Preconditions.checkState(servers.remove(lowerName, rs),
|
Preconditions.checkState(servers.remove(lowerName, rs),
|
||||||
"Server with name %s replaced whilst unregistering", serverInfo.getName());
|
"Server with name %s replaced whilst unregistering", serverInfo.getName());
|
||||||
|
|
||||||
|
if (server != null) {
|
||||||
|
server.getEventManager().fireAndForget(new ServerUnregisteredEvent(rs));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren