package dslog; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.lang.UnsupportedOperationException; import java.time.Instant; class DseventsReader implements Closeable { private final InputStream reader; public final int version; public final Instant startTime; public DseventsReader(InputStream reader) throws IOException { this.reader = reader; this.version = Read.i32(reader); switch (this.version) { case 0: throw new UnsupportedOperationException("TODO: DSEVENTS v0 support"); case 1: case 2: case 3: // 2016-now this.startTime = Read.LVTimestamp(reader); break; default: throw new UnsupportedOperationException("DSEVENTS file version ("+this.version+") newer than log reader (3)"); } } public static class Event { public Instant time; public String message; } public Event readEvent() throws IOException{ switch (version) { case 0: throw new UnsupportedOperationException("TODO: DSEVENTS v0 support"); case 1: case 2: case 3: return new Event() {{ time = Read.LVTimestamp(reader); message = Read.LVString(reader); }}; default: throw new UnsupportedOperationException("DSEVENTS file version newer than log reader"); } } public void close() throws IOException { reader.close(); } }