package uk.co.mmscomputing.util.log;
import java.io.*;
import java.util.*;
import java.text.*;
public class LogBookStream extends OutputStream{
/*
write
input: byte 0: debug level dl
byte 1: '\b'
byte 2..d: date'\t'
byte d..n: text interpreted as level dl
byte n+1: '\b'
*/
private LogStream ls;
private LogBook lb;
private boolean eol,bs;
private int level;
private ByteArrayOutputStream out;
public LogBookStream(LogBook log){
ls=new LogStream(this);
lb=log;
eol=true;bs=false;
level=0;
out=new ByteArrayOutputStream();
}
public void write(int b)throws IOException{
try{
if(eol){
eol=false;
bs=true; // expect '\b'
level=b-'0';
return;
}
if(bs){ // ASSERT(b=='\b');
bs=false;
return;
}
if(b=='\b'){
eol=true;bs=false;
String s=new String(out.toByteArray());
lb.write(level,s);
out.reset();
return;
}
out.write(b);
}catch(Exception e){
}catch(Error e){
}
}
public void redirectSystemOut(){ls.redirectSystemOut();}
public void redirectSystemErr(){ls.redirectSystemErr();}
}