Minecraft-SSHD/Minecraft-SSHD-Bukkit/src/main/java/com/ryanmichela/sshd/FlushyStreamHandler.java

62 lines
1.4 KiB
Java
Raw Normal View History

2013-11-14 07:17:51 +00:00
package com.ryanmichela.sshd;
import jline.console.ConsoleReader;
2018-05-06 16:42:57 +00:00
import org.apache.sshd.common.SshException;
2017-11-13 14:32:30 +00:00
2013-11-14 07:17:51 +00:00
import java.io.IOException;
import java.io.OutputStream;
import java.util.logging.*;
/**
* Copyright 2013 Ryan Michela
*/
2019-11-24 05:53:58 +00:00
public class FlushyStreamHandler extends StreamHandler
{
2013-11-14 07:17:51 +00:00
private ConsoleReader reader;
2019-11-24 05:53:58 +00:00
public FlushyStreamHandler(OutputStream out, Formatter formatter, ConsoleReader reader)
{
2013-11-14 07:17:51 +00:00
super(out, formatter);
this.reader = reader;
setLevel(Level.INFO);
}
@Override
2019-11-24 05:53:58 +00:00
public synchronized void publish(LogRecord record)
{
2013-11-14 07:17:51 +00:00
record.setMessage(record.getMessage().replace("\n", "\n\r"));
super.publish(record);
flush();
}
@Override
2019-11-24 05:53:58 +00:00
public synchronized void flush()
{
try
{
2013-11-14 07:17:51 +00:00
reader.print(ConsoleReader.RESET_LINE + "");
reader.flush();
super.flush();
2019-11-24 05:53:58 +00:00
try
{
2013-11-14 07:17:51 +00:00
reader.drawLine();
2019-11-24 05:53:58 +00:00
}
catch (Throwable ex)
{
2013-11-14 07:17:51 +00:00
reader.getCursorBuffer().clear();
}
2019-11-24 05:53:58 +00:00
2013-11-14 07:17:51 +00:00
reader.flush();
super.flush();
2019-11-24 05:53:58 +00:00
}
catch (SshException ex)
{
2013-11-14 07:17:51 +00:00
// do nothing
2019-11-24 05:53:58 +00:00
}
catch (IOException ex)
{
2013-11-14 07:17:51 +00:00
Logger.getLogger(FlushyStreamHandler.class.getName()).log(Level.SEVERE, null, ex);
}
}
}