import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
class ReadSyncLog{
/* * Record types * */
/* Sync */
private static final byte CHANGE_VIEW = 0x01;
private static final byte CHANGE_VALUE = 0x02;
private static final byte SNAPSHOT = 0x03;
/* Async */
private static final byte DECIDED = 0x21;
public static void main (String[]args) throws Exception{
File file = new File(args[0]);
DataInputStream stream = new DataInputStream(new FileInputStream(file));
while (true) {
int type = stream.read();
if (type == -1) {
break;
}
int id = stream.readInt();
switch (type) {
case CHANGE_VIEW: {
int view = stream.readInt();
System.out.println(String.format("%8s %5d %3d", "view", id, view));
break;
}
case CHANGE_VALUE: {
int view = stream.readInt();
int length = stream.readInt();
byte[] value;
if (length == -1) {
value = null;
} else {
value = new byte[length];
stream.readFully(value);
}
System.out.println(String.format("%8s %5d %3d", "value", id, length));
break;
}
case DECIDED: {
System.out.println(String.format("%8s %5d", "decided", id));
break;
}
case SNAPSHOT: {
System.out.println("== snashot == (" + id + ")");
break;
}
default:
assert false : "Unrecognized log record type";
}
}
stream.close();
}}