Skip to content

Commit ddb96e4

Browse files
committed
Merge branch 'dev'
# Conflicts: # LavalinkServer/docker/Dockerfile
2 parents 3f1539c + cd34ee1 commit ddb96e4

File tree

10 files changed

+44
-21
lines changed

10 files changed

+44
-21
lines changed

IMPLEMENTATION.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,10 @@ Server emitted an event. See the client implementation below.
199199
/**
200200
* Implementation details:
201201
* The only events extending {@link lavalink.client.player.event.PlayerEvent} produced by the remote server are these:
202-
* 1. TrackEndEvent
203-
* 2. TrackExceptionEvent
204-
* 3. TrackStuckEvent
202+
* 1. TrackStartEvent
203+
* 2. TrackEndEvent
204+
* 3. TrackExceptionEvent
205+
* 4. TrackStuckEvent
205206
* <p>
206207
* The remaining lavaplayer events are caused by client actions, and are therefore not forwarded via WS.
207208
*/
@@ -210,6 +211,11 @@ private void handleEvent(JSONObject json) throws IOException {
210211
PlayerEvent event = null;
211212

212213
switch (json.getString("type")) {
214+
case "TrackStartEvent":
215+
event = new TrackStartEvent(player,
216+
LavalinkUtil.toAudioTrack(json.getString("track"))
217+
);
218+
break;
213219
case "TrackEndEvent":
214220
event = new TrackEndEvent(player,
215221
LavalinkUtil.toAudioTrack(json.getString("track")),

LavalinkServer/application.yml.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ lavalink:
2323
#excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink
2424
#strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch
2525
#searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing
26+
#retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | >0 = retry will happen this numbers times
2627

2728
metrics:
2829
prometheus:

LavalinkServer/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ bootRun {
3434
}
3535

3636
dependencies {
37-
compile group: 'space.npstr', name: 'Magma', version: magmaVersion
37+
compile group: 'space.npstr.Magma', name: 'magma', version: magmaVersion
3838
compile group: 'com.sedmelluq', name: 'lavaplayer', version: lavaplayerVersion
3939
compile group: 'com.sedmelluq', name: 'lavaplayer-ext-youtube-rotator', version: lavaplayerIpRotatorVersion
4040
compile group: 'com.sedmelluq', name: 'jda-nas', version: jdaNasVersion

LavalinkServer/docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM openjdk:13-jre-slim
1+
FROM azul/zulu-openjdk:13
22

33
# Run as non-root user
44
RUN groupadd -g 322 lavalink && \

LavalinkServer/src/main/java/lavalink/server/config/AudioPlayerConfiguration.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class AudioPlayerConfiguration {
3838
private val log = LoggerFactory.getLogger(AudioPlayerConfiguration::class.java)
3939

4040
@Bean
41-
fun audioPlayerManagerSupplier(sources: AudioSourcesConfig, serverConfig: ServerConfig, routePlanner: AbstractRoutePlanner?) = Supplier<AudioPlayerManager> {
41+
fun audioPlayerManagerSupplier(sources: AudioSourcesConfig, serverConfig: ServerConfig, routePlanner: AbstractRoutePlanner?): AudioPlayerManager {
4242
val audioPlayerManager = DefaultAudioPlayerManager()
4343

4444
if (serverConfig.isGcWarnings) {
@@ -48,7 +48,13 @@ class AudioPlayerConfiguration {
4848
if (sources.isYoutube) {
4949
val youtube = YoutubeAudioSourceManager(serverConfig.isYoutubeSearchEnabled)
5050
if (routePlanner != null) {
51-
YoutubeIpRotator.setup(youtube, routePlanner)
51+
val retryLimit = serverConfig.ratelimit?.retryLimit ?: -1
52+
when {
53+
retryLimit < 0 -> YoutubeIpRotator.setup(youtube, routePlanner)
54+
retryLimit == 0 -> YoutubeIpRotator.setup(youtube, routePlanner, Int.MAX_VALUE)
55+
else -> YoutubeIpRotator.setup(youtube, routePlanner, retryLimit)
56+
57+
}
5258
}
5359
val playlistLoadLimit = serverConfig.youtubePlaylistLoadLimit
5460
if (playlistLoadLimit != null) youtube.setPlaylistPageCount(playlistLoadLimit)
@@ -76,12 +82,7 @@ class AudioPlayerConfiguration {
7682

7783
audioPlayerManager.configuration.isFilterHotSwapEnabled = true
7884

79-
audioPlayerManager
80-
}
81-
82-
@Bean
83-
fun restAudioPlayerManager(supplier: Supplier<AudioPlayerManager>): AudioPlayerManager {
84-
return supplier.get()
85+
return audioPlayerManager
8586
}
8687

8788
@Bean

LavalinkServer/src/main/java/lavalink/server/config/RateLimitConfig.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ data class RateLimitConfig(
44
var ipBlocks: List<String> = emptyList(),
55
var excludedIps: List<String> = emptyList(),
66
var strategy: String = "RotateOnBan",
7+
var retryLimit: Int = -1,
78
var searchTriggersFail: Boolean = true
89
)

LavalinkServer/src/main/java/lavalink/server/io/SocketContext.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import java.util.concurrent.TimeUnit
4646
import java.util.function.Supplier
4747

4848
class SocketContext internal constructor(
49-
audioPlayerManagerSupplier: Supplier<AudioPlayerManager>,
49+
val audioPlayerManager: AudioPlayerManager,
5050
var session: WebSocketSession,
5151
private val socketServer: SocketServer,
5252
val userId: String
@@ -56,7 +56,6 @@ class SocketContext internal constructor(
5656
private val log = LoggerFactory.getLogger(SocketContext::class.java)
5757
}
5858

59-
val audioPlayerManager: AudioPlayerManager = audioPlayerManagerSupplier.get()
6059
internal val magma: MagmaApi = MagmaFactory.of { socketServer.getAudioSendFactory(it) }
6160
//guildId <-> Player
6261
val players = ConcurrentHashMap<String, Player>()
@@ -169,7 +168,6 @@ class SocketContext internal constructor(
169168
internal fun shutdown() {
170169
log.info("Shutting down " + playingPlayers.size + " playing players.")
171170
executor.shutdown()
172-
audioPlayerManager.shutdown()
173171
playerUpdateService.shutdown()
174172
players.keys.forEach { guildId ->
175173
val member = MagmaMember.builder()

LavalinkServer/src/main/java/lavalink/server/io/SocketServer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import java.util.function.Supplier
4545
@Service
4646
class SocketServer(
4747
private val serverConfig: ServerConfig,
48-
private val audioPlayerManagerSupplier: Supplier<AudioPlayerManager>,
48+
private val audioPlayerManager: AudioPlayerManager,
4949
private val audioSendFactoryConfiguration: AudioSendFactoryConfiguration
5050
) : TextWebSocketHandler() {
5151

@@ -92,7 +92,7 @@ class SocketServer(
9292

9393
shardCounts[userId] = shardCount
9494

95-
contextMap[session.id] = SocketContext(audioPlayerManagerSupplier, session, this, userId)
95+
contextMap[session.id] = SocketContext(audioPlayerManager, session, this, userId)
9696
log.info("Connection successfully established from " + session.remoteAddress!!)
9797
}
9898

LavalinkServer/src/main/java/lavalink/server/player/EventEmitter.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,22 @@ public class EventEmitter extends AudioEventAdapter {
4747
this.linkPlayer = linkPlayer;
4848
}
4949

50+
@Override
51+
public void onTrackStart(AudioPlayer player, AudioTrack track) {
52+
JSONObject out = new JSONObject();
53+
out.put("op", "event");
54+
out.put("type", "TrackStartEvent");
55+
out.put("guildId", linkPlayer.getGuildId());
56+
57+
try {
58+
out.put("track", Util.toMessage(audioPlayerManager, track));
59+
} catch (IOException e) {
60+
out.put("track", JSONObject.NULL);
61+
}
62+
63+
linkPlayer.getSocket().send(out);
64+
}
65+
5066
@Override
5167
public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
5268
JSONObject out = new JSONObject();

build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ buildscript {
33
springBootVersion = '2.1.8.RELEASE'
44
gradleGitVersion = '1.5.2'
55
sonarqubeVersion = '2.6.2'
6-
kotlinVersion = '1.3.41'
6+
kotlinVersion = '1.3.61'
77
testLoggerVersion = '1.6.0'
88
}
99
repositories {
@@ -52,9 +52,9 @@ subprojects {
5252

5353
ext {
5454
//@formatter:off
55-
lavaplayerVersion = '1.3.32'
55+
lavaplayerVersion = '1.3.38'
5656
lavaplayerIpRotatorVersion = '0.1.7'
57-
magmaVersion = '0.12.3'
57+
magmaVersion = '0.12.5'
5858
jdaNasVersion = '1.1.0'
5959
jappVersion = '1.3.2-MINN'
6060

0 commit comments

Comments
 (0)