@@ -24,6 +24,7 @@ package lavalink.server.io
2424
2525import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager
2626import dev.arbjerg.lavalink.api.AudioPluginInfoModifier
27+ import dev.arbjerg.lavalink.api.ISocketServer
2728import dev.arbjerg.lavalink.api.PluginEventHandler
2829import dev.arbjerg.lavalink.protocol.v4.Message
2930import dev.arbjerg.lavalink.protocol.v4.PlayerState
@@ -46,11 +47,11 @@ final class SocketServer(
4647 koeOptions : KoeOptions ,
4748 private val eventHandlers : List <PluginEventHandler >,
4849 private val pluginInfoModifiers : List <AudioPluginInfoModifier >
49- ) : TextWebSocketHandler() {
50+ ) : TextWebSocketHandler(), ISocketServer {
5051
5152 // sessionID <-> Session
52- val contextMap = ConcurrentHashMap <String , SocketContext >()
53- private val resumableSessions = mutableMapOf<String , SocketContext >()
53+ override val sessions = ConcurrentHashMap <String , SocketContext >()
54+ override val resumableSessions = mutableMapOf<String , SocketContext >()
5455 private val koe = Koe .koe(koeOptions)
5556 private val statsCollector = StatsCollector (this )
5657 private val charPool = (' a' .. ' z' ) + (' 0' .. ' 9' )
@@ -81,12 +82,12 @@ final class SocketServer(
8182 var sessionId: String
8283 do {
8384 sessionId = List (16 ) { charPool.random() }.joinToString(" " )
84- } while (contextMap [sessionId] != null )
85+ } while (sessions [sessionId] != null )
8586 return sessionId
8687 }
8788
8889 val contexts: Collection <SocketContext >
89- get() = contextMap .values
90+ get() = sessions .values
9091
9192 @Suppress(" UastIncorrectHttpHeaderInspection" )
9293 override fun afterConnectionEstablished (session : WebSocketSession ) {
@@ -100,7 +101,7 @@ final class SocketServer(
100101
101102 if (resumable != null ) {
102103 session.attributes[" sessionId" ] = resumable.sessionId
103- contextMap [resumable.sessionId] = resumable
104+ sessions [resumable.sessionId] = resumable
104105 resumable.resume(session)
105106 log.info(" Resumed session with id $sessionId " )
106107 resumable.eventEmitter.onWebSocketOpen(true )
@@ -123,7 +124,7 @@ final class SocketServer(
123124 eventHandlers,
124125 pluginInfoModifiers
125126 )
126- contextMap [sessionId] = socketContext
127+ sessions [sessionId] = socketContext
127128 socketContext.sendMessage(Message .Serializer , Message .ReadyEvent (false , sessionId))
128129 socketContext.eventEmitter.onWebSocketOpen(false )
129130 if (clientName != null ) {
@@ -140,7 +141,7 @@ final class SocketServer(
140141 }
141142
142143 override fun afterConnectionClosed (session : WebSocketSession , status : CloseStatus ) {
143- val context = contextMap .remove(session.attributes[" sessionId" ]) ? : return
144+ val context = sessions .remove(session.attributes[" sessionId" ]) ? : return
144145 if (context.resumable) {
145146 resumableSessions.remove(context.sessionId)?.let { removed ->
146147 log.warn(
0 commit comments