#2447: Add API for fluent server connect requests
API allows for more control over callback to see why the callback was performed whilst maintaining backwards compatibility
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
package net.md_5.bungee.api;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.event.ServerConnectEvent;
|
||||
|
||||
/**
|
||||
* A request to connect a server.
|
||||
*/
|
||||
@Getter
|
||||
@Builder(builderClassName = "Builder")
|
||||
public class ServerConnectRequest
|
||||
{
|
||||
|
||||
/**
|
||||
* The result from this callback after request has been executed by proxy.
|
||||
*/
|
||||
public enum Result
|
||||
{
|
||||
|
||||
/**
|
||||
* ServerConnectEvent to the new server was canceled.
|
||||
*/
|
||||
EVENT_CANCEL,
|
||||
/**
|
||||
* Already connected to target server.
|
||||
*/
|
||||
ALREADY_CONNECTED,
|
||||
/**
|
||||
* Already connecting to target server.
|
||||
*/
|
||||
ALREADY_CONNECTING,
|
||||
/**
|
||||
* Successfully connected to server.
|
||||
*/
|
||||
SUCCESS,
|
||||
/**
|
||||
* Connection failed, error can be accessed from callback method handle.
|
||||
*/
|
||||
FAIL
|
||||
}
|
||||
|
||||
/**
|
||||
* Target server to connect to.
|
||||
*/
|
||||
@NonNull
|
||||
private final ServerInfo target;
|
||||
/**
|
||||
* Reason for connecting to server.
|
||||
*/
|
||||
@NonNull
|
||||
private final ServerConnectEvent.Reason reason;
|
||||
/**
|
||||
* Callback to execute post request.
|
||||
*/
|
||||
private final Callback<Result> callback;
|
||||
/**
|
||||
* Timeout in milliseconds for request.
|
||||
*/
|
||||
private final int connectTimeout;
|
||||
/**
|
||||
* Should the player be attempted to connect to the next server in their
|
||||
* queue if the initial request fails.
|
||||
*/
|
||||
private final boolean retry;
|
||||
|
||||
/**
|
||||
* Class that sets default properties/adds methods to the lombok builder
|
||||
* generated class.
|
||||
*/
|
||||
public static class ServerConnectRequestBuilder
|
||||
{
|
||||
|
||||
private int connectTimeout = 5000; // TODO: Configurable
|
||||
}
|
||||
}
|
@@ -6,6 +6,7 @@ import java.util.UUID;
|
||||
import net.md_5.bungee.api.Callback;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
import net.md_5.bungee.api.ServerConnectRequest;
|
||||
import net.md_5.bungee.api.SkinConfiguration;
|
||||
import net.md_5.bungee.api.Title;
|
||||
import net.md_5.bungee.api.chat.BaseComponent;
|
||||
@@ -123,6 +124,15 @@ public interface ProxiedPlayer extends Connection, CommandSender
|
||||
*/
|
||||
void connect(ServerInfo target, Callback<Boolean> callback, ServerConnectEvent.Reason reason);
|
||||
|
||||
/**
|
||||
* Connects / transfers this user to the specified connection, gracefully
|
||||
* closing the current one. Depending on the implementation, this method
|
||||
* might return before the user has been connected.
|
||||
*
|
||||
* @param request request to connect with
|
||||
*/
|
||||
void connect(ServerConnectRequest request);
|
||||
|
||||
/**
|
||||
* Gets the server this player is connected to.
|
||||
*
|
||||
|
Reference in New Issue
Block a user