3
0
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:
Patryk Twardosz 2024-07-25 01:13:21 +02:00 committet von GitHub
Ursprung 44b1e0c6f9
Commit 09f687e5d5
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: B5690EEEBB952194
3 geänderte Dateien mit 72 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -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");
}
}

Datei anzeigen

@ -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");
}
}

Datei anzeigen

@ -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));
}
} }
} }