public abstract class LavaClient
extends java.lang.Object
LavaClientBuilder
.Modifier and Type | Field and Description |
---|---|
static long |
DEFAULT_BASE_INTERVAL
The default reconnect "base" interval to use.
|
static long |
DEFAULT_CACHE_EXPIRE_ACCESS
The default cache expire-after-access time, in milliseconds.
|
static long |
DEFAULT_CACHE_EXPIRE_WRITE
The default cache expire-after-write time, in milliseconds.
|
static ReconnectIntervalFunction |
DEFAULT_INTERVAL_EXPANDER
The default interval expander, equivalent to raising 2 to the amount of reconnect attempts.
|
static java.util.concurrent.TimeUnit |
DEFAULT_INTERVAL_UNIT
The default TimeUnit to wait for the provided interval in.
|
static long |
DEFAULT_MAX_INTERVAL
The value the reconnect interval is capped to.
|
static java.lang.String |
DEFAULT_PASSWORD
The default password to use for the Lavalink-Server.
|
static int |
DEFAULT_REST_PORT
The default port to use for the Lavalink-Server REST API.
|
static int |
DEFAULT_WS_PORT
The default port to use for the Lavalink-Server WebSocket.
|
Modifier and Type | Method and Description |
---|---|
abstract void |
addEntry(AudioNodeEntry entry)
Adds a not-null
AudioNode and opens a connection to it based on the information provided by the AudioNodeEntry . |
abstract void |
addNode(AudioNode node)
Adds a not-null
AudioNode and opens a connection to it (if it isn't already open). |
abstract java.util.List<AudioNode> |
getAudioNodes()
Used to fetch an unmodifiable list of all the
AudioNodes this client can connect to. |
abstract AudioNode |
getBestNode()
Fetches the
AudioNode with the least amount of load on it, used to balance the load of LavaPlayers on different nodes. |
abstract long |
getCacheExpireAfterAccessMs()
Fetches the amount of time from which track data will removed from the cache after being accessed (after being written).
|
abstract long |
getCacheExpireAfterWriteMs()
Fetches the amount of time from which track data will be removed from the cache after being written without being accessed.
|
abstract long |
getGlobalBaseReconnectInterval()
Fetches the default "base" interval for reconnecting purposes, used for default values and "expansion".
|
abstract ReconnectIntervalFunction |
getGlobalIntervalExpander()
Fetches the default interval "expander", used to change the reconnect interval for the next reconnect attempt.
|
abstract java.util.concurrent.TimeUnit |
getGlobalIntervalTimeUnit()
Fetches the default TimeUnit which is used to actually wait for the intervals in a good unit, such as MILLISECONDS, HOURS, etc.
|
abstract long |
getGlobalMaximumReconnectInterval()
Fetches the default maximum interval for reconnecting purposes, used to cap the provided reconnect interval
so that it never gets too high.
|
abstract int |
getGlobalRestPort()
Fetches the default REST API port for all
AudioNodes the client has access to. |
abstract java.lang.String |
getGlobalServerPassword()
Fetches the default password for all
AudioNodes the client has access to. |
abstract int |
getGlobalWebSocketPort()
Fetches the default WebSocket port for all
AudioNodes the client has access to. |
abstract LavaHttpManager |
getHttpManager()
Used to fetch the
LavaHttpManager associated with this client, which is used to get track data from an identifier. |
abstract com.github.benmanes.caffeine.cache.Cache<java.lang.String,TrackDataPair> |
getIdentifierCache()
Fetches the internal identifier cache used by LavaClient to cut down the impact of loading the same sources in quick succession.
|
abstract AudioNode |
getNodeByIdentifier(java.lang.String address,
int websocketPort)
Fetches an
AudioNode by address and port. |
abstract LavaPlayer |
getPlayerByGuildId(long guild_id)
Fetches a
LavaPlayer instance by Guild ID. |
abstract it.unimi.dsi.fastutil.longs.Long2ObjectMap<LavaPlayer> |
getPlayerMap()
Fetches an unmodifiable view of the internal player map.
|
abstract java.util.List<LavaPlayer> |
getPlayers()
Used to fetch an unmodifiable list of all the
LavaPlayers associated with this client. |
abstract int |
getShardCount()
Fetches the amount of shards specified during the construction of the LavaClient instance.
|
abstract long |
getUserId()
Fetches the User ID of the Bot User specified during the construction of the LavaClient instance.
|
abstract LavaPlayer |
newPlayer(AudioNode node,
long guild_id)
Fetches a not-null
LavaPlayer instance associated with a positive Guild ID. |
abstract LavaPlayer |
newPlayer(long guild_id)
Fetches a not-null
LavaPlayer instance associated with a positive Guild ID. |
abstract void |
removeEntry(AudioNodeEntry entry)
Attempts to remove the
AudioNode associated with the provided, not-null AudioNodeEntry . |
abstract void |
removeEntry(java.lang.String serverAddress,
int websocketPort)
Attempts to remove the
AudioNode associated with a provided server address and port. |
abstract void |
removeNode(AudioNode node)
Attempts to remove a not-null
AudioNode . |
abstract LavaPlayer |
removePlayer(long guild_id)
Attempts to remove a
LavaPlayer instance associated with a positive Guild ID. |
abstract LavaPlayer |
removePlayer(long guild_id,
boolean shouldDestroy)
Attempts to remove a
LavaPlayer instance associated with a positive Guild ID. |
abstract void |
shutdown()
Shuts down LavaClient (also resetting the state).
|
public static final int DEFAULT_REST_PORT
public static final int DEFAULT_WS_PORT
public static final java.lang.String DEFAULT_PASSWORD
public static final long DEFAULT_CACHE_EXPIRE_WRITE
public static final long DEFAULT_CACHE_EXPIRE_ACCESS
public static final long DEFAULT_BASE_INTERVAL
public static final long DEFAULT_MAX_INTERVAL
public static final java.util.concurrent.TimeUnit DEFAULT_INTERVAL_UNIT
public static final ReconnectIntervalFunction DEFAULT_INTERVAL_EXPANDER
@Nonnull public abstract java.util.List<LavaPlayer> getPlayers()
LavaPlayers
associated with this client.LavaPlayers
this client contains.@Nonnull public abstract java.util.List<AudioNode> getAudioNodes()
AudioNodes
this client can connect to.AudioNodes
this client can connect to.@Nonnull public abstract LavaHttpManager getHttpManager()
LavaHttpManager
associated with this client, which is used to get track data from an identifier.LavaHttpManager
used to grab track data from an identifier.@Nullable public abstract AudioNode getNodeByIdentifier(@Nonnull java.lang.String address, @Nonnegative int websocketPort)
AudioNode
by address and port. This operation is extremely fast as it only looks up the entry in a HashMap.address
- The not-null server address specified in the node's AudioNodeEntry
.websocketPort
- The positive server WebSocket port specified in the node's AudioNodeEntry
.AudioNode
associated with the provided server address and WebSocket port.java.lang.NullPointerException
- If the provided address was null
.java.lang.IllegalArgumentException
- If the provided WebSocket Port was negative.@Nullable public abstract LavaPlayer getPlayerByGuildId(@Nonnegative long guild_id)
LavaPlayer
instance by Guild ID.
This method will return null
if a player for the provided Guild ID doesn't exist, unlike previous versions of LavaClient.
guild_id
- The positive ID of the Guild.LavaPlayer
instance associated with the Guild ID.@Nonnull public abstract java.lang.String getGlobalServerPassword()
AudioNodes
the client has access to.
This value equates to "youshallnotpass" if it's not specified during the construction of the LavaClient instance.
@Nonnegative public abstract long getCacheExpireAfterWriteMs()
When a song loads, LavaClient caches the initial loading data temporarily so that the server nor the client have to re-load it for a certain period of time.
This value tells LavaClient how long to wait after data is written before it is removed, ignoring the access of the data.
If the data is not removed, memory usage will keep on going up which is bad for big bots or small bots on limited hardware.
This value equates to 1200000L milliseconds if it isn't manually specified during construction of the client.
getCacheExpireAfterAccessMs()
@Nonnegative public abstract long getCacheExpireAfterAccessMs()
When a song loads, LavaClient caches the initial loading data temporarily so that the server nor the client have to re-load it for a certain period of time.
This value tells LavaClient how long to wait after data is accessed before it is removed, ignoring the writing of the data.
If the data is not removed, memory usage will slowly creep up which is bad for big bots or small bots on limited hardware.
This value equates to 900000L milliseconds if it isn't manually specified during construction of the client.
getCacheExpireAfterWriteMs()
@Nonnegative public abstract int getGlobalWebSocketPort()
AudioNodes
the client has access to.
This value equates to 80 if it's not specified during the construction of the LavaClient instance.
public abstract long getGlobalBaseReconnectInterval()
As with almost all default values, this value can be overridden on a per-node basis. This value equates to 0L if it's not specified during construction of this client.
@Nonnegative public abstract long getGlobalMaximumReconnectInterval()
As with almost all default values, this value can be overridden on a per-node basis. This value equates to 15L if it's not specified during construction of this client.
@Nonnull public abstract ReconnectIntervalFunction getGlobalIntervalExpander()
As of v3.0.0, this expander returns 2 raised to the number of reconnect attempts. As with almost all default values, this value can be overridden on a per-node basis.
ReconnectIntervalFunction
used to change intervals.@Nonnull public abstract java.util.concurrent.TimeUnit getGlobalIntervalTimeUnit()
As of v3.0.0, the returned unit is TimeUnit#SECONDS, however as with almost all default values, this value can be overridden on a per-node basis.
@Nonnegative public abstract int getGlobalRestPort()
AudioNodes
the client has access to.
This value equates to 2333 if it's not specified during the construction of the LavaClient instance.
@Nonnegative public abstract int getShardCount()
AudioNodes
when connecting.@Nonnegative public abstract long getUserId()
AudioNodes
when connecting.public abstract void addNode(@Nonnull AudioNode node)
AudioNode
and opens a connection to it (if it isn't already open).
Note: This will overwrite and disconnect the client from the node if it pre-exists with the same information.
public abstract void removeNode(@Nonnull AudioNode node)
AudioNode
.
If no node was found with the attached information, no action will be performed. Additionally, if one was found the client will disconnect from it and then remove it from the global map.
public abstract void addEntry(@Nonnull AudioNodeEntry entry)
AudioNode
and opens a connection to it based on the information provided by the AudioNodeEntry
.entry
- The AudioNodeEntry
containing the address, the port, etc. of the AudioNode
.java.lang.NullPointerException
- If the provided entry
was null
.public abstract void removeEntry(@Nonnull AudioNodeEntry entry)
AudioNode
associated with the provided, not-null AudioNodeEntry
.
This will do nothing if no node was found, and it'll disconnect the client from the node and remove it if it was found.
entry
- The not-null AudioNodeEntry
used to identify and remove the associated AudioNode
.java.lang.NullPointerException
- If the provided AudioNodeEntry
was null
.public abstract void removeEntry(@Nonnull java.lang.String serverAddress, @Nonnegative int websocketPort)
AudioNode
associated with a provided server address and port.
This will do nothing if no node was found, and it'll disconnect the client from the node and remove it if it was found.
serverAddress
- The not-null raw address of the server without any scheme behind it.websocketPort
- The not-negative WebSocket port of the Lavalink Server.java.lang.NullPointerException
- If the provided server address was null
.java.lang.IllegalArgumentException
- If the provided WebSocket port was negative.@Nonnull public abstract com.github.benmanes.caffeine.cache.Cache<java.lang.String,TrackDataPair> getIdentifierCache()
Note: Editing this cache might cause some delay and bugs. Modifying it is your choice.
@Nonnull public abstract it.unimi.dsi.fastutil.longs.Long2ObjectMap<LavaPlayer> getPlayerMap()
Note: This returns an unmodifiable map, meaning any attempts to modify it will throw exceptions.
@Nonnull public abstract LavaPlayer newPlayer(@Nullable AudioNode node, @Nonnegative long guild_id)
LavaPlayer
instance associated with a positive Guild ID.
If a player is already found, it'll simply be returned. If one doesn't exist, it'll be created but NOT connected.
In this sense, a new player doesn't submit a Voice Update to an AudioNode
manually. Use an EventWaiter
wherever you can instead of manually creating new players.
node
- The possibly-null AudioNode
to set. Replaced with the best available node if this is null
.guild_id
- The positive ID of the Guild to connect to.LavaPlayer
instance.@Nonnull public abstract LavaPlayer newPlayer(@Nonnegative long guild_id)
LavaPlayer
instance associated with a positive Guild ID.
If a player is already found, it'll simply be returned. If one doesn't exist, it'll be created but NOT connected.
In this sense, a new player doesn't submit a Voice Update to an AudioNode
manually. Use an EventWaiter
wherever you can instead of manually creating new players.
guild_id
- The positive ID of the Guild to connect to.LavaPlayer
instance.@Nullable public abstract LavaPlayer removePlayer(@Nonnegative long guild_id, boolean shouldDestroy)
LavaPlayer
instance associated with a positive Guild ID.
If a player is found, it'll be destroyed only if it's connected and if shouldDestroy
is set to true.
If it isn't found, nothing will happen and null
will be returned.
guild_id
- The positive Guild ID associated with the LavaPlayer
instance.shouldDestroy
- If LavaClient should destroy the player before removing it.LavaPlayer
instance.java.lang.IllegalArgumentException
- If the provided Guild ID was negative.public abstract LavaPlayer removePlayer(@Nonnegative long guild_id)
LavaPlayer
instance associated with a positive Guild ID.
If a player is found, it'll simply be removed without anything else happening.
If it isn't found, nothing will happen and null
will be returned.
guild_id
- The positive Guild ID associated with the LavaPlayer
instance.LavaPlayer
instance.java.lang.IllegalArgumentException
- If the provided Guild ID was negative.public abstract void shutdown()
This method removes and disconnects from all AudioNodes
and LavaPlayers
and additionally shuts down the attached LavaHttpManager
.
java.lang.IllegalStateException
- If this client has already been shutdown.@Nullable public abstract AudioNode getBestNode()
AudioNode
with the least amount of load on it, used to balance the load of LavaPlayers
on different nodes.AudioNode
to connect to, returns null
if no node exists.