Skip to content

Commit 63aa962

Browse files
committed
Add ability to remove nodes
1 parent 6e5ee7e commit 63aa962

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

src/main/kotlin/dev/arbjerg/lavalink/client/LavalinkClient.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ class LavalinkClient(val userId: Long) : Closeable, Disposable {
2323
private var clientOpen = true
2424

2525
// Immutable public list
26-
val nodes: List<LavalinkNode> = internalNodes
26+
val nodes: List<LavalinkNode>
27+
get() = internalNodes.toList()
2728

2829
// Events forwarded from all nodes.
2930
private val sink: Sinks.Many<ClientEvent<*>> = Sinks.many().multicast().onBackpressureBuffer()
@@ -69,6 +70,28 @@ class LavalinkClient(val userId: Long) : Closeable, Disposable {
6970
return node
7071
}
7172

73+
fun removeNode(name: String): Boolean {
74+
val node = nodes.firstOrNull { it.name == name }
75+
76+
if (node == null) {
77+
throw IllegalStateException("Node with name '$name' does not exist")
78+
}
79+
80+
return removeNode(node)
81+
}
82+
83+
fun removeNode(node: LavalinkNode): Boolean {
84+
if (node !in internalNodes) {
85+
return false
86+
}
87+
88+
node.close()
89+
90+
internalNodes.remove(node)
91+
92+
return true
93+
}
94+
7295
/**
7396
* Get or crate a link between a guild and a node.
7497
*

0 commit comments

Comments
 (0)