public interface AudioNode
Upon creation, LavaClient attempts to open a new connection to the node.
Unlike the JDA Client, LavaClient will keep trying to reconnect to nodes unless the server closes the connection with close-code 1000, or until the client
manually closes the connection.
When trying to open a new WebSocket connection to the node, initially LavaClient won't throw exceptions (it'll just log),
however when trying to connect through openConnection()
, there's a chance exceptions can be thrown.
Modifier and Type | Method and Description |
---|---|
void |
closeConnection()
Attempts to close the current connection to the matching Lavalink Node.
|
void |
closeConnection(SocketConnectionHandler disconnectHandler)
Attempts to close the current connection, assigning a callback to be called upon the socket closing.
|
LoadBalancer |
getBalancer()
Fetches the not-null
LoadBalancer that is responsible for determining the penalty imposed on the node. |
long |
getBaseReconnectInterval()
Returns the "default" interval, which is used to set the actual interval before and after successful reconnects.
|
LavaClient |
getClient()
Returns the not-null
LavaClient associated with this node object. |
SocketConnectionHandler |
getConnectionCallback()
Returns a possibly-null
SocketConnectionHandler specified by the user after
a WebSocket Connection to this node successfully opens. |
SocketConnectionHandler |
getDisconnectionCallback()
Returns a possibly-null
SocketConnectionHandler specified by the user after
the WebSocket Connection to this node closes. |
AudioNodeEntry |
getEntry()
Returns the actual, not-null
entry used to create this node object. |
ReconnectIntervalFunction |
getIntervalExpander()
Returns a user-specified
ReconnectIntervalFunction or the default one if it wasn't manually
specified. |
java.util.concurrent.TimeUnit |
getIntervalTimeUnit()
Returns the time unit LavaClient will attempt to wait in before attempting to reconnect.
|
long |
getMaximumReconnectInterval()
Returns the maximum interval LavaClient will wait before attempting to reconnect.
|
int |
getReconnectAttempts()
Returns the current amount of reconnects that have been attempted by LavaClient, set to zero if either none
have been attempted or right after a reconnect succeeds.
|
long |
getReconnectInterval()
Returns the interval last used to try to reconnect to this node, set to the base reconnect interval if a reconnect hasn't
been attempted, or just after a reconnect has succeeded.
|
com.neovisionaries.ws.client.WebSocket |
getSocket()
Returns the raw, possibly-null, third-party WebSocket connection to the node.
|
Statistics |
getStatistics()
Fetches the possibly-null
Statistics data sent from this specific node, updated every minute. |
com.neovisionaries.ws.client.WebSocketFactory |
getWebSocketFactory()
Returns a user-specified WebSocketFactory or the default LavaClient-provided one used to create WebSocket instances.
|
boolean |
isAvailable()
Returns whether or not the WebSocket connection is open (available).
|
boolean |
isUsingLavalinkVersionThree()
Returns whether or not this node is running Lavalink v3 based on response headers from the initial connection.
|
void |
openConnection()
Attempts to open a connection to the matching Lavalink Node.
|
void |
openConnection(SocketConnectionHandler connectHandler)
Attempts to open a connection to this node, assigning a callback to be called upon the socket actually opening.
|
@Nonnull LavaClient getClient()
LavaClient
associated with this node object.LavaClient
.@Nullable com.neovisionaries.ws.client.WebSocket getSocket()
It's advised that you seriously don't mess with this unless you know exactly what you are doing!
Note: As of v2.5.0, this object can be null
if LavaClient fails to connect to the node.
@Nonnull LoadBalancer getBalancer()
LoadBalancer
that is responsible for determining the penalty imposed on the node.LoadBalancer
.@Nullable Statistics getStatistics()
Statistics
data sent from this specific node, updated every minute.
When initially connecting and for a short time afterwards this object may be null
.
Statistics
data updated every minute.@Nonnull AudioNodeEntry getEntry()
entry
used to create this node object.entry
data used to create the node.boolean isAvailable()
boolean isUsingLavalinkVersionThree()
@Nonnegative long getReconnectInterval()
@Nonnegative int getReconnectAttempts()
@Nonnegative long getBaseReconnectInterval()
@Nonnegative long getMaximumReconnectInterval()
If the value returned by getReconnectInterval()
is smaller, that will be used, otherwise this will.
@Nonnull java.util.concurrent.TimeUnit getIntervalTimeUnit()
@Nonnull ReconnectIntervalFunction getIntervalExpander()
ReconnectIntervalFunction
or the default one if it wasn't manually
specified.
This function is used to get the next interval for the next reconnect attempt.
ReconnectIntervalFunction
used by this node for reconnecting purposes.@Nonnull com.neovisionaries.ws.client.WebSocketFactory getWebSocketFactory()
Note: This configuration approach can be combined with SocketInitializers
in order
to configure everything that can be configured socket-wise.
@Nullable SocketConnectionHandler getConnectionCallback()
SocketConnectionHandler
specified by the user after
a WebSocket Connection to this node successfully opens.
This callback is set via the openConnection(SocketConnectionHandler)
method, which opens a connection
AND sets the callback.
LavaClient automatically sets the provided callback to null
either after 2 seconds due to a timeout
or right after connecting, mainly so that old callbacks aren't re-called.
SocketConnectionHandler
@Nullable SocketConnectionHandler getDisconnectionCallback()
SocketConnectionHandler
specified by the user after
the WebSocket Connection to this node closes.
This callback is set via the closeConnection(SocketConnectionHandler)
method, which closes the connection
AND sets the callback.
LavaClient automatically sets the provided callback to null
either after 2 seconds due to a timeout
or right after disconnecting, mainly so that old callbacks aren't re-called.
SocketConnectionHandler
void openConnection()
This can be used to reconnect (open a new WebSocket connection), usually in the case of disconnection or if LavaClient failed to connect normally.
java.lang.IllegalStateException
- If a connection to the node is already open and available to use.SocketConnectionException
- If LavaClient failed to open a connection to this node.openConnection(SocketConnectionHandler)
void openConnection(@Nullable SocketConnectionHandler connectHandler)
The provided callback can be null
, in which case no callback will be executed.
To make it a little bit easier, you can avoid manually specifying null by using the openConnection()
} method.
connectHandler
- The possibly-null SocketConnectionHandler
callback.java.lang.IllegalStateException
- If the connection to the node is already open and available to use.SocketConnectionException
- If LavaClient failed to open a connection to this node.void closeConnection()
This can be used to completely disconnect LavaClient from a node (and by extension, all LavaPlayers
).
java.lang.IllegalStateException
- If the connection to the node is null
or already closed/unavailable.closeConnection(SocketConnectionHandler)
void closeConnection(@Nullable SocketConnectionHandler disconnectHandler)
The provided callback can be null
, in which case no callback will be executed.
To make it a little bit easier, you can avoid manually specifying null by using the closeConnection()
} method.
disconnectHandler
- The possibly-null SocketConnectionHandler
callback.java.lang.IllegalStateException
- If the connection to the node is null
or already closed/unavailable.