// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.logger.util;

import java.io.OutputStream;
import java.io.ByteArrayOutputStream;
import java.util.logging.Level;
import com.hypixel.hytale.logger.HytaleLogger;
import java.io.PrintStream;

public class LoggerPrintStream extends PrintStream
{
    private final HytaleLogger logger;
    private final Level level;
    private final ByteArrayOutputStream bufferedOutput;
    private int last;
    
    public LoggerPrintStream(final HytaleLogger logger, final Level level) {
        super(new ByteArrayOutputStream());
        this.logger = logger;
        this.level = level;
        this.bufferedOutput = (ByteArrayOutputStream)super.out;
        this.last = -1;
    }
    
    @Override
    public void write(final int b) {
        if (this.last == 13 && b == 10) {
            this.last = -1;
        }
        else {
            if (b != 10 && b != 13) {
                super.write(b);
            }
            else {
                try {
                    this.logger.at(this.level).log(this.bufferedOutput.toString());
                }
                finally {
                    this.bufferedOutput.reset();
                }
            }
            this.last = b;
        }
    }
    
    @Override
    public void write(final byte[] buf, final int off, final int len) {
        if (len < 0) {
            throw new ArrayIndexOutOfBoundsException(len);
        }
        for (int i = 0; i < len; ++i) {
            this.write(buf[off + i]);
        }
    }
    
    public HytaleLogger getLogger() {
        return this.logger;
    }
    
    public Level getLevel() {
        return this.level;
    }
}
