Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix tiny memory leak
  • Loading branch information
jaredlll08 committed Feb 14, 2021
1 parent e11d528 commit 353e62e
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/main/java/com/blamejared/crafttweaker/CraftTweaker.java
Expand Up @@ -182,7 +182,12 @@ public void playerLogin(PlayerEvent.PlayerLoggedInEvent event) {
Called on multiplayer login on the server
*/

((GroupLogger) CraftTweakerAPI.logger).addLogger(new PlayerLogger(event.getPlayer()));
((GroupLogger) CraftTweakerAPI.logger).addPlayerLogger(event.getPlayer());
}

@SubscribeEvent
public void playerLogout(PlayerEvent.PlayerLoggedOutEvent event){
((GroupLogger) CraftTweakerAPI.logger).removePlayerLogger(event.getPlayer());
}

@SubscribeEvent
Expand Down
@@ -1,42 +1,71 @@
package com.blamejared.crafttweaker.impl.logger;

import com.blamejared.crafttweaker.api.logger.*;
import net.minecraft.entity.player.PlayerEntity;

import java.util.*;

public class GroupLogger implements ILogger {

private final Map<PlayerEntity, PlayerLogger> playerLogs = new HashMap<>();
private final List<ILogger> subLoggers = new ArrayList<>();
//TODO keep a list of all messages that are logged, when a new logger is added, log those messages to that logger, for players logging in etc?
private final List<LogMessage> previousMessages = new ArrayList<>();


public void addPlayerLogger(PlayerEntity player) {

PlayerLogger logger = playerLogs.compute(player, (playerEntity, playerLogger) -> new PlayerLogger(playerEntity));
addLogger(logger);
}

public void removePlayerLogger(PlayerEntity player) {

PlayerLogger remove = playerLogs.remove(player);
if(remove != null) {
removeLogger(remove);
}
}


public void addLogger(ILogger logger) {

this.subLoggers.add(logger);
previousMessages.forEach(logMessage -> logger.log(logMessage.level, logMessage.message, logMessage.prefix));
}

public void removeLogger(ILogger logger) {

this.subLoggers.remove(logger);
}

public List<LogMessage> getPreviousMessages() {

return previousMessages;
}

public List<ILogger> getSubLoggers() {

return subLoggers;
}

@Override
public void setLogLevel(LogLevel logLevel) {

for(ILogger subLogger : subLoggers) {
subLogger.setLogLevel(logLevel);
}
}

@Override
public LogLevel getLogLevel() {

return subLoggers.stream().map(ILogger::getLogLevel).min(LogLevel::compareTo).orElse(LogLevel.DEBUG);
}

@Override
public void log(LogLevel level, String message, boolean prefix) {

for(ILogger logger : getSubLoggers()) {
logger.log(level, message, prefix);
}
Expand All @@ -45,6 +74,7 @@ public void log(LogLevel level, String message, boolean prefix) {

@Override
public void log(LogLevel level, String message) {

for(ILogger logger : getSubLoggers()) {
logger.log(level, message);
}
Expand All @@ -53,6 +83,7 @@ public void log(LogLevel level, String message) {

@Override
public void info(String message) {

for(ILogger logger : getSubLoggers()) {
logger.info(message);
}
Expand All @@ -61,6 +92,7 @@ public void info(String message) {

@Override
public void debug(String message) {

for(ILogger logger : getSubLoggers()) {
logger.debug(message);
}
Expand All @@ -69,6 +101,7 @@ public void debug(String message) {

@Override
public void warning(String message) {

for(ILogger logger : getSubLoggers()) {
logger.warning(message);
}
Expand All @@ -77,6 +110,7 @@ public void warning(String message) {

@Override
public void error(String message) {

for(ILogger logger : getSubLoggers()) {
logger.error(message);
}
Expand All @@ -85,6 +119,7 @@ public void error(String message) {

@Override
public void throwingWarn(String message, Throwable throwable) {

for(ILogger logger : getSubLoggers()) {
logger.throwingWarn(message, throwable);
}
Expand All @@ -93,6 +128,7 @@ public void throwingWarn(String message, Throwable throwable) {

@Override
public void throwingErr(String message, Throwable throwable) {

for(ILogger logger : getSubLoggers()) {
logger.throwingErr(message, throwable);
}
Expand All @@ -107,21 +143,27 @@ private class LogMessage {
private final boolean prefix;

public LogMessage(LogLevel level, String message, boolean prefix) {

this.level = level;
this.message = message;
this.prefix = prefix;
}

public String getMessage() {

return message;
}

public LogLevel getLevel() {

return level;
}

public boolean isPrefix() {

return prefix;
}

}

}

0 comments on commit 353e62e

Please sign in to comment.